0
내 esp8266에 Arduino 스케치가 있습니다. 클라이언트가 esp8266에서 호스팅되는 wifi에 연결할 때마다 내장 된 LED를 몇 초 동안 켜고 싶습니다. 이벤트는 정상적으로 작동하지만, delay()
은 아무 것도하지 않습니다. 핸들러의 모든 로그 메시지가 한꺼번에 표시되며 LED가 한 번 깜박입니다.delay()가 이벤트 처리기에서 사용될 때 전혀 지연되지 않는 것 같습니다.
delay()
setup()
전화는 정상적으로 작동합니다.
#include <ESP8266WiFi.h>
const char *ssid = "button";
const char *password = "buttonpassword";
void onWiFiEvent(WiFiEvent_t event) {
digitalWrite(LED_BUILTIN, LOW);
Serial.println("led on");
delay(5000);
Serial.println("delay over");
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("led off");
}
void setup() {
Serial.begin(115200);
Serial.println();
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("setup before delay");
delay(5000);
Serial.println("setup after delay");
Serial.println("Setting up AP");
WiFi.softAP(ssid, password);
WiFi.onEvent(onWiFiEvent, WIFI_EVENT_SOFTAPMODE_STACONNECTED);
Serial.println("AP ready");
}
void loop() {
}
나는 핸들러에서 LED를 켜고, 시간을 기록하고, 지연이 지났을 때 루프를 끄기 위해 'loop()'에 코드를 추가함으로써 이것을 해결했다. 그래도 포함 된 코드가 왜 작동하지 않는지 알고 싶습니다. –