欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: Arduino+DHT11溫濕度傳感器驅動程序 [打印本頁]

作者: 51hei小啊    時間: 2025-10-23 22:15
標題: Arduino+DHT11溫濕度傳感器驅動程序
資料詳見:http://www.raoushi.com/bbs/dpj-240451-1.html

  1. /*
  2. 下面是一個基于Arduino的溫濕度監測系統的完整代碼,它使用DHT11傳感器測量環境溫濕度,并通過OLED顯示屏(SSD1306驅動,I2C接口)
  3. 以中文顯示這些信息。
  4. 這個代碼需要以下庫的支持:
  5. 1. Adafruit SSD1306庫 - 用于控制OLED顯示屏
  6. 2. Adafruit GFX庫 - 圖形基礎庫
  7. 3. DHT傳感器庫 - 用于讀取DHT11傳感器數據
  8. 4,硬件連接方面,DHT11的數據引腳連接到Arduino的數字引腳2,OLED顯示屏使用I2C接口連接(SDA接A4,SCL接A5)。
  9. 5:功能描述:上電顯示“溫濕度系監測初始化中…………”如檢溫濕度傳感器正常則直接跳到溫濕度顯示界面,
  10.    如檢測到溫濕度傳感器異常則一直停留在“傳感器讀取失敗!”界面,直到傳感器正常后才跳回到溫濕度顯示界面。
  11. */
  12. #include <Wire.h>
  13. #include <Adafruit_GFX.h>
  14. #include <Adafruit_SSD1306.h>
  15. #include <DHT.h>
  16. // OLED顯示屏定義
  17. #define SCREEN_WIDTH 128  
  18. #define SCREEN_HEIGHT 64  
  19. #define OLED_RESET    -1  
  20. Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  21. // DHT11傳感器定義
  22. #define DHTPIN 2     
  23. #define DHTTYPE DHT11   
  24. DHT dht(DHTPIN, DHTTYPE);
  25. // 中文字符點陣數據(溫度、濕度、攝氏度等符號)
  26. const unsigned char wen[] PROGMEM = {
  27. 0x00,0x00,0x23,0xF8,0x12,0x08,0x12,0x08,0x83,0xF8,0x42,0x08,0x42,0x08,0x13,0xF8,
  28. 0x10,0x00,0x27,0xFC,0xE4,0xA4,0x24,0xA4,0x24,0xA4,0x24,0xA4,0x2F,0xFE,0x00,0x00,
  29. /*"溫"*/
  30. };
  31. const unsigned char shi[] PROGMEM = {
  32. 0x00,0x00,0x27,0xF8,0x14,0x08,0x14,0x08,0x87,0xF8,0x44,0x08,0x44,0x08,0x17,0xF8,
  33. 0x11,0x20,0x21,0x20,0xE9,0x24,0x25,0x28,0x23,0x30,0x21,0x20,0x2F,0xFE,0x00,0x00,
  34. /*"濕"*/
  35. };
  36. const unsigned char du[] PROGMEM = {
  37. 0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x3F,0xFC,0x22,0x20,0x22,0x20,
  38. 0x23,0xE0,0x20,0x00,0x2F,0xF0,0x24,0x10,0x42,0x20,0x41,0xC0,0x86,0x30,0x38,0x0E,
  39. };
  40. /*"度"*/
  41. const unsigned char dian[] PROGMEM = {
  42. 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,
  43. /*":"*/
  44. };
  45. const unsigned char mei[] PROGMEM = {
  46. 0x10,0x00,0x1F,0xFC,0x20,0x00,0x20,0x00,0x5F,0xF0,0x90,0x10,0x12,0x10,0x11,0x10,
  47. 0xFF,0xFE,0x20,0x10,0x22,0x10,0x21,0x10,0x3F,0xFC,0x00,0x10,0x00,0xA0,0x00,0x40,
  48. /*"每"*/
  49. };
  50. const unsigned char er[] PROGMEM = {
  51. 0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x02,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,
  52. /*"2"*/
  53. };
  54. const unsigned char miao[] PROGMEM = {
  55. 0x08,0x20,0x1C,0x20,0xF0,0x20,0x10,0xA8,0x10,0xA4,0xFC,0xA2,0x11,0x22,0x31,0x20,
  56. 0x3A,0x24,0x54,0x24,0x54,0x28,0x90,0x08,0x10,0x10,0x10,0x20,0x10,0xC0,0x13,0x00,
  57. /*"秒",0*/
  58. };
  59. const unsigned char zhong[] PROGMEM = {
  60. 0x10,0x20,0x10,0x20,0x3C,0x20,0x20,0x20,0x41,0xFC,0xBD,0x24,0x11,0x24,0x11,0x24,
  61. 0xFD,0x24,0x11,0xFC,0x11,0x24,0x10,0x20,0x14,0x20,0x18,0x20,0x10,0x20,0x00,0x20,
  62. /*"鐘"*/
  63. };
  64. const unsigned char geng[] PROGMEM = {
  65. 0x00,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,
  66. 0x21,0x08,0x21,0x08,0x3F,0xF8,0x11,0x00,0x0A,0x00,0x06,0x00,0x19,0xC0,0xE0,0x3E,
  67. /*"更"*/
  68. };
  69. const unsigned char xin[] PROGMEM = {
  70. 0x10,0x00,0x08,0x04,0x7F,0x78,0x00,0x40,0x22,0x40,0x14,0x40,0xFF,0x7E,0x08,0x48,
  71. 0x08,0x48,0x7F,0x48,0x08,0x48,0x2A,0x48,0x49,0x48,0x88,0x88,0x28,0x88,0x11,0x08,
  72. /*"新"*/
  73. };
  74. const unsigned char yi[] PROGMEM = {
  75. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,
  76. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  77. /*"一"*/
  78. };
  79. const unsigned char ci[] PROGMEM = {
  80. 0x00,0x80,0x40,0x80,0x20,0x80,0x20,0xFC,0x01,0x04,0x09,0x08,0x0A,0x40,0x14,0x40,
  81. 0x10,0x40,0xE0,0xA0,0x20,0xA0,0x21,0x10,0x21,0x10,0x22,0x08,0x24,0x04,0x08,0x02,
  82. /*"次"*/
  83. };
  84. const unsigned char jian[] PROGMEM = {
  85. 0x04,0x40,0x24,0x40,0x24,0x7C,0x24,0x40,0x24,0x90,0x24,0x88,0x25,0x08,0x04,0x00,
  86. 0x00,0x00,0x3F,0xF8,0x24,0x48,0x24,0x48,0x24,0x48,0x24,0x48,0xFF,0xFE,0x00,0x00,
  87. /*"監"*/
  88. };
  89. const unsigned char ce[] PROGMEM = {
  90. 0x00,0x04,0x27,0xC4,0x14,0x44,0x14,0x54,0x85,0x54,0x45,0x54,0x45,0x54,0x15,0x54,
  91. 0x15,0x54,0x25,0x54,0xE5,0x54,0x21,0x04,0x22,0x84,0x22,0x44,0x24,0x14,0x08,0x08,
  92. /*"測"*/
  93. };
  94. const unsigned char xi[] PROGMEM = {
  95. 0x00,0xF8,0x3F,0x00,0x04,0x00,0x08,0x20,0x10,0x40,0x3F,0x80,0x01,0x00,0x06,0x10,
  96. 0x18,0x08,0x7F,0xFC,0x01,0x04,0x09,0x20,0x11,0x10,0x21,0x08,0x45,0x04,0x02,0x00,
  97. /*"系"*/
  98. };
  99. const unsigned char tong[] PROGMEM = {
  100. 0x10,0x40,0x10,0x20,0x20,0x20,0x23,0xFE,0x48,0x40,0xF8,0x88,0x11,0x04,0x23,0xFE,
  101. 0x40,0x92,0xF8,0x90,0x40,0x90,0x00,0x90,0x19,0x12,0xE1,0x12,0x42,0x0E,0x04,0x00,
  102. /*"統"*/
  103. };
  104. const unsigned char chu[] PROGMEM = {
  105. 0x20,0x00,0x10,0x00,0x01,0xFC,0xFC,0x44,0x08,0x44,0x10,0x44,0x10,0x44,0x34,0x44,
  106. 0x58,0x44,0x94,0x44,0x14,0x44,0x10,0x84,0x10,0x84,0x11,0x04,0x12,0x28,0x14,0x10,
  107. /*"初"*/
  108. };
  109. const unsigned char chi[] PROGMEM = {
  110. 0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x40,0xFC,0x48,0x24,0x84,0x25,0xFE,0x24,0x82,
  111. 0x24,0x00,0x48,0xFC,0x28,0x84,0x10,0x84,0x28,0x84,0x44,0x84,0x80,0xFC,0x00,0x84,
  112. /*"始"*/
  113. };
  114. const unsigned char hua[] PROGMEM = {
  115. 0x08,0x80,0x08,0x80,0x08,0x84,0x10,0x88,0x10,0x90,0x30,0xA0,0x30,0xC0,0x50,0x80,
  116. 0x91,0x80,0x12,0x80,0x14,0x80,0x10,0x82,0x10,0x82,0x10,0x82,0x10,0x7E,0x10,0x00,
  117. /*"化"*/
  118. };
  119. const unsigned char zhong1[] PROGMEM = {
  120. 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,
  121. 0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
  122. /*"中"*/
  123. };
  124. const unsigned char dian3[] PROGMEM = {
  125. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x18,0x63,0x18,
  126. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  127. /*"…"*/
  128. };
  129. const unsigned char chuan[] PROGMEM = {
  130. 0x08,0x40,0x08,0x40,0x08,0x40,0x13,0xF8,0x10,0x40,0x30,0x80,0x37,0xFE,0x50,0x80,
  131. 0x91,0x00,0x13,0xF8,0x10,0x08,0x11,0x10,0x10,0xA0,0x10,0x40,0x10,0x20,0x10,0x20,
  132. /*"傳"*/
  133. };
  134. const unsigned char gan[] PROGMEM = {
  135. 0x00,0x28,0x00,0x24,0x3F,0xFE,0x20,0x20,0x2F,0xA4,0x20,0x24,0x2F,0xA8,0x28,0x98,
  136. 0x28,0x92,0x4F,0xAA,0x40,0x46,0x80,0x82,0x01,0x00,0x48,0x84,0x48,0x12,0x87,0xF2,
  137. /*"感"*/
  138. };
  139. const unsigned char qi[] PROGMEM = {
  140. 0x00,0x00,0x3E,0x7C,0x22,0x44,0x22,0x44,0x3E,0x7C,0x01,0x20,0x01,0x10,0xFF,0xFE,
  141. 0x02,0x80,0x0C,0x60,0x30,0x18,0xC0,0x06,0x3E,0x7C,0x22,0x44,0x22,0x44,0x3E,0x7C,
  142. /*"器"*/
  143. };
  144. const unsigned char du1[] PROGMEM = {
  145. 0x00,0x20,0x20,0x20,0x11,0xFC,0x10,0x20,0x00,0x20,0x03,0xFE,0xF0,0x02,0x10,0x94,
  146. 0x10,0x50,0x11,0x10,0x10,0x90,0x13,0xFE,0x14,0x28,0x18,0x44,0x10,0x82,0x03,0x02,
  147. /*"讀"*/
  148. };
  149. const unsigned char qu[] PROGMEM = {
  150. 0x00,0x00,0xFF,0x80,0x22,0xFC,0x22,0x44,0x3E,0x44,0x22,0x44,0x22,0x44,0x3E,0x44,
  151. 0x22,0x28,0x22,0x28,0x27,0xA8,0xFA,0x10,0x42,0x10,0x02,0x28,0x02,0x44,0x02,0x82,
  152. /*"取"*/
  153. };
  154. const unsigned char xi1[] PROGMEM = {
  155. 0x01,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x3F,0xF8,0x21,0x00,0x41,0x00,0x01,0x00,
  156. 0xFF,0xFE,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06,
  157. /*"失"*/
  158. };
  159. const unsigned char bai[] PROGMEM = {
  160. 0x00,0x40,0x7C,0x40,0x44,0x40,0x54,0x80,0x54,0xFE,0x55,0x08,0x56,0x88,0x54,0x88,
  161. 0x54,0x88,0x54,0x50,0x54,0x50,0x10,0x20,0x28,0x50,0x24,0x88,0x45,0x04,0x82,0x02,
  162. /*"敗"*/
  163. };
  164. const unsigned char tan1[] PROGMEM = {
  165. 0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,
  166. 0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
  167. /*"!"*/
  168. };
  169. const unsigned char duc[] PROGMEM = {
  170. 0x60,0x00,0x91,0xF4,0x96,0x0C,0x6C,0x04,0x08,0x04,0x18,0x00,0x18,0x00,0x18,0x00,
  171. 0x18,0x00,0x18,0x00,0x18,0x00,0x08,0x00,0x0C,0x04,0x06,0x08,0x01,0xF0,0x00,0x00,
  172. /*"℃"*/
  173. };



  174. void setup() {
  175.   Serial.begin(9600);
  176.   // 初始化OLED
  177.   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
  178.     Serial.println(F("SSD1306 display allocation failed"));
  179.     for(;;);
  180.   }
  181.   display.clearDisplay();
  182.   // 初始化DHT傳感器
  183.   dht.begin();
  184.   // 顯示歡迎信息
  185.   display.drawBitmap(0, 0, wen, 16, 16, SSD1306_WHITE);
  186.   display.drawBitmap(16, 0, shi, 16, 16, SSD1306_WHITE);
  187.   display.drawBitmap(32, 0, du, 16, 16, SSD1306_WHITE);
  188.   display.drawBitmap(46, 0, jian, 16, 16, SSD1306_WHITE);
  189.   display.drawBitmap(62, 0, ce, 16, 16, SSD1306_WHITE);
  190.   display.drawBitmap(78, 0, xi, 16, 16, SSD1306_WHITE);
  191.   display.drawBitmap(94, 0, tong, 16, 16, SSD1306_WHITE);
  192.   display.drawBitmap(110, 0, chu, 16, 16, SSD1306_WHITE);
  193.   display.drawBitmap(0, 17, chi, 16, 16, SSD1306_WHITE);
  194.   display.drawBitmap(16, 17, hua, 16, 16, SSD1306_WHITE);
  195.   display.drawBitmap(32, 17, zhong1, 16, 16, SSD1306_WHITE);
  196.   display.drawBitmap(46, 17, dian3, 16, 16, SSD1306_WHITE);
  197.   display.drawBitmap(63, 17, dian3, 16, 16, SSD1306_WHITE);     
  198.   display.display();
  199.   delay(2000);
  200. }

  201. void loop() {
  202.   // 等待傳感器穩定
  203.   delay(2000);
  204.   // 讀取溫度和濕度
  205.   float h = dht.readHumidity();
  206.   float t = dht.readTemperature();
  207.   // 檢查是否讀取成功
  208.   if (isnan(h) || isnan(t))
  209.   {
  210.   Serial.println("Failed to read from DHT sensor!");
  211.   display.clearDisplay();
  212.   display.drawBitmap(0, 0, chuan, 16, 16, SSD1306_WHITE);
  213.   display.drawBitmap(16, 0, gan, 16, 16, SSD1306_WHITE);
  214.   display.drawBitmap(34, 0, qi, 16, 16, SSD1306_WHITE);
  215.   display.drawBitmap(51, 0, du1, 16, 16, SSD1306_WHITE);
  216.   display.drawBitmap(68, 0, qu, 16, 16, SSD1306_WHITE);
  217.   display.drawBitmap(85, 0, xi1, 16, 16, SSD1306_WHITE);
  218.   display.drawBitmap(102, 0, bai, 16, 16, SSD1306_WHITE);
  219.   display.drawBitmap(119, 0, tan1, 16, 16, SSD1306_WHITE);
  220.   display.display();
  221.   return;
  222.   }

  223.   // 顯示溫濕度信息
  224.   display.clearDisplay();
  225.   // 顯示溫度
  226.   display.drawBitmap(0, 0, wen, 16, 16, SSD1306_WHITE);
  227.   display.setTextSize(2);
  228.   display.drawBitmap(17, 0, du, 16, 16, SSD1306_WHITE);
  229.   display.setTextSize(2);
  230.   display.drawBitmap(34, 0, dian, 8, 16, SSD1306_WHITE);
  231.   display.setTextSize(2);
  232.   display.drawBitmap(114, 0, duc, 16, 16, SSD1306_WHITE);
  233.   display.setTextColor(SSD1306_WHITE);
  234.   display.setCursor(48, 0);
  235.   display.print(t);
  236. /**display.setTextSize(2);
  237.   display.setCursor(112, 0);
  238.   display.print("C");
  239.   */
  240.   // 顯示濕度
  241.   display.drawBitmap(0, 24, shi, 16, 16, SSD1306_WHITE);
  242.   display.setTextSize(2);
  243.   display.drawBitmap(17, 24, du, 16, 16, SSD1306_WHITE);
  244.   display.setTextSize(2);
  245.   display.drawBitmap(34, 24, dian, 8, 16, SSD1306_WHITE);
  246.   display.setTextSize(2);
  247.   display.setTextColor(SSD1306_WHITE);
  248.   display.setCursor(48, 25);
  249.   display.print(h);
  250.   display.setTextSize(2);
  251.   display.setCursor(116, 25);
  252.   display.print("%");
  253.   
  254.   // 顯示更新時間提示
  255.   display.drawBitmap(0, 46, mei, 16, 16, SSD1306_WHITE);
  256.   display.drawBitmap(17, 46, er, 8, 16, SSD1306_WHITE);
  257.   display.drawBitmap(26, 46, miao, 16, 16, SSD1306_WHITE);
  258.   display.drawBitmap(43, 46, zhong, 16, 16, SSD1306_WHITE);
  259.   display.drawBitmap(60, 46, geng, 16, 16, SSD1306_WHITE);
  260.   display.drawBitmap(77, 46, xin, 16, 16, SSD1306_WHITE);
  261.   display.drawBitmap(96, 46, yi, 16, 16, SSD1306_WHITE);
  262.   display.drawBitmap(113, 46, ci, 16, 16, SSD1306_WHITE);
  263.   display.display();
  264. }   
復制代碼



作者: keemee    時間: 2025-10-24 05:51
請問怎樣下載呀,謝謝
作者: GlenXu    時間: 2025-10-28 09:17
好像比我的程序更清楚、簡潔。
贊一個!
作者: yhwb    時間: 2025-11-14 20:42
下載代碼運行正確,但里面的中文輸入很麻煩,有簡便顯示中文的代碼就好了。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1