Advertisement
Rhavecilla

Struc Data to and from EEPROM

Jul 22nd, 2023 (edited)
1,121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | Source Code | 0 0
  1. /*  PROGRAM ID: 5-ChannelsPowerControl.ino
  2.  *  PROGRAMMER: Rolando Avecilla
  3.  *  DATE      :
  4.  *  DONE      :
  5.  *  OBJECTIVE :
  6.  *  TARGET    : Teensy 3.6
  7.  *  NOTE      :
  8.  *
  9.  */
  10.  
  11.  
  12. //===============================================================//
  13. // Load libraries.                                               //
  14. //===============================================================//
  15. #include <EEPROM.h>
  16.  
  17.  
  18. //===============================================================//
  19. // Global variables and constant.                                //
  20. //===============================================================//
  21.  
  22. // Define struct
  23. struct structData {
  24.   int intVar;
  25.   float floatVar;
  26.   bool boolVar;
  27. };
  28.  
  29. void setup() {
  30.   Serial.begin(115200);
  31.  
  32.   // Define and then initialize struct instance.
  33.   structData forSAving;
  34.   forSAving.intVar = 42;
  35.   forSAving.floatVar = 3.14;
  36.   forSAving.boolVar = true;
  37.  
  38.   // Save the struct to EEPROM.
  39.   saveToEEPROM(forSAving);
  40.  
  41.   delay(3000);
  42.  
  43.   // Retrieve the struct from EEPROM.
  44.   structData forRetrieving;
  45.   retrieveFromEEPROM(forRetrieving);  
  46.  
  47.   Serial.println(forRetrieving.intVar);
  48.   Serial.println(forRetrieving.floatVar);
  49.   Serial.println(forRetrieving.boolVar);
  50.  
  51.   Serial.println("Setup ends.");
  52. }
  53.  
  54. void loop() {
  55.   // do nothing.
  56. }
  57.  
  58. // Function to store data in EEPROM.
  59. void saveToEEPROM(const structData& data) {
  60.   // Calculate the starting EEPROM address for your data.
  61.   int address = 0;
  62.  
  63.   // Write the data to EEPROM byte by byte.
  64.   byte* pData = (byte*)&data;
  65.   for (unsigned int i = 0; i < sizeof(data); i++) {
  66.     EEPROM.write(address + i, pData[i]);
  67.     delay(100);
  68.   }
  69. }
  70.  
  71. // Function to retrieve the struct from EEPROM.
  72. void retrieveFromEEPROM(structData& data) {
  73.   // Calculate the starting EEPROM address for your data.
  74.   int address = 0;
  75.  
  76.   // Read the data from EEPROM byte by byte.
  77.   byte* pData = (byte*)&data;
  78.   for (unsigned int i = 0; i < sizeof(data); i++) {
  79.     pData[i] = EEPROM.read(address + i);
  80.   }
  81. }
  82.  
  83.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement