ESP32云开发二( http + led + lcd)

打印 上一主题 下一主题

主题 844|帖子 844|积分 2532

媒介

阅读此篇前建议先看 此片认识下wokwi
https://blog.csdn.net/qq_20330595/article/details/144289986
先上效果图

Column 1Column 2
platformio.ini


wokwi.toml


diagram.json

注意这里代码是主动天生的

源代码

  1. // Learn about the ESP32 WiFi simulation in
  2. // https://docs.wokwi.com/guides/esp32-wifi
  3. #include <WiFi.h>
  4. #include <Wire.h>
  5. #include <LiquidCrystal_I2C.h>
  6. #include <HTTPClient.h>
  7. LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
  8. #define NTP_SERVER "pool.ntp.org"
  9. #define UTC_OFFSET 0
  10. #define UTC_OFFSET_DST 0
  11. const int ledPin = 27; // 定义27号引脚为LED引脚
  12. void sendHttpRequest()
  13. {
  14.   if (WiFi.status() == WL_CONNECTED)
  15.   {
  16.     WiFiClientSecure client;
  17.     HTTPClient http;
  18.     client.setInsecure(); // 如果是自签名证书可以使用此行
  19.     http.begin(client, "https://wanandroid.com/harmony/index/json");
  20.     int httpCode = http.GET();
  21.     /**/
  22.     LCD.clear();
  23.     LCD.setCursor(0, 0);
  24.     LCD.print("Sending Http");
  25.     LCD.setCursor(0, 1);
  26.     LCD.print("Request..... ");
  27.     if (httpCode > 0)
  28.     {
  29.       String payload = http.getString();
  30.       Serial.println("HTTP Response code: " + String(httpCode));
  31.       // Serial.println("Response payload: " + payload);
  32.       // 在LCD的第二行显示HTTP返回值的长度
  33.       LCD.clear();
  34.       LCD.setCursor(0, 0);
  35.       LCD.print("httpCode: ");
  36.       LCD.print(String(httpCode));
  37.       LCD.setCursor(0, 1);
  38.       LCD.print("Len: ");
  39.       LCD.print(payload.length());
  40.     }
  41.     else
  42.     {
  43.       Serial.print("Error on HTTP request: ");      // 输出错误信息
  44.       Serial.println(http.errorToString(httpCode)); // 转换错误代码为可读格式
  45.     }
  46.     http.end(); // 结束请求
  47.   }
  48.   else
  49.   {
  50.     Serial.println("WiFi Disconnected");
  51.   }
  52. }
  53. void spinner()
  54. {
  55.   static int8_t counter = 0;
  56.   const char *glyphs = "\xa1\xa5\xdb";
  57.   LCD.setCursor(15, 1);
  58.   LCD.print(glyphs[counter++]);
  59.   if (counter == strlen(glyphs))
  60.   {
  61.     counter = 0;
  62.   }
  63. }
  64. void printLocalTime()
  65. {
  66.   struct tm timeinfo;
  67.   // 如果获取本地时间失败,则打印错误信息并返回
  68.   if (!getLocalTime(&timeinfo))
  69.   {
  70.     // 在LCD的第二行显示连接错误信息
  71.     LCD.setCursor(0, 1);
  72.     LCD.println("Connection Err");
  73.     return;
  74.   }
  75.   // 在LCD的第一行第9列开始显示当前时间
  76.   LCD.setCursor(8, 0);
  77.   LCD.println(&timeinfo, "%H:%M:%S");
  78.   // 在LCD的第二行显示当前日期和时区
  79.   LCD.setCursor(0, 1);
  80.   LCD.println(&timeinfo, "%d/%m/%Y   %Z");
  81. }
  82. /**
  83. * @brief 初始化设置函数
  84. *
  85. * 该函数用于初始化串口通信、LCD显示屏,并连接到WiFi网络。
  86. * 它会在设备启动时执行一次。
  87. */
  88. void setup()
  89. {
  90.   // 设置27号引脚为输出模式
  91.   pinMode(ledPin, OUTPUT);
  92.   // 初始化串口通信,波特率为115200
  93.   Serial.begin(115200);
  94.   // 初始化LCD显示屏
  95.   LCD.init();
  96.   // 打开LCD背光
  97.   LCD.backlight();
  98.   // 在LCD的第一行显示连接信息
  99.   LCD.setCursor(0, 0);
  100.   LCD.print("Connecting to ");
  101.   // 在LCD的第二行显示WiFi信息
  102.   LCD.setCursor(0, 1);
  103.   LCD.print("WiFi ");
  104.   // 开始连接到WiFi网络,SSID为"Wokwi-GUEST",密码为空,超时时间为6秒
  105.   WiFi.begin("Wokwi-GUEST", "", 6);
  106.   // 等待WiFi连接成功
  107.   while (WiFi.status() != WL_CONNECTED)
  108.   {
  109.     // 延迟250毫秒
  110.     delay(250);
  111.     // 显示连接状态的旋转图标
  112.     spinner();
  113.   }
  114.   Serial.println("");
  115.   Serial.println("WiFi connected");
  116.   Serial.print("IP address: ");
  117.   Serial.println(WiFi.localIP());
  118.   LCD.clear();
  119.   LCD.setCursor(0, 0);
  120.   LCD.println("Online");
  121.   LCD.setCursor(0, 1);
  122.   LCD.println("Updating time...");
  123.   configTime(UTC_OFFSET, UTC_OFFSET_DST, NTP_SERVER);
  124. }
  125. void loop()
  126. {
  127.   // printLocalTime();
  128.   // delay(250);
  129.   // delay(4000);
  130.   // sendHttpRequest();
  131.   // 循环输出高低电平
  132.   digitalWrite(ledPin, HIGH);
  133.   LCD.clear();
  134.   LCD.setCursor(0, 0);
  135.   LCD.println("HIGH");
  136.   delay(1000);
  137.   
  138.   digitalWrite(ledPin, LOW);
  139.   LCD.clear();
  140.   LCD.setCursor(0, 0);
  141.   LCD.println("LOW");
  142.   delay(1000);
  143. }
复制代码
编译

Ctrl+Alt+B
编译成功


注意这里输出的固件路径对应前面wokwi.toml的内容
上传云端

Ctrl+Shift+P

完结撒花⭐⭐⭐⭐⭐


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

嚴華

金牌会员
这个人很懒什么都没写!

标签云

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