鱼C论坛

 找回密码
 立即注册
查看: 2567|回复: 0

[其他分类] ESP8266:通过网络服务将开发板引脚状态显示在网页中

[复制链接]
发表于 2021-8-13 12:31:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 划句顾 于 2021-8-13 12:33 编辑

  NodeMCU开发板上的FLASH按键可以控制D3引脚的电平。当我们没有按下改按键时,D3引脚将会保持高电平状态。当按下该按键后,D3引脚会变为低电平。

代码如下:
  1. /**********************************
  2. * Purpose: 使用NodeMCU建立基本服务器。该页面将会自动刷新并且显示NodeMCU
  3.             的D3引脚状态。NodeMCU开发板上的FLASH按键可以控制D3引脚的电平。
  4.             没有按下该按键时D3引脚将会保持高电平状态。当按下该按键后,
  5.             D3引脚会变为低电平
  6. * Author : LAOGU
  7. * Time   : 2021/8/12
  8. */
  9. #include<ESP8266WiFi.h>
  10. #include<ESP8266WiFiMulti.h>
  11. #include<ESP8266WebServer.h>

  12. #define buttonPin D3  //按钮引脚D3

  13. ESP8266WiFiMulti wifiMulti; //建立ESP8266WiFiMulti对象,对象名称是“wifiMulti”

  14. ESP8266WebServer esp8266_server(80);  //建立网络服务对象,该对象用于响应http请求。监听端口(80)

  15. bool pinState; //存储引脚状态用变量

  16. void setup()
  17. {
  18.   Serial.begin(9600); //启动串口通讯

  19.   pinMode(buttonPin,INPUT_PULLUP);  //将按键引脚设置为输入上拉模式

  20.   //通过addAP函数存储 WiFi名称   WiFi密码
  21.   wifiMulti.addAP("八嘎","123456789");
  22.   wifiMulti.addAP("胶几人","11223344");

  23.   Serial.println("Connecting...");
  24.   int i = 0;
  25.   while(wifiMulti.run()!=WL_CONNECTED)
  26.   {
  27.     delay(1000);
  28.     Serial.print(i++);
  29.     Serial.print(" ");
  30.     }

  31.    Serial.println('\n');
  32.    Serial.print("Connected to ");
  33.    Serial.println(WiFi.SSID());
  34.    Serial.print("IP address:");
  35.    Serial.println(WiFi.localIP());

  36.    esp8266_server.begin(); //启动网站服务
  37.    esp8266_server.on("/",handleRoot);
  38.    esp8266_server.onNotFound(handleNotFound);

  39.    Serial.println("HTTP esp8266_server started");  //告知用户ESP8266网络服务功能已经启动

  40. }

  41. void loop()
  42. {
  43.   esp8266_server.handleClient(); //处理http服务器访问
  44.   pinState = digitalRead(buttonPin); //获取引脚状态
  45. }

  46. void handleRoot()
  47. {
  48.   String displayPinState;  //存储按键状态的字符串变量

  49.   if(pinState == HIGH)
  50.   {
  51.     displayPinState = "Button State : HIGH";
  52.   }
  53.   else
  54.   {
  55.     displayPinState = "Button State : LOW";
  56.     }

  57.    esp8266_server.send(200,"text/plain",displayPinState);  //向浏览器发送按键状态信息
  58.   }

  59. void handleNotFound()
  60. {
  61.   esp8266_server.send(404,"text/plain","404: Not Found");
  62.   }
复制代码




                               
登录/注册后可看大图

屏幕截图(233).png

长按FLASH键并刷新页面,会发现引脚的状态变了

屏幕截图(234).png



                               
登录/注册后可看大图


以下代码将实现页面的自动刷新:
代码如下:
  1. /**********************************
  2. * Purpose: 使用NodeMCU建立基本服务器。该网页将显示引脚D3状态。同时状态会
  3.             每隔5秒钟更新一次。
  4. * Author : LAOGU
  5. * Time   : 2021/8/13
  6. */
  7. #include<ESP8266WiFi.h>
  8. #include<ESP8266WiFiMulti.h>
  9. #include<ESP8266WebServer.h>

  10. #define buttonPin D3  //按钮引脚D3

  11. ESP8266WiFiMulti wifiMulti; //建立ESP8266WiFiMulti对象,对象名称是“wifiMulti”

  12. ESP8266WebServer esp8266_server(80);  //建立网络服务对象,该对象用于响应http请求。监听端口(80)

  13. bool pinState; //存储引脚状态用变量

  14. void setup()
  15. {
  16.   Serial.begin(9600); //启动串口通讯

  17.   pinMode(buttonPin,INPUT_PULLUP);  //将按键引脚设置为输入上拉模式

  18.   //通过addAP函数存储 WiFi名称   WiFi密码
  19.   wifiMulti.addAP("八嘎","123456789");
  20.   wifiMulti.addAP("胶几人","11223344");

  21.   Serial.println("Connecting...");
  22.   int i = 0;
  23.   while(wifiMulti.run()!=WL_CONNECTED)
  24.   {
  25.     delay(1000);
  26.     Serial.print(i++);
  27.     Serial.print(" ");
  28.     }

  29.    Serial.println('\n');
  30.    Serial.print("Connected to ");
  31.    Serial.println(WiFi.SSID());
  32.    Serial.print("IP address:");
  33.    Serial.println(WiFi.localIP());

  34.    esp8266_server.begin(); //启动网站服务
  35.    esp8266_server.on("/",handleRoot);
  36.    esp8266_server.onNotFound(handleNotFound);

  37.    Serial.println("HTTP esp8266_server started");  //告知用户ESP8266网络服务功能已经启动

  38. }

  39. void loop()
  40. {
  41.   esp8266_server.handleClient(); //处理http服务器访问
  42.   pinState = digitalRead(buttonPin); //获取引脚状态
  43. }

  44. void handleRoot()
  45. {
  46.   esp8266_server.send(200,"text/html",sendHTML(pinState));  
  47.   }

  48. String sendHTML(bool buttonState)
  49. {
  50.   String htmlCode="<!DOCTYPE html><html>\n";
  51.   htmlCode += "<head><meta http-equiv='refresh' content = '5'/>\n";  //每5秒刷新一下浏览器
  52.   htmlCode += "<title>ESP8266 Button State</title>\n";
  53.   htmlCode += "<style>html{font-family: Helvetica; display: inline-block; margin: 0px auto;text-align: center;}\n";
  54.   htmlCode += "body{margin-top: 50px;}h1{color: #444444; margin:50px auto 30px;}h3{color;#444444;margin-bottom:50px;}\n";
  55.   htmlCode += "</style>\n";
  56.   htmlCode += "</head>\n";
  57.   htmlCode += "<body>\n";
  58.   htmlCode += "<h1>ESP8266 BUTTON STATE</h1>\n";

  59.   if(buttonState)
  60.   {
  61.     htmlCode += "<p>Button Status : HIGH</p>\n";
  62.     }
  63.    else
  64.   {
  65.     htmlCode += "<p>Button Status : LOW</p>\n";
  66.     }
  67.     htmlCode += "</body>\n";
  68.     htmlCode += "</html>\n";

  69.     return htmlCode;
  70.   }

  71. void handleNotFound()
  72. {
  73.   esp8266_server.send(404,"text/plain","404: Not Found");
  74.   }
复制代码


代码中的“+=”是叠加的意思。

                               
登录/注册后可看大图


网页如下:
屏幕截图(236)_LI.jpg

按下flash键,结果如下:
屏幕截图(237).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-16 18:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表