以下是一个使用 Arduino 为 ESP8266 编写的一键配网并保存,以及进行 WiFi 搜索的代码示例: ```cpp #include <ESP8266WiFi.h> // 存储 WiFi 配置信息的变量 String ssid; String password; // 配网成功的标志 bool configured = false; // 配网按钮引脚 const int configButtonPin = D2; void setup() { Serial.begin(115200); // 初始化按钮引脚为输入 pinMode(configButtonPin, INPUT_PULLUP); // 尝试从 EEPROM 中读取之前保存的 WiFi 配置 WiFi.begin(); if (WiFi.waitForConnectResult() == WL_CONNECTED) { Serial.println("已使用保存的配置连接到 WiFi"); configured = true; } else { Serial.println("未找到保存的配置或连接失败,等待配网"); } } void loop() { // 检测配网按钮是否按下 if (digitalRead(configButtonPin) == LOW) { Serial.println("进入配网模式"); WiFi.mode(WIFI_STA); WiFi.beginSmartConfig(); while (!WiFi.smartConfigDone()) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("配网成功"); // 获取并保存 WiFi 配置 ssid = WiFi.SSID(); password = WiFi.psk(); configured = true; WiFi.saveCredentials(); } // 如果已配网,尝试连接 WiFi if (configured) { if (WiFi.status()!= WL_CONNECTED) { WiFi.begin(ssid.c_str(), password.c_str()); while (WiFi.status()!= WL_CONNECTED) { delay(500); Serial.print("."); } } Serial.println("已连接到 WiFi: " + WiFi.SSID()); } delay(1000); } ``` 额外需要注意的逻辑点: 1. 配网按钮的消抖处理,以避免误触发。 2. 确保 EEPROM 存储和读取 WiFi 配置的可靠性。 3. 处理配网过程中的超时情况。 [2024-11-30 17:19:31 | AI写代码神器 | 527点数解答]