• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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.

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

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