aboutsummaryrefslogtreecommitdiff
path: root/libraries/EEPROM/examples/eeprom_update
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/EEPROM/examples/eeprom_update')
-rw-r--r--libraries/EEPROM/examples/eeprom_update/eeprom_update.ino52
1 files changed, 52 insertions, 0 deletions
diff --git a/libraries/EEPROM/examples/eeprom_update/eeprom_update.ino b/libraries/EEPROM/examples/eeprom_update/eeprom_update.ino
new file mode 100644
index 0000000..e0e18d8
--- /dev/null
+++ b/libraries/EEPROM/examples/eeprom_update/eeprom_update.ino
@@ -0,0 +1,52 @@
+/***
+ EEPROM Update method
+
+ 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.
+
+ If a value has not changed in the EEPROM, it is not overwritten
+ which would reduce the life span of the EEPROM unnecessarily.
+
+ Released using MIT licence.
+ ***/
+
+#include <EEPROM.h>
+
+/** the current address in the EEPROM (i.e. which byte we're going to write to next) **/
+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;
+
+ /***
+ Update the particular EEPROM cell.
+ these values will remain there when the board is
+ turned off.
+ ***/
+ EEPROM.update(addr, val);
+
+ /***
+ The function EEPROM.update(addr, val) is equivalent to the following:
+
+ if( EEPROM.read(addr) != val ){
+ EEPROM.write(addr, val);
+ }
+ ***/
+
+
+ /** advance to the next address. there are 512 bytes in the EEPROM, so go back to 0 when we hit 512. **/
+ addr = addr + 1;
+ if (addr == 512)
+ addr = 0;
+
+ delay(100);
+}