【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程) 
   实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340 
   实验项目之十三:使用 Web 服务器的 ESP8266 LED 控制 
 
实验开源代码 
 
 
			
			
			- /*
 -   【花雕学编程】239种传感器执行器系列实验(资料代码+仿真编程+图形编程)
 -    实验二百四十六:ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340
 -    实验项目之十三:使用 Web 服务器的 ESP8266 LED 控制
 - */
 - 
 - #include <ESP8266WiFi.h> // 包含ESP8266WiFi库,用于WiFi连接
 - #include <ESP8266WebServer.h> // 包含ESP8266WebServer库,用于创建Web服务器
 - 
 - #define output2  2
 - #define output0  0
 - 
 - // 定义AP模式的SSID和密码
 - const char* ssid = "ESP8266_AP"; // 这是ESP8266将广播的SSID
 - const char* password = "12345678"; // 密码至少应为8个字符
 - 
 - // 创建全局变量
 - String http;
 - String output2State = "off";
 - String output0State = "off";
 - 
 - // 定义服务端和客户端
 - WiFiServer server(80); // 创建一个WiFiServer对象,监听80端口
 - WiFiClient client; // 创建一个WiFiClient对象
 - 
 - void setup() {
 -   Serial.begin(9600); // 初始化串口通信,波特率为9600
 -   Serial.println(" ");
 -   Serial.println(" ");
 -   pinMode(2, OUTPUT); // 设置GPIO 2为输出模式
 -   pinMode(0, OUTPUT); // 设置GPIO 0为输出模式
 -   digitalWrite(2, LOW); // 初始化GPIO 2为低电平
 -   digitalWrite(0, LOW); // 初始化GPIO 0为低电平
 -   Serial.print("Connecting to ");
 -   Serial.println(ssid);
 - 
 -   // 创建ESP8266接入点
 -   WiFi.softAP(ssid, password);
 - 
 -   Serial.println("");
 -   Serial.println("WiFi AP is now running");
 -   Serial.println("IP address: ");
 -   Serial.println(WiFi.softAPIP());
 - 
 -   // 启动ESP8266服务器
 -   server.begin();
 - }
 - 
 - void loop() {
 -   client = server.available(); // 检查是否有新的客户端尝试连接到服务器
 -   if (client) {
 -     Serial.println("New Client.");
 -     String clientData = "";
 -     while (client.connected()) { // 等待客户端完成HTTP请求的发送
 -       if (client.available()) { // 如果有数据
 -         char c = client.read(); // 读取一个字符
 -         http += c; // 解析它
 -         Serial.write(c);
 -         if (c == '\n') { // 如果字符是换行符
 -           // 表示客户端HTTP请求结束
 -           if (clientData.length() == 0) { // 清空clientData
 -             sendResponse(); // 执行必要操作
 -             updateLED();
 -             updateWebpage();
 -             break;
 -           } else {
 -             clientData = ""; // 清空clientData
 -           }
 -         } else if (c != '\r') { // 如果字符不是回车符
 -           clientData += c; // 将字符存储到clientData变量中
 -         }
 -       }
 -     }
 -     http = "";
 -     client.stop(); // 断开客户端连接
 -     Serial.println("Client disconnected.");
 -     Serial.println("");
 -   }
 - }
 - 
 - void sendResponse() {
 -   // 发送HTTP响应头
 -   client.println("HTTP/1.1 200 OK");
 -   client.println("Content-type:text/html");
 -   client.println("Connection: close");
 -   client.println();
 - }
 - 
 - void updateWebpage() {
 -   // 发送整个HTML页面
 -   client.println("<!DOCTYPE html><html>");
 -   client.println("<head>");
 -   client.println("<title>LED Status</title>");
 -   client.println("</head>");
 - 
 -   client.println("<head>");
 -   client.println("<meta name="viewport" content="width=device-width, initial-scale=1">");
 -   client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
 -   client.println("</style></head>");
 - 
 -   // 网页标题
 -   client.println("<body><h1>ESP Web Server!</h1>");
 - 
 -   // 显示蓝色LED的按钮
 -   client.println("<p>1. GPIO 2 is " + output2State + "</p>");
 -   if (output2State == "off") {
 -     client.println("<p><a href="/2/on"><button>Turn ON</button></a></p>");
 -   } else {
 -     client.println("<p><a href="/2/off"><button>Turn OFF</button></a></p>");
 -   }
 - 
 -   client.print("<hr>");
 - 
 -   // 显示绿色LED的按钮
 -   client.println("<p>2. GPIO 0 is " + output0State + "</p>");
 -   if (output0State == "off") {
 -     client.println("<p><a href="/0/on"><button>Turn ON</button></a></p>");
 -   } else {
 -     client.println("<p><a href="/0/off"><button>Turn OFF</button></a></p>");
 -   }
 - 
 -   client.println("</body></html>");
 -   client.println();
 - }
 - 
 - void updateLED() {
 -   if (http.indexOf("GET /2/on") >= 0) {
 -     Serial.println("GPIO 2 LED on");
 -     output2State = "on";
 -     digitalWrite(2, HIGH);
 -   } else if (http.indexOf("GET /2/off") >= 0) {
 -     Serial.println("GPIO 2 LED off");
 -     output2State = "off";
 -     digitalWrite(2, LOW);
 -   } else if (http.indexOf("GET /0/on") >= 0) {
 -     Serial.println("GPIO 0 LED on");
 -     output0State = "on";
 -     digitalWrite(0, HIGH);
 -   } else if (http.indexOf("GET /0/off") >= 0) {
 -     Serial.println("GPIO 0 off");
 -     output0State = "off";
 -     digitalWrite(0, LOW);
 -   }
 - }
 
  复制代码
  
 
 |