首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ESP8266的loop()中连接到AP

如何在ESP8266的loop()中连接到AP
EN

Stack Overflow用户
提问于 2020-02-08 02:00:44
回答 2查看 769关注 0票数 0

我对esp8266-12F中的WiFi.begin()有一个问题。

我要将ESP8266连接到loop()中的特定接入点,而不是setup()中。

我想如果一个特定的AP是可用的,ESP8266会连接到它。在下面的代码中,我假设连接到"abc“AP并打开一个发光二极管,如果没有连接,它就会关闭发光二极管,但WiFi.begin("abc", "123456789");不工作。

在这种情况下我必须做什么?

代码语言:javascript
复制
setup(){

}

loop(){

    if (WiFi.status() != WL_CONNECTED){
        WiFi.disconnect();
        WiFi.mode(WIFI_STA);
        WiFi.begin("abc", "123456789");
        digitalWrite(5, HIGH);
    } else {
        digitalWrite(5, LOW);
    }

}
EN

回答 2

Stack Overflow用户

发布于 2020-02-13 20:41:50

我会使用在setup()中建立WiFi连接的标准代码,并根据WiFi.status()loop()中的led设置为高/低。重新连接应自动处理...

票数 0
EN

Stack Overflow用户

发布于 2020-02-14 07:28:11

如果您目前没有连接到任何AP,则添加WiFi-disconnect()没有意义。只需在设置上连接到AP,并将if (WiFi.status() != WL_CONNECTED)留在loop()上。ESP在可用时将自身重新连接到AP。

代码语言:javascript
复制
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每秒发生数百次

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60118789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档