0
私はesp8266でArduinoスケッチをしています。クライアントがesp8266でホストされているWiFiに接続するたびに、内蔵LEDを数秒間点灯させたい。イベントはうまく起動していますが、delay()
は何もしません。そのハンドラ内のすべてのログメッセージが一度に表示され、LEDが1回だけ点滅します。イベントハンドラで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()'にコードを追加するだけで解決しました。私はまだ含まれているコードがうまくいかなかった理由を知りたいと思っています。 –