|
- /*
- * EEPROM Write
- *
- * Stores values read from analog input 0 into the EEPROM.
- * These values will stay in the EEPROM when the board is
- * turned off and may be retrieved later by another sketch.
- */
-
- #include <EEPROM.h>
-
- /** the current address in the EEPROM (i.e. which byte we're going to write to next) **/
- unsigned int addr = 0;
-
- void setup(){ /** Empty setup. **/}
-
- 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.
- ***/
-
- EEPROM.write(addr, val);
-
- /***
- 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.
- - Teensy 3.0 & 3.1: 2kb EEPROM storage.
- - Teensy-LC: 128b EEPROM storage.
- - Teensy 2.0: 1kb EEPROM storage.
- - Teensy++ 2.0: 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);
- }
|