以下是一个简单的例子代码,演示如何使用手机应用或网页控制Arduino上的灯光开关:
#include <ESP8266WiFi.h>
// WiFi网络信息
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
// 服务器信息
WiFiServer server(80);
// LED灯引脚
const int ledPin = 13;
bool ledState = false;
void setup() {
// 初始化串口
Serial.begin(115200);
// 连接WiFi网络
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
// 创建服务器
server.begin();
// 设置LED灯引脚为输出模式
pinMode(ledPin, OUTPUT);
// 初始状态为关闭
digitalWrite(ledPin, LOW);
// 打印IP地址
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// 等待客户端连接
WiFiClient client = server.available();
if (client) {
Serial.println("New client connected!");
// 读取客户端请求
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// 解析请求
if (request.indexOf("/LED=ON") != -1) {
ledState = true;
digitalWrite(ledPin, HIGH);
} else if (request.indexOf("/LED=OFF") != -1) {
ledState = false;
digitalWrite(ledPin, LOW);
}
// 返回响应
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<h1>Arduino LED Control</h1>");
// 根据灯的状态显示按钮状态
if (ledState) {
client.println("<p>LED is ON</p>");
} else {
client.println("<p>LED is OFF</p>");
}
// 显示控制按钮
client.println("<p><a href=\"/LED=ON\"><button>ON</button></a></p>");
client.println("<p><a href=\"/LED=OFF\"><button>OFF</button></a></p>");
client.println("</html>");
delay(10);
client.stop();
Serial.println("Client disconnected!");
}
}
请注意,这只是一个简单的例子,您可以根据自己的需求和项目进行修改和扩展。