Нет. Размер зависит от типа (ТИПА, Карл) данных. См. таблицу выше
Готовлюсь на старт - встречать буду с внуками в Краснодаре, скоро выезжаю туда ))
Посмотрите я правильно рассчитал этот индекс для записи данных.
int i0= 100;
int ddd0=101;
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#include <EEPROM.h>
int indexI=0;
int N=indexI+sizeof(i0);
void Read0() {
EEPROM.get(N*0, i0);
Serial.print("i0:"+String(i0));
}
void Read1() {
EEPROM.get((N*1), ddd0);
Serial.print("ddd0: "+String(ddd0));
}
void Save0() {
EEPROM.put(N*0, String(i0));
Serial.print(i0);
}
void Save1() {
EEPROM.put(N*1, String(ddd0));
Serial.print(String(ddd0));
}
void setup() {
Serial.begin(9600);
Save0();
Save1();
Read0();
Read1();
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print(String(i0)+"/"+String(ddd0));
Serial.print(String(i0)+"/"+String(ddd0)+" ");
}
void loop() {
// put your main code here, to run repeatedly:
}
Самое тупое, что можно придумать - вычислять индекс ячейки в процессе выполнения программы ![]()
Вот так нельзя?
int indexI=0;
int index2=indexI+sizeof(i0);
...................................
EEPROM.get(index2 ddd0);
Можете дать код целебный со всеми исправлениями чтобы там можно было по полной программе.Спасибо.
Нет. Это вам домашнее задание на каникулы. Дерзайте ))
Проще воспользоваться ИИ, он сгенерирует вам код, просто грамотно пишите промпты.
На кон поставлена судьба человечества.
Все получилось спасибо Вам огромное!
#include <EEPROM.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int base = 0;
int i0 = 100;
int i1 = 101;
int i2 = 102;
void saveInt(int index, int value) {
int addr = base + index * sizeof(int);
EEPROM.put(addr, value);
}
int readInt(int index) {
int val;
int addr = base + index * sizeof(int);
EEPROM.get(addr, val);
return val;
}
void setup() {
Serial.begin(9600);
saveInt(0, i0);
saveInt(1, i1);
saveInt(2, i2);
Serial.println(readInt(0));
Serial.println(readInt(1));
Serial.println(readInt(2));
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print(String(readInt(0))+"/"+String(readInt(1))+"/"+String(readInt(2)));
}
void loop() {}
А теперь представьте себе, что у вас десяток/другой параметров в EEPROM ![]()
Если ты работаешь с отдельными переменными в ЕЕПРОМ, лучше пользоваться стандартными функциями из avr libc, типа eeprom_read_word() /_write_word(), через EEMEM макрос. И тогда не нужно ничего высчитывать.
Всем, спасибо!
uint16_t EEMEM em;
uint16_t m = eeprom_read_word(&em);
eeprom_write_word(&em, m);
Учись искать.
Может, лыжи виноваты?
Вот Вам всем нечем заняться !!! Отправьте ТС учиться … и всё …
34 сообщения из блохи …
Ну, как же, тут, панимаешь,
А Вы прям …
1 байт вмещает 256 различных значений.
2 байта - 256*256 различных значений. Сюда попадают значения 0…65536
4 байта это 256 x 256 x 256 x 256 = чуть больше 4 миллиардов.
Если вы не хотите думать и разбираться ПЕРЕД тем, как писать, тогда используйте 4-х байтовые записи в EEPROM для всех чисел
если модератор топик не потрет, мы её еще и подкуем, но в процессе есть шанс пересраться
вот с этим
рановато ковать
0…65535 не надо обманывать.)
2^16?