久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5481|回復: 8
打印 上一主題 下一主題
收起左側

基于arduino的ESP8266天氣預報設計資料

  [復制鏈接]
跳轉到指定樓層
樓主
基于arduino的ESP8266天氣預報設計
附錄:代碼、天氣相關圖片、字樣等素材。

單片機源程序如下:
  1. #include<U8g2lib.h>
  2. #include<ESP8266WiFi.h>
  3. #include<avr/pgmspace.h>
  4. #include<SPI.h>
  5. #include<SD.h>
  6. #include<ArduinoJson.h>

  7. /*按鍵模擬輸入的值,按鍵的誤差范圍在之后會設置為正負30*/
  8. #define exit_bt 930
  9. #define left_bt 648
  10. #define right_bt  393
  11. #define enter_bt  144
  12. #define null_bt 22      //不按按鍵時的值(由于會受外界干擾不為0)


  13. #define City_Code_MAX 35              //城市數量(0~35)
  14. #define MAX_CONTENT_SIZE  1000        //接受http響應內容的最大字節數
  15. #define HTTP_TIMEOUT  5000            //最大響應時間

  16. /*幾個要用到的類的對象定義*/
  17. File myFile;                          //讀取sd卡數據
  18. U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI oled(U8G2_R0, 10, 9, 5);      //驅動屏幕
  19. WiFiClient client;                    //客戶端聯接服務器

  20. /*全局變量*/
  21. unsigned char selected[200];          //用于存放取反(黑白倒置)后的圖像,做成被選擇的效果
  22. unsigned char weather_lb[64];         //存放從sd卡中讀取的天氣字樣
  23. unsigned char weather_pb[512];        //存放從sd卡中讀取的天氣圖像
  24. char response[MAX_CONTENT_SIZE];      //存放http響應的內容
  25. char endOfHeaders[] = "\r\n\r\n";     //http響應頭部結束的標志

  26. bool has_net = false;           //判斷是否聯上網絡的標志
  27. bool sd_initial = false;            //判斷初始化時是否成功讀取sd卡保存的上一次設置的標志
  28. short int s = 0;                      //主界面中選擇的狀態
  29. short int City_Code = 35;               //當前設置城市對應的編碼(開始時默認為佛山)
  30. short int weather_Code = 99;            //http響應內容中天氣對應的編碼(開始默認為未知)
  31. short int temper;                       //http響應內容中的溫度

  32. String City_ID = "WS06YNEMPP18";        //心知天氣中城市對應的id,用于url合成
  33. String ssid = "";                       //配網時保存賬號
  34. String password = "";                   //配網時保存密碼

  35. const char* host = "api.seniverse點com";      //服務器網址
  36. const char* key = "smtq3n0ixdggurox";        //心知天氣api的密匙
  37. const char* language = "zh-Hans";            //設置響應的語言-簡體中文

  38. //此結構在解析json數據時存放json中的"code",“溫度”
  39. struct WeatherData {
  40.   char code[8];         //天氣對應的編碼
  41.   char temperature[8];  //溫度
  42. };


  43. /*函數*/
  44. void Get_initial_data();         //讀取上一次設置的城市
  45. void main_Interface();          //主界面
  46. void main_interface_draw();     //主界面繪圖函數

  47. void smart_Config();            //主界面中的“網絡”,配網連接wifi
  48. void config_draw(short int);    //“網絡”繪圖函數

  49. void city_Set();                              //主界面中的“工具”,設置城市
  50. void city_set_draw(short int, bool = false);  //“工具”繪圖函數
  51. void draw_city_character(short int, short int, short int);  //繪畫城市字樣函數,三個形參分別是基準點x,y坐標及城市字樣對應的數字
  52. void city_set_store();                                      //將設置城市保存到sd卡中

  53. void weather_Report();                                //主界面中的“天氣”,發送請求接收響應內容并顯示天氣
  54. bool SendRequest();                                   //發送請求
  55. bool skipResponseHeaders();                           //跳過響應頭部
  56. void readReponseContent(char* );                      //將響應的數據保存到content數組中
  57. bool AnalyseData(char* , struct WeatherData*);        //解析content中的josn數據
  58. void printData(const struct WeatherData* );           //打印解析后的數據(主要用來debug)
  59. void exchange(const struct WeatherData* );            //將解析后存在struct中的code和溫度從字符串轉換為整數
  60. void weather_Readpic();                               //讀取sd卡中對應的天氣圖片及字樣
  61. void weather_report_draw();                           //繪制天氣顯示
  62. void request_fail();                                  //異常退出函數

  63. /*城市編碼和城市ID的鍵值對數組*/
  64. //sizeof:36X12B
  65. static const char *ID[] = {
  66. "WX4FBXXFKE4F", "WTW3SJ5ZBJUY", "WS0E9D8WN298", "WS10730EM8EV", "WECNV8ZNE40W", "WEBTFUSKS7HB", "WSQQMXBCC2VS", "WWGQDCW6TBW1", "WM7B0X53DZW2",
  67. "YB1UX38K6DY1", "WZC1EXZ0P9HU", "WXRVB9QYXKY8", "TZY33C4YJBP3", "WRR2Q2Z7CXWM", "WQGDF7NXZRZB", "WWC2MYYCM6J5", "WW8P3NH2TPDT", "WQ82K43YVYU8",
  68. "WWE0TGW4PX6N", "WQ3V4QR6VR6G", "WW0V9QP93VS8", "WQJ6YY8MHZP0", "WTSQQYHVQ973", "WTEMH46Z5N09", "WTMKQ069CCJ7", "WT3Q0FW9ZJ3Q", "WM6N2PM3WY2K",
  69. "WJ2B9TWGFBT5", "WT47HJP3HEMP", "WT029G15ETRJ", "WKEZD7MXE04F", "WSSU6EXX52RE", "WK3N92NQV6RQ", "WKJ1F428HH2F", "W7W3YQKE4QDH", "WS06YNEMPP18"
  70. };


  71. /*圖像(一般以pb開頭)、文字(一般以lb開頭)數組*/

  72. //開機時的圖像: 88X50px length:550  sizeof:550B
  73. const unsigned char pb_start[] U8X8_PROGMEM= {
  74. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  75. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,
  76. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0xC0,0x07,0x7F,
  77. 0xF0,0x8F,0x81,0x21,0x0B,0x00,0x00,0x00,0xE0,0x0F,0xFF,0xF0,0x8F,0x83,0xA1,0x0A,
  78. 0x00,0x00,0x00,0x70,0x1C,0xC3,0x31,0x80,0x83,0xA1,0x06,0x60,0x00,0x00,0x30,0x18,
  79. 0x83,0x31,0x80,0x87,0x21,0x03,0xF0,0x00,0x00,0x30,0x18,0x83,0x31,0x80,0x8F,0x41,
  80. 0x08,0xC2,0x01,0x00,0x30,0x18,0x83,0x31,0x80,0x8D,0x81,0x87,0x87,0x01,0x00,0x30,
  81. 0x18,0x83,0xF1,0x8F,0x99,0x01,0xC0,0x83,0x03,0x00,0x30,0x18,0xC3,0xF0,0x8F,0x99,
  82. 0x01,0xC0,0x87,0x03,0x00,0x30,0x18,0xFF,0x30,0x80,0xB1,0x01,0x80,0x8C,0x03,0x00,
  83. 0x30,0x18,0x7F,0x30,0x80,0xF1,0x01,0x00,0x98,0x03,0x00,0x30,0x18,0x03,0x30,0x80,
  84. 0xE1,0x01,0x20,0xF0,0x03,0x00,0x30,0x18,0x03,0x30,0x80,0xC1,0x01,0x60,0xE0,0x01,
  85. 0x00,0x30,0x18,0x03,0x30,0x80,0xC1,0x01,0xC0,0xF0,0x00,0x00,0x70,0x1C,0x03,0xF0,
  86. 0x8F,0x81,0x01,0xF0,0xFF,0x01,0x00,0xE0,0x0F,0x03,0xF0,0x8F,0x81,0x01,0x70,0x3F,
  87. 0x03,0x00,0xC0,0x07,0x03,0x00,0x00,0x00,0x00,0x70,0x00,0x06,0x00,0x00,0x00,0x00,
  88. 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  89. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  90. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  91. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  92. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFB,0xF9,0xE3,0xE7,0xC7,0xC3,
  93. 0xE3,0xE3,0xC7,0x0F,0xFC,0xFB,0xF9,0xE7,0xEF,0xE7,0xE7,0xF7,0xE7,0xCF,0x0F,0x60,
  94. 0x18,0xD8,0x66,0x6C,0xE0,0x66,0x36,0x66,0xCC,0x00,0x60,0x18,0xD8,0x66,0x6C,0x60,
  95. 0x60,0x30,0x66,0xCC,0x00,0x60,0x18,0xD8,0x66,0x6C,0x60,0x60,0x30,0x66,0xCC,0x00,
  96. 0x60,0xF8,0xD9,0x66,0xEC,0xE7,0x63,0x30,0x66,0xCC,0x0F,0x60,0xF8,0xD9,0xE6,0xE7,
  97. 0xC7,0x67,0x30,0xE6,0xC7,0x0F,0x60,0x18,0xD8,0xE6,0x63,0x00,0x66,0x30,0xE6,0xC3,
  98. 0x00,0x60,0x18,0xD8,0x66,0x60,0x00,0x66,0x30,0x66,0xC0,0x00,0x60,0x18,0xD8,0x66,
  99. 0x60,0x60,0x66,0x36,0x66,0xC0,0x00,0x60,0xF8,0xD9,0x66,0xE0,0xE7,0xE7,0xF7,0x67,
  100. 0xC0,0x0F,0x60,0xF8,0xD9,0x66,0xE0,0xC7,0xC3,0xE3,0x63,0xC0,0x0F,0x60,0x00,0x00,
  101. 0x60,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  102. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  103. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  104. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  105. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  106. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  107. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  108. 0x00,0x00,0x00,0x00,0x00,0x00
  109. };


  110. /*主界面中的圖像字樣*/
  111. //主界面中的"工具"圖像: 40X40px length:200  sizeof:200B
  112. const unsigned char pb_tool[] U8X8_PROGMEM = {
  113. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  114. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,
  115. 0x00,0x7C,0x00,0x40,0x06,0x00,0x63,0x00,0x40,0x0C,0x00,0x31,0x00,0x40,0x30,0x80,
  116. 0x18,0x04,0x80,0x20,0x80,0x08,0x06,0x80,0x60,0x40,0x08,0x05,0x00,0x41,0xC0,0x90,
  117. 0x04,0x00,0x42,0x80,0x60,0x04,0x00,0x9E,0xC0,0x00,0x04,0x00,0x30,0x61,0x00,0x02,
  118. 0x00,0x40,0x32,0x00,0x01,0x00,0x80,0x1C,0xFC,0x00,0x00,0x00,0x09,0x36,0x00,0x00,
  119. ……………………

  120. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
代碼,素材,文檔及工具.rar (249.46 KB, 下載次數: 100)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:64089 發表于 2021-5-31 10:09 | 只看該作者
不錯的資料正在學習中
回復

使用道具 舉報

板凳
ID:374259 發表于 2021-6-5 23:25 | 只看該作者

不錯的資料,要是有實物圖就更好了
回復

使用道具 舉報

地板
ID:925265 發表于 2021-8-28 20:22 | 只看該作者
這不是別人免費開源的嗎
回復

使用道具 舉報

5#
ID:88256 發表于 2021-8-28 21:11 | 只看該作者
應該上幾張圖片看看的
回復

使用道具 舉報

6#
ID:963223 發表于 2021-8-31 12:48 | 只看該作者
en  想看看,就是沒圖片?
回復

使用道具 舉報

7#
ID:291765 發表于 2021-9-4 16:41 | 只看該作者
謝謝UP的分享啊,學習了。
回復

使用道具 舉報

8#
ID:964490 發表于 2021-9-7 00:09 | 只看該作者
這是接的什么顯示設備
回復

使用道具 舉報

9#
ID:64253 發表于 2021-9-11 20:46 | 只看該作者
這個想象在B站有看到過,是某up開源的東西
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品毛片av一区 | 一区二区av | 色综合久| 日韩欧美三区 | 久久久青草婷婷精品综合日韩 | 91伊人网 | 久久久久久一区 | 久久久久久久久99精品 | 黄色三级毛片 | 日韩在线免费视频 | 国产视频日韩 | 亚洲精品www久久久久久广东 | 成人免费黄色 | 特黄毛片 | 亚洲一区免费 | 99视频在线 | 日韩欧美精品一区 | 户外露出一区二区三区 | 国产极品车模吞精高潮呻吟 | 日本免费黄色 | 伊人春色在线 | 黄色一级大片在线免费看产 | 草草影院ccyy | 国产欧美三区 | 国产视频一视频二 | 最新国产精品视频 | 国产目拍亚洲精品99久久精品 | 亚洲码欧美码一区二区三区 | 成人福利电影 | 国产精品日韩欧美一区二区 | 国产成人免费在线 | 免费激情网站 | 国产视频一区二区三区四区五区 | 欧美日韩一区在线 | 久久久综合久久 | 久草青青草 | 香蕉视频久久久 | 狠狠综合久久av一区二区小说 | 午夜男人免费视频 | 精品久久久久久久人人人人传媒 | 毛片av免费看 |