/* * 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); }