-->
Page 1 of 2

NodeMcu v1.0 (ESP8266 12E) store/read a value from EEPROM

PostPosted: Mon May 22, 2017 2:00 pm
by SurtrTech
Hello, I want to store a value (int) of four numbers like (int a=1111) in the NodeMcu v1.0 EEPROM then when I turn off and on again the board the int i will stay equal to 1111.
I tried this code on my Arduino UNO board and it works fine, to store:
Code: Select all#include <EEPROM.h>

void setup() {

  Serial.begin(9600);
 
  int a=1111;
  int eeAddress = 0;

  EEPROM.put(eeAddress, a);

  eeAddress += sizeof(int);

  EEPROM.put(eeAddress, a);
  Serial.print("Written");
}

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


And this one to read the data when I unplug and plug the board again

Code: Select all#include <EEPROM.h>

void setup() {

  int a;
  int eeAddress = 0;

  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  EEPROM.get(eeAddress, a);
 
  Serial.println(a);

}


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


This works fine on my Arduino Uno but when I try it on my NodeMcu v1.0 board, when I want to get the data I always get on serial monitor a strange number like "-17829890" whatever the number I store before

Re: NodeMcu v1.0 (ESP8266 12E) store/read a value from EEPRO

PostPosted: Mon May 22, 2017 3:04 pm
by martinayotte
You need in both code a "EEPROM.begin(512);", and also "EEPROM.commit();" in the writer after the put()

Re: NodeMcu v1.0 (ESP8266 12E) store/read a value from EEPRO

PostPosted: Mon May 22, 2017 3:32 pm
by SurtrTech
martinayotte wrote:You need in both code a "EEPROM.begin(512);", and also "EEPROM.commit();" in the writer after the put()


Thanks a lot it works fine now, I've seen you mentionned to another one to add the "EEPROM.begin(512)" I've tried it it didn't work it seems I forgot the commit() function.
Now It's okay thanks.

Re: NodeMcu v1.0 (ESP8266 12E) store/read a value from EEPRO

PostPosted: Mon Sep 11, 2017 11:43 am
by SOELLICHA
Hello,
I am trying the same skecth but I receive the following error:
Not used: C:\Program Files\Arduino\libraries\EEPROM_NodeMcu
exit status 1
no matching function for call to 'EEPROMClass::begin(int)'

the sketch is the following
/*
* EEPROM Write
*
* Stores values read from analog input 0 into the EEPROM.
* These values will stay in the EEPROM when the board is
* turned off and may be retrieved later by another sketch.
*/

#include <EEPROM.h>

// the current address in the EEPROM (i.e. which byte
// we're going to write to next)
int addr = 0;

void setup()
{
EEPROM.begin(512);
}

void loop()
{
// need to divide by 4 because analog inputs range from
// 0 to 1023 and each byte of the EEPROM can only hold a
// value from 0 to 255.
int val = analogRead(A0) / 4;

// write the value to the appropriate byte of the EEPROM.
// these values will remain there when the board is
// turned off.
EEPROM.write(addr, val);

// advance to the next address. there are 512 bytes in
// the EEPROM, so go back to 0 when we hit 512.
// save all changes to the flash.
addr = addr + 1;
if (addr == 512)
{
addr = 0;
EEPROM.commit();
}

delay(100);
}



Is there another zip library I can download in order to work on the NodeMcu eeprom?

Thank you
Best Regards
Andreas Achilleos