UksusoFF
New member
Всем привет!
Подскажите чяднт. Купил себе на пробу WeMos D1 R2 v2.1.0.
Загрузил в него несколько раз через Arduino IDE тестовые скетчи - все ок.
Начал разбираться что можно делать с кнопкой. Залил в него примерно следующее:
Подключил кнопку к D4 и GND. Нажимаю кнопку - загорается диод. Arduino IDE видит порт для обновления по OTA.
Казалось бы все нормально. Но что-то правлю в этом скетче, заливаю - ничего не происходит.
Заливаю пример моргания светодиодом - он моргает. Но при этом все равно горит при нажатии на кнопку, подключается к WiFi и видит OTA.
Заливаю пустой скетч - моргать перестает. Но опять же вся логика из первого скетча все равно работает.
Как так может быть? Вроде бы при заливке нового скетча должен затираться старый?
Подскажите чяднт. Купил себе на пробу WeMos D1 R2 v2.1.0.
Загрузил в него несколько раз через Arduino IDE тестовые скетчи - все ок.
Начал разбираться что можно делать с кнопкой. Залил в него примерно следующее:
Код:
#include <Bounce2.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
const char* ssid = "xxx";
const char* password = "xxx";
const int doorbellPin = D4;
WiFiClient client;
Bounce b = Bounce();
void setup() {
pinMode(BUILTIN_LED, OUTPUT);
digitalWrite(BUILTIN_LED, 1);
pinMode(doorbellPin, INPUT);
digitalWrite(doorbellPin, HIGH);
b.attach(doorbellPin);
b.interval(15000);
Serial.begin(921600);
Serial.println("Booting");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}
// Port defaults to 8266
// ArduinoOTA.setPort(8266);
// Hostname defaults to esp8266-[ChipID]
// ArduinoOTA.setHostname("myesp8266");
// No authentication by default
// ArduinoOTA.setPassword((const char *)"123");
ArduinoOTA.onStart([]() {
Serial.println("Start");
});
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
else if (error == OTA_END_ERROR) Serial.println("End Failed");
});
ArduinoOTA.begin();
}
void loop() {
ArduinoOTA.handle();
if (b.update() && b.read() == 0) {
digitalWrite(BUILTIN_LED, HIGH);
} else {
digitalWrite(BUILTIN_LED, LOW);
}
}
Казалось бы все нормально. Но что-то правлю в этом скетче, заливаю - ничего не происходит.
Заливаю пример моргания светодиодом - он моргает. Но при этом все равно горит при нажатии на кнопку, подключается к WiFi и видит OTA.
Заливаю пустой скетч - моргать перестает. Но опять же вся логика из первого скетча все равно работает.
Как так может быть? Вроде бы при заливке нового скетча должен затираться старый?
Последнее редактирование: