Home Page | Language Reference (extended) | SD Reference | Libraries | Comparison | Changes

EEPROM

put()

Description

Write any data type or object to the EEPROM.

Syntax

EEPROM.put(address, data)

Parameters

address: the location to write to, starting from 0 (int)

data: the data to write, can be a primitive type (eg. float) or a custom struct

Returns

A reference to the data passed in

Note

This function uses EEPROM.update() to perform the write, so does not rewrites the value if it didn't change.

Example

/***
    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 native USB port 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 */
}

See also

Reference Home

Corrections, suggestions, and new documentation should be posted to the Forum.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.