Ви не увійшли.
Сторінки 1
Добрый день!
Хотел поиграться с 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. Так что не знаю всех подводных камней. Заранее спасибо
Неактивний
Мне кажется вы не только с епром работаете первый раз. Начальное значение i с потолка берется?
Мне кажется вы не только с епром работаете первый раз. Начальное значение i с потолка берется?
Где именно ?)
Неактивний
Везде
Если вы про циклы то да, переменная "i" во всех циклах берется за ноль(я проверял)
Неактивний
Незнаю что и как вы там проверяли. Вот результат при явном указании начального значения 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
Спасибо!!!!! Огромное спасибо. Теперь работает правильно!
Неактивний
(если кому-то поможет то вот конечный код, чуть изменен)
#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() {
}
Неактивний
Сторінки 1