Ви не увійшли.
Сторінки 1
я використовую esp8266(esp01).
По невідомим причинам EEPROM не записується,
або записується але не читається.
допоможіть мені будь ласка.
#include <EEPROM.h>
void ICACHE_RAM_ATTR myisr();
byte val = 0;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(0, INPUT_PULLUP);
digitalWrite(LED_BUILTIN, 0);
delay(700);
digitalWrite(LED_BUILTIN, 1);
attachInterrupt ( digitalPinToInterrupt(0), myisr, RISING);
EEPROM.begin(512);
}
void loop() {
switch (val) {
case 0:
digitalWrite(LED_BUILTIN, 1);
delay(90);
digitalWrite(LED_BUILTIN, 0);
delay(10);
break;
case 1:
digitalWrite(LED_BUILTIN, 1);
delay(80);
digitalWrite(LED_BUILTIN, 0);
delay(20);
break;
case 2:
digitalWrite(LED_BUILTIN, 1);
delay(70);
digitalWrite(LED_BUILTIN, 0);
delay(30);
break;
case 3:
digitalWrite(LED_BUILTIN, 1);
delay(60);
digitalWrite(LED_BUILTIN, 0);
delay(40);
break;
case 4:
digitalWrite(LED_BUILTIN, 1);
delay(50);
digitalWrite(LED_BUILTIN, 0);
delay(50);
break;
case 5:
digitalWrite(LED_BUILTIN, 1);
delay(40);
digitalWrite(LED_BUILTIN, 0);
delay(60);
break;
case 6:
digitalWrite(LED_BUILTIN, 1);
delay(30);
digitalWrite(LED_BUILTIN, 0);
delay(70);
break;
case 7:
digitalWrite(LED_BUILTIN, 1);
delay(20);
digitalWrite(LED_BUILTIN, 0);
delay(80);
break;
case 8:
digitalWrite(LED_BUILTIN, 1);
delay(10);
digitalWrite(LED_BUILTIN, 0);
delay(90);
break;
}
val = EEPROM.read(2);
}
void myisr() {
val++;
if (val > 8) {
val = 0;
}
EEPROM.put(2, val);
EEPROM.commit();
}
Неактивний
val = EEPROM.read(2); - в основном цикле... он может и рад записать, но долбит ячейки! К тому-же чтение и запись процесс не быстрый - попробуй притормози основной цикл, а вообще читай и пиши только когда действительно нужно. убьешь память.
Сторінки 1