aboutsummaryrefslogtreecommitdiff
path: root/libraries/EEPROM/examples/eeprom_pointer
diff options
context:
space:
mode:
authorChris--A <chris@genx.biz>2015-03-17 17:17:08 +1000
committerChris--A <chris@genx.biz>2015-03-17 17:17:08 +1000
commitdd1ec9920b8fd6b445cdcc943f53333990b34428 (patch)
tree39b5eb049080a2ed61e773a537e02ec503ddef9a /libraries/EEPROM/examples/eeprom_pointer
parent46e810cf0743a7fb29d41c02c5ab6c2d9e50685b (diff)
Added additional examples to EEPROM lib
Diffstat (limited to 'libraries/EEPROM/examples/eeprom_pointer')
-rw-r--r--libraries/EEPROM/examples/eeprom_pointer/eeprom_pointer.ino74
1 files changed, 74 insertions, 0 deletions
diff --git a/libraries/EEPROM/examples/eeprom_pointer/eeprom_pointer.ino b/libraries/EEPROM/examples/eeprom_pointer/eeprom_pointer.ino
new file mode 100644
index 0000000..b56b681
--- /dev/null
+++ b/libraries/EEPROM/examples/eeprom_pointer/eeprom_pointer.ino
@@ -0,0 +1,74 @@
+/***
+ eeprom_pointer example.
+
+ This example shows how the built-in EEPtr
+ object can be used to manipulate the EEPROM
+ using standard pointer arithmetic.
+
+ Running this sketch is not necessary, this is
+ simply highlighting certain programming methods.
+
+ Written by Christopher Andrews 2015
+ Released under MIT licence.
+***/
+
+#include <EEPROM.h>
+
+void setup() {
+
+ Serial.begin(9600);
+
+ /***
+ In this example, we will iterate forward over the EEPROM,
+ starting at the 10th cell (remember indices are zero based).
+ ***/
+
+ EEPtr ptr = 9;
+
+ //Rather than hard coding a length, we can use the provided .length() function.
+
+ while( ptr < EEPROM.length() ){
+
+ Serial.print( *ptr, HEX ); //Print out hex value of the EEPROM cell pointed to by 'ptr'
+ Serial.print( ", " ); //Separate values with a comma.
+ ptr++; //Move to next cell
+ }
+
+ /***
+ In this example, we will iterate backwards over the EEPROM,
+ starting at the last cell.
+ ***/
+
+ ptr = EEPROM.length() - 1;
+
+ do{
+
+ Serial.print( *ptr, HEX );
+ Serial.print( ", " );
+
+ }while( ptr-- ); //When the pointer reaches zero the loop will end as zero is considered 'false'.
+
+
+ /***
+ And just for clarity, the loop below is an equivalent implementation
+ of the C++11 ranged for loop.
+ ***/
+
+ for( EEPtr ptr = EEPROM.begin() ; item != EEPROM.end() ; ++item ){
+ Serial.print( *ptr, HEX );
+ Serial.print( ", " );
+ }
+
+ /***
+ The actual C++11 version:
+
+ for( auto ptr : EEPROM ){
+ Serial.print( *ptr, HEX );
+ Serial.print( ", " );
+ }
+ ***/
+
+
+}
+
+void loop(){} \ No newline at end of file