diff --git a/arduino/eeprom_read_write_reset.ino b/arduino/eeprom_read_write_reset.ino new file mode 100644 index 00000000..602aa756 --- /dev/null +++ b/arduino/eeprom_read_write_reset.ino @@ -0,0 +1,70 @@ +/* + * EEPROM Write + * + * Stores values into the EEPROM. + * These values will stay in the EEPROM when the board is + * turned off and may be retrieved later by another sketch. + * + * Writes 8 values. + * + */ + +#include + +/** the current address in the EEPROM (i.e. which byte we're going to write to next) **/ +int addr = 0; + +void setup() { + // initialize serial + Serial.begin(9600); +} + +void loop() { + /*** + Need to divide by 4 because analog inputs range from + 0 to 1023 and each byte of the EEPROM can only hold a + value from 0 to 255. + ***/ + + // int val = analogRead(0) / 4; + + /*** + Write the value to the appropriate byte of the EEPROM. + these values will remain there when the board is + turned off. + ***/ + + Serial.println("\nEEPROM Write/Read test and Reset\n\n"); + for (int i=0; i < 9; i++) + { + EEPROM.write(i,i); + delay(500); + Serial.println(EEPROM.read(i)); + } + + /*** + Advance to the next address, when at the end restart at the beginning. + + Larger AVR processors have larger EEPROM sizes, E.g: + - Arduno Duemilanove: 512b EEPROM storage. + - Arduino Uno: 1kb EEPROM storage. + - Arduino Mega: 4kb EEPROM storage. + + Rather than hard-coding the length, you should use the pre-provided length function. + This will make your code portable to all AVR processors. + ***/ +// addr = addr + 1; +// if (addr == EEPROM.length()) { +// addr = 0; +// } + + /*** + As the EEPROM sizes are powers of two, wrapping (preventing overflow) of an + EEPROM address is also doable by a bitwise and of the length - 1. + + ++addr &= EEPROM.length() - 1; + ***/ + + +// delay(100); +}