• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Проблема с прошивкой WeMos D1 R2 v2.1.0

UksusoFF

New member
Всем привет!

Подскажите чяднт. Купил себе на пробу 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);
  }
}
Подключил кнопку к D4 и GND. Нажимаю кнопку - загорается диод. Arduino IDE видит порт для обновления по OTA.
Казалось бы все нормально. Но что-то правлю в этом скетче, заливаю - ничего не происходит.

Заливаю пример моргания светодиодом - он моргает. Но при этом все равно горит при нажатии на кнопку, подключается к WiFi и видит OTA.

Заливаю пустой скетч - моргать перестает. Но опять же вся логика из первого скетча все равно работает.

Как так может быть? Вроде бы при заливке нового скетча должен затираться старый?
 
Последнее редактирование:
Сверху Снизу