The purpose of this example is to show how the put and get methods provide a different behaviour than write and read, that work on single bytes. Getting different variables from EEPROM retrieve a number of bytes that is related to the variable datatype.
Step 1: What You Need?
1 x Arduino Board ( Arduino UNO used in this tutorial)
Don't have components? Don't worry. Just click the component's name.
Step 2: Build Your Circuit.
Step 3: Upload The Code.
1. Select the Arduino board type: Select Tools >> Board >> Select your correct Arduino board used.
2. Find the port number by accessing device manager on Windows. See the section Port (COM&LPT) and look for an open port named "Arduino Uno (COMxx)". If you are using a different board, you will find a name accordingly. What matters is the xx in COMxx part. In my case, it's COM3. So my port number is 3.
Select the right port: Tools >> Port >> Select the port number.
3. You can find this code in the example of Arduino IDE.
Select File >> Examples >> EEPROM >> eeprom_get
Click press the "upload" button (see the button with right arrow mark).
/***
eeprom_get example. This shows how to use the EEPROM.get() method. To pre-set the EEPROM data, run the example sketch eeprom_put.
This sketch will run without it, however, the values shown
will be shown from what ever is already on the EEPROM. This may cause the serial object to print out a large string
of garbage if there is no null character inside one of the strings
loaded. Written by Christopher Andrews 2015
Released under MIT licence.
***/ #include <EEPROM.h> void setup() { float f = 0.00f; //Variable to store data read from EEPROM.
int eeAddress = 0; //EEPROM address to start reading from Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.print("Read float from EEPROM: "); //Get the float data from the EEPROM at position 'eeAddress'
EEPROM.get(eeAddress, f);
Serial.println(f, 3); //This may print 'ovf, nan' if the data inside the EEPROM is not a valid float. /***
As get also returns a reference to 'f', you can use it inline.
E.g: Serial.print( EEPROM.get( eeAddress, f ) );
***/ /***
Get can be used with custom structures too.
I have separated this into an extra function.
***/ secondTest(); //Run the next test.
} struct MyObject {
float field1;
byte field2;
char name[10];
}; void secondTest() {
int eeAddress = sizeof(float); //Move address to the next byte after float 'f'. MyObject customVar; //Variable to store custom object read from EEPROM.
EEPROM.get(eeAddress, customVar); Serial.println("Read custom object from EEPROM: ");
Serial.println(customVar.field1);
Serial.println(customVar.field2);
Serial.println(customVar.name);
} void loop() {
/* Empty loop */
}
0 comments:
Post a Comment