我对esp8266-12F中的WiFi.begin()有一个问题。
我要将ESP8266连接到loop()中的特定接入点,而不是setup()中。
我想如果一个特定的AP是可用的,ESP8266会连接到它。在下面的代码中,我假设连接到"abc“AP并打开一个发光二极管,如果没有连接,它就会关闭发光二极管,但WiFi.begin("abc", "123456789");不工作。
在这种情况下我必须做什么?
setup(){
}
loop(){
if (WiFi.status() != WL_CONNECTED){
WiFi.disconnect();
WiFi.mode(WIFI_STA);
WiFi.begin("abc", "123456789");
digitalWrite(5, HIGH);
} else {
digitalWrite(5, LOW);
}
}发布于 2020-02-13 20:41:50
我会使用在setup()中建立WiFi连接的标准代码,并根据WiFi.status()将loop()中的led设置为高/低。重新连接应自动处理...
发布于 2020-02-14 07:28:11
如果您目前没有连接到任何AP,则添加WiFi-disconnect()没有意义。只需在设置上连接到AP,并将if (WiFi.status() != WL_CONNECTED)留在loop()上。ESP在可用时将自身重新连接到AP。
setup(){
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
WiFi.setAutoConnect(true);
Serial.print("Connecting to ");
Serial.print(ssid);
int attempt = 0;
while(WiFi.status() != WL_CONNECTED && attempt<150){ //Connecting to Wi-Fi
delay(100);
Serial.print(".");
attempt++;
}
if(WiFi.status() == WL_CONNECTED){
Serial.println("");
Serial.println("WiFi Connected!");
Serial.print("Local IP: ");
Serial.println(WiFi.localIP());
}
if(attempt == 150){
Serial.println("Failed to connect to WiFi...");
}
}
loop(){
if(WiFi.status() != WL_CONNECTED){
digitalWrite(5,HIGH);
}else{
digitalWrite(5,LOW);
}
}但是出于对良好代码优化的喜爱,使用一个标志来防止digitalWrite每秒发生数百次
https://stackoverflow.com/questions/60118789
复制相似问题