NodeMCU ESP8266 12E теряет код после повторного подключения питания
Я загрузил простой код для управления 8-канальным реле путем включения и выключения отдельных реле. Когда я загружаю код, он работает правильно, код работает правильно, и реле включаются и выключаются в нужном порядке. Однако, когда я отсоединяю USB-кабель от компьютера и снова подключаю его, код больше не работает, никаких видимых действий не происходит. Стирается ли код из памяти после отключения питания?
int pins[] = {D0, D1, D2, D4, D5, D6, D7, D8};
int i;
void setup()
{
Serial.begin(115200);
for(i=0;i<8;i++)
{
pinMode(pins[i],OUTPUT);
digitalWrite(pins[i],HIGH);
}
}
void loop()
{
for(i=0;i<8;i++)
{
digitalWrite(pins[i],LOW);//Включает это реле
Serial.println(pins[i]);
//Выключаем предыдущее реле
if(i==0)
{
digitalWrite(pins[7],HIGH);
}
else
{
digitalWrite(pins[i-1],HIGH);
}
delay(700);
}
}
Моя схема:
узелMCU | Реле
D0 IN1
D1 IN2
D2 IN3
D4 IN4
D5 IN5
D6 IN6
D7 IN7
D8 IN8
Вин ВКК
ЗАЗЕМЛЕНИЕ ЗАЗЕМЛЕНИЕ
@Vikhyat Agarwal, 👍0
Обсуждение2 ответа
D3 (GPIO0) и D4 (GPIO2) должны иметь высокий уровень при запуске, чтобы пользовательская программа могла выполняться. Релейная плата, подключенная к этим контактам, предотвращает достаточное высокое напряжение на этих контактах.
Если вам нужно использовать эти контакты, попробуйте подключить к ним более мощный подтягивающий резистор. Попробуйте 330-470 Ом.
Или так, или вам потребуется добавить дополнительную схему между контактами порта и драйвером реле. Также имейте в виду, что это установит высокий уровень на вход драйвера реле и попытается включить реле. Ваши условия включения могут отличаться от ожидаемых.
Ваш код заблокирует цикл более чем на 5 секунд. Для NodeMcu я обнаружил, что если основной цикл задерживается на долгое время, могут происходить странные вещи. Таким образом, вы также можете попробовать провести рефакторинг, чтобы избавиться от цикла for и использовать простой счетчик для переключения реле в каждой итерации основного цикла. так что ваш основной цикл будет заблокирован менее чем на секунду.
- Больше не могу прошить ESP8266 (NodeMCU)
- Прошивка ATtiny85 с помощью NodeMCU?
- Узел MCU не работает правильно
- NodeMCU - Vin контакт как выход 5V?
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разве в узле MCU v3 (LoLin) нет встроенного светодиода?
- Разница между этими двумя платами NodeMCU?
Ваше использование D0 заставляет режим загрузчика запускаться при загрузке ...?, @Majenko
@Majenko D0 - это io16, @Juraj
Что ж, тогда какой бы случайный номер D они не решили присвоить GPIO 0... Почему они не могли просто пронумеровать их такими, какие они есть, вместо того, чтобы случайным образом назначать им другие номера?, @Majenko
У меня была такая же проблема, и я решил ее по следующей ссылке: https://github.com/esp8266/Arduino/issues/1074#issuecomment-258669539., @Sadegh Ghanbari