РЕШЕНО Nodemcu и eeprom

Тема в разделе "ESP8266, ESP32", создана пользователем Evgeniy2017, 26 июн 2020.

  1. Evgeniy2017

    Evgeniy2017 Нерд

    Добрый день!
    Хотел поиграться с EEPROM но, возникла проблема с чтением с eeprom.
    Код (C++):
    #include <EEPROM.h>
    //#include "ESP8266WiFi.h"
    void setup() {
      String ssid = "my_ssid";
      String pass = "my_pass";
      Serial.begin(9600);
      EEPROM.begin(512);
      delay(100);
      //WiFi.mode(WIFI_STA);
      //WiFi.disconnect();
      delay(100);
      Serial.println("EEPROM START");
      EEPROM.write(0, ssid.length());
      delay(40);
      int from = 1;
      for (int i; i < ssid.length(); i++) {
        EEPROM.write(from + i, ssid[i]);
        delay(40);
      }
      from = ssid.length() + 1;
      EEPROM.write(from, pass.length());
      for (int i; i < pass.length(); i++) {
        EEPROM.write(from + i, pass[i]);
      }
      if (EEPROM.commit()) {
        Serial.println("Succesfuly eeprom updated");
      }
      delay(500);
      Serial.println("Start reading");
        String data;
      for (byte i; i < pass.length()+ssid.length()+2; i++) {
        data += (char)EEPROM.read(i);
      }
      Serial.println(data);
      Serial.println(data.length());
      /*
        String data;
        for (byte i; i < 8; i++) {
        data += (char)EEPROM.read(i);
        }
        Serial.println(data);
        Serial.println(data.length());
      */


      Serial.println("end eeprom");

      //EEPROM.end();
    }

    void loop() {
    }
    На что получаю ответ в ком порт:
    16:09:13.706 -> ⸮txW⸮X6d⸮$⸮p⸮d⸮EEPROM START
    16:09:14.081 -> Succesfuly eeprom updated
    16:09:14.565 -> Start reading
    16:09:14.565 ->
    16:09:14.565 -> 0
    16:09:14.565 -> end eeprom
    Скажу что первый раз работаю с eeprom. Так что не знаю всех подводных камней. Заранее спасибо
     
  2. Evgeniy2017

    Evgeniy2017 Нерд

    Проблема найдена, такой код уже рабочий:
    (здесь запись идет только ssid введенной вами в переменной )
    Код (C++):
    #include <EEPROM.h>
    //#include "ESP8266WiFi.h"
    void setup() {
      String ssid = "my_ssid";
      String pass = "my_password";
      Serial.begin(9600);
      EEPROM.begin(512);
      delay(100);
      int ssid_len = ssid.length() + 1;
      int pass_len = pass.length() + 1;
      char ssid_array[ssid_len];
      char pass_array[pass_len];
      ssid.toCharArray(ssid_array, ssid_len);
      pass.toCharArray(pass_array, pass_len);
      Serial.println();
      Serial.println("SSID write....");
      for (int i=0; i < sizeof(ssid_array); i++) {
        Serial.println((char)ssid_array[i]);
        delay(100);
        EEPROM.write(i, ssid_array[i]);
        delay(100);
      }
      Serial.println("SSID writed!");
      if (EEPROM.commit()) {
        delay(500);
        Serial.println("EEPROM commited!");
      }
      delay(100);
      EEPROM.end();
      delay(500);
      EEPROM.begin(512);
      delay(500);
      for (byte i=0; i < 9; i++) {
        Serial.print((char) EEPROM.read(i));
      }
      Serial.println("End");
    }

    void loop() {
    }