Buy the components
eeprom-int-arduino.ino
#include <EEPROM.h>
int values[] = {23, 254, 255, 256, 257, -1, -2};
int addr = 0;
int arraySize = sizeof(values) / sizeof(values[0]);
void setup() {
Serial.begin(115200);
Serial.println("");
Serial.println("");
// EEPROM size is 1024 bytes on the ATmega328P
Serial.print("Arduino EEPROM length: ");
Serial.println(EEPROM.length());
// Each EEPROM element is 1 byte
Serial.print("Array length to write and read: ");
Serial.println(arraySize);
for (int index = 0; index < arraySize; index++) {
EEPROM.write(addr, values[index]);
delay(10);
Serial.print("Writing ");
Serial.print(values[index]);
Serial.print(" in address ");
Serial.println(addr);
addr++;
}
EEPROM.write(addr, "\0");
EEPROM.read(addr);
Serial.println("");
Serial.println("Begin reading back the array: ");
int currentAddr = 0;
int readInt;
while (currentAddr < arraySize) {
Serial.print("Reading ");
readInt = EEPROM.read(currentAddr);
Serial.print(readInt);
Serial.print(" in address ");
Serial.println(currentAddr);
currentAddr++;
}
}
void loop() {}
BOARD?=arduino:avr:uno
PORT?=/dev/cu.usbmodem14*
.PHONY: default lint all flash clean
default: lint all flash clean
lint:
cpplint --extensions=ino --filter=-legal/copyright *.ino
all:
arduino-cli compile --fqbn $(BOARD) ./
flash:
arduino-cli upload -p $(PORT) --fqbn $(BOARD) ./
clean:
rm -f .*.hex
rm -f .*.elf
Read and write a series of numbers in the EEPROM and in the process learn about the fact that each EEPROM element is 1 byte. Discover, how overflow numbers beyond 255 and negative numbers get stored.