#1 2020-06-26 16:37:05

Evgeniy2020
Участник
Зарегистрирован: 2020-06-26
Сообщений: 9

NodeMcu и EEPROM

Добрый день!
Хотел поиграться с EEPROM но, возникла проблема с чтением с eeprom.

#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 2020-06-26 16:48:22

г0сть
Гость

Re: NodeMcu и EEPROM

Мне кажется вы не только с епром работаете первый раз. Начальное значение i с потолка берется?

#3 2020-06-26 16:53:41

Evgeniy2020
Участник
Зарегистрирован: 2020-06-26
Сообщений: 9

Re: NodeMcu и EEPROM

г0сть пишет:

Мне кажется вы не только с епром работаете первый раз. Начальное значение i с потолка берется?

Где именно ?)

#4 2020-06-26 17:10:20

г0сть
Гость

Re: NodeMcu и EEPROM

Везде

#5 2020-06-26 17:53:27

Evgeniy2020
Участник
Зарегистрирован: 2020-06-26
Сообщений: 9

Re: NodeMcu и EEPROM

Если вы про циклы то да, переменная "i" во всех циклах берется за ноль(я проверял)

#6 2020-06-26 17:59:56

г0сть
Гость

Re: NodeMcu и EEPROM

Незнаю что и как вы там проверяли. Вот результат при явном указании начального значения i=0
17:57:17.790 -> ⸮HpI<⸮Xll⸮l 8@⸮EEPROM START
17:57:18.466 -> Succesfuly eeprom updated
17:57:18.967 -> Start reading
17:57:18.967 -> my_ssidmy_passr
17:57:19.014 -> 16
17:57:19.014 -> end eeprom

#7 2020-06-26 18:27:46

Evgeniy2020
Участник
Зарегистрирован: 2020-06-26
Сообщений: 9

Re: NodeMcu и EEPROM

Спасибо!!!!! Огромное спасибо. Теперь работает правильно!

#8 2020-06-26 18:36:15

Evgeniy2020
Участник
Зарегистрирован: 2020-06-26
Сообщений: 9

Re: NodeMcu и EEPROM

(если кому-то поможет то вот конечный код, чуть изменен)

#include <EEPROM.h>
//#include "ESP8266WiFi.h"
void setup() {
  String ssid = "your_ssid";
  String pass = "your_pass";
  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);
  for (byte i=0; i < 9; i++) {
    Serial.print((char) EEPROM.read(i));
  }
  Serial.println("End");
}

void loop() {
}

Быстрое сообщение

Введите сообщение и нажмите Отправить

Подвал раздела