Давайте запишем в память EEPROM два целых числа, а затем прочитаем их из EEPROM и выведем в последовательный порт. С числами от 0 до 255 проблем нет, они занимают как раз 1 байт памяти и с помощью функции EEPROM.write() записываются в нужную ячейку.
Если число больше, чем 255, то с помощью операторов highByte() и lowByte() его нужно делить на байты и записывать каждый байт в свою ячейку. Максимальное число при этом – 65536 (или 216).
#include <EEPROM.h> // подключаем библиотеку EEPROM
void setup() {
int smallNum = 123; // целое число от 0 до 255
EEPROM.write(0, smallNum); // запись числа в ячейку 0
int bigNum = 789; // число > 255 разбиваем на 2 байта (макс. 65536)
byte hi = highByte(bigNum); // старший байт
byte low = lowByte(bigNum); // младший байт
EEPROM.write(1, hi); // записываем в ячейку 1 старший байт
EEPROM.write(2, low); // записываем в ячейку 2 младший байт
Serial.begin(9600); // инициализация послед. порта
}
void loop() {
for (int addr=0; addr<1024; addr++) { // для всех ячеек памяти (для Arduino UNO 1024)
byte val = EEPROM.read(addr); // считываем 1 байт по адресу ячейки
Serial.print(addr); // выводим адрес в послед. порт
Serial.print("\t"); // табуляция
Serial.println(val); // выводим значение в послед. порт
}
delay(60000); // задержка 1 мин
}
Смотрите, монитор последовательного порта в ячейку 0 просто выводит число, меньшее, чем 255. В ячейках 1 и 2 хранится большое число 789. При этом ячейка 1 хранит множитель переполнения 3, а ячейка 2 – недостающее число 21 (т.е. 789 = 3×256 + 21).
Запись целых чисел в EEPROM Arduino
Чтобы заново «собрать» большое число, разобранное на байты, есть функция word():
int val = word(hi, low)
, где “hi” и “low” – это значения старшего и младшего байтов числа “val”.
Во всех остальных ячейках, которые не были нами ни разу записаны, хранятся числа 255.


