aboutsummaryrefslogtreecommitdiff
path: root/libraries/EEPROM/examples/eeprom_put/eeprom_put.ino
blob: 186cf95bdca06843a01662b8642c922020b381d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/***
    eeprom_put example.
    
    This shows how to use the EEPROM.put() method.
    Also, this sketch will pre-set the EEPROM data for the 
    example sketch eeprom_get.
    
    Note, unlike the single byte version EEPROM.write(),
    the put method will use update semantics. As in a byte
    will only be written to the EEPROM if the data is actually
    different.

    Written by Christopher Andrews 2015
    Released under MIT licence.    
***/

#include <EEPROM.h>

struct MyObject{
  float field1;
  byte field2;
  char name[10];
};

void setup(){

  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  float f = 123.456f;  //Variable to store in EEPROM.
  int eeAddress = 0;   //Location we want the data to be put.
  
  
  //One simple call, with the address first and the object second.
  EEPROM.put( eeAddress, f );
  
  Serial.println("Written float data type!");
  
  /** Put is designed for use with custom structures also. **/
  
  //Data to store.
  MyObject customVar = {
    3.14f,
    65,
    "Working!"
  };

  eeAddress += sizeof(float); //Move address to the next byte after float 'f'.
  
  EEPROM.put( eeAddress, customVar );
  Serial.print( "Written custom data type! \n\nView the example sketch eeprom_get to see how you can retrieve the values!" );
}

void loop(){ /* Empty loop */ }