欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
Arduino+DHT11溫濕度傳感器驅動程序
[打印本頁]
作者:
51hei小啊
時間:
2025-10-23 22:15
標題:
Arduino+DHT11溫濕度傳感器驅動程序
資料詳見:
http://www.raoushi.com/bbs/dpj-240451-1.html
/*
下面是一個基于Arduino的溫濕度監測系統的完整代碼,它使用DHT11傳感器測量環境溫濕度,并通過OLED顯示屏(SSD1306驅動,I2C接口)
以中文顯示這些信息。
這個代碼需要以下庫的支持:
1. Adafruit SSD1306庫 - 用于控制OLED顯示屏
2. Adafruit GFX庫 - 圖形基礎庫
3. DHT傳感器庫 - 用于讀取DHT11傳感器數據
4,硬件連接方面,DHT11的數據引腳連接到Arduino的數字引腳2,OLED顯示屏使用I2C接口連接(SDA接A4,SCL接A5)。
5:功能描述:上電顯示“溫濕度系監測初始化中…………”如檢溫濕度傳感器正常則直接跳到溫濕度顯示界面,
如檢測到溫濕度傳感器異常則一直停留在“傳感器讀取失敗!”界面,直到傳感器正常后才跳回到溫濕度顯示界面。
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
// OLED顯示屏定義
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// DHT11傳感器定義
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// 中文字符點陣數據(溫度、濕度、攝氏度等符號)
const unsigned char wen[] PROGMEM = {
0x00,0x00,0x23,0xF8,0x12,0x08,0x12,0x08,0x83,0xF8,0x42,0x08,0x42,0x08,0x13,0xF8,
0x10,0x00,0x27,0xFC,0xE4,0xA4,0x24,0xA4,0x24,0xA4,0x24,0xA4,0x2F,0xFE,0x00,0x00,
/*"溫"*/
};
const unsigned char shi[] PROGMEM = {
0x00,0x00,0x27,0xF8,0x14,0x08,0x14,0x08,0x87,0xF8,0x44,0x08,0x44,0x08,0x17,0xF8,
0x11,0x20,0x21,0x20,0xE9,0x24,0x25,0x28,0x23,0x30,0x21,0x20,0x2F,0xFE,0x00,0x00,
/*"濕"*/
};
const unsigned char du[] PROGMEM = {
0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x3F,0xFC,0x22,0x20,0x22,0x20,
0x23,0xE0,0x20,0x00,0x2F,0xF0,0x24,0x10,0x42,0x20,0x41,0xC0,0x86,0x30,0x38,0x0E,
};
/*"度"*/
const unsigned char dian[] PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,
/*":"*/
};
const unsigned char mei[] PROGMEM = {
0x10,0x00,0x1F,0xFC,0x20,0x00,0x20,0x00,0x5F,0xF0,0x90,0x10,0x12,0x10,0x11,0x10,
0xFF,0xFE,0x20,0x10,0x22,0x10,0x21,0x10,0x3F,0xFC,0x00,0x10,0x00,0xA0,0x00,0x40,
/*"每"*/
};
const unsigned char er[] PROGMEM = {
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x02,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,
/*"2"*/
};
const unsigned char miao[] PROGMEM = {
0x08,0x20,0x1C,0x20,0xF0,0x20,0x10,0xA8,0x10,0xA4,0xFC,0xA2,0x11,0x22,0x31,0x20,
0x3A,0x24,0x54,0x24,0x54,0x28,0x90,0x08,0x10,0x10,0x10,0x20,0x10,0xC0,0x13,0x00,
/*"秒",0*/
};
const unsigned char zhong[] PROGMEM = {
0x10,0x20,0x10,0x20,0x3C,0x20,0x20,0x20,0x41,0xFC,0xBD,0x24,0x11,0x24,0x11,0x24,
0xFD,0x24,0x11,0xFC,0x11,0x24,0x10,0x20,0x14,0x20,0x18,0x20,0x10,0x20,0x00,0x20,
/*"鐘"*/
};
const unsigned char geng[] PROGMEM = {
0x00,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,
0x21,0x08,0x21,0x08,0x3F,0xF8,0x11,0x00,0x0A,0x00,0x06,0x00,0x19,0xC0,0xE0,0x3E,
/*"更"*/
};
const unsigned char xin[] PROGMEM = {
0x10,0x00,0x08,0x04,0x7F,0x78,0x00,0x40,0x22,0x40,0x14,0x40,0xFF,0x7E,0x08,0x48,
0x08,0x48,0x7F,0x48,0x08,0x48,0x2A,0x48,0x49,0x48,0x88,0x88,0x28,0x88,0x11,0x08,
/*"新"*/
};
const unsigned char yi[] PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*"一"*/
};
const unsigned char ci[] PROGMEM = {
0x00,0x80,0x40,0x80,0x20,0x80,0x20,0xFC,0x01,0x04,0x09,0x08,0x0A,0x40,0x14,0x40,
0x10,0x40,0xE0,0xA0,0x20,0xA0,0x21,0x10,0x21,0x10,0x22,0x08,0x24,0x04,0x08,0x02,
/*"次"*/
};
const unsigned char jian[] PROGMEM = {
0x04,0x40,0x24,0x40,0x24,0x7C,0x24,0x40,0x24,0x90,0x24,0x88,0x25,0x08,0x04,0x00,
0x00,0x00,0x3F,0xF8,0x24,0x48,0x24,0x48,0x24,0x48,0x24,0x48,0xFF,0xFE,0x00,0x00,
/*"監"*/
};
const unsigned char ce[] PROGMEM = {
0x00,0x04,0x27,0xC4,0x14,0x44,0x14,0x54,0x85,0x54,0x45,0x54,0x45,0x54,0x15,0x54,
0x15,0x54,0x25,0x54,0xE5,0x54,0x21,0x04,0x22,0x84,0x22,0x44,0x24,0x14,0x08,0x08,
/*"測"*/
};
const unsigned char xi[] PROGMEM = {
0x00,0xF8,0x3F,0x00,0x04,0x00,0x08,0x20,0x10,0x40,0x3F,0x80,0x01,0x00,0x06,0x10,
0x18,0x08,0x7F,0xFC,0x01,0x04,0x09,0x20,0x11,0x10,0x21,0x08,0x45,0x04,0x02,0x00,
/*"系"*/
};
const unsigned char tong[] PROGMEM = {
0x10,0x40,0x10,0x20,0x20,0x20,0x23,0xFE,0x48,0x40,0xF8,0x88,0x11,0x04,0x23,0xFE,
0x40,0x92,0xF8,0x90,0x40,0x90,0x00,0x90,0x19,0x12,0xE1,0x12,0x42,0x0E,0x04,0x00,
/*"統"*/
};
const unsigned char chu[] PROGMEM = {
0x20,0x00,0x10,0x00,0x01,0xFC,0xFC,0x44,0x08,0x44,0x10,0x44,0x10,0x44,0x34,0x44,
0x58,0x44,0x94,0x44,0x14,0x44,0x10,0x84,0x10,0x84,0x11,0x04,0x12,0x28,0x14,0x10,
/*"初"*/
};
const unsigned char chi[] PROGMEM = {
0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x40,0xFC,0x48,0x24,0x84,0x25,0xFE,0x24,0x82,
0x24,0x00,0x48,0xFC,0x28,0x84,0x10,0x84,0x28,0x84,0x44,0x84,0x80,0xFC,0x00,0x84,
/*"始"*/
};
const unsigned char hua[] PROGMEM = {
0x08,0x80,0x08,0x80,0x08,0x84,0x10,0x88,0x10,0x90,0x30,0xA0,0x30,0xC0,0x50,0x80,
0x91,0x80,0x12,0x80,0x14,0x80,0x10,0x82,0x10,0x82,0x10,0x82,0x10,0x7E,0x10,0x00,
/*"化"*/
};
const unsigned char zhong1[] PROGMEM = {
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,
0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
/*"中"*/
};
const unsigned char dian3[] PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x18,0x63,0x18,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*"…"*/
};
const unsigned char chuan[] PROGMEM = {
0x08,0x40,0x08,0x40,0x08,0x40,0x13,0xF8,0x10,0x40,0x30,0x80,0x37,0xFE,0x50,0x80,
0x91,0x00,0x13,0xF8,0x10,0x08,0x11,0x10,0x10,0xA0,0x10,0x40,0x10,0x20,0x10,0x20,
/*"傳"*/
};
const unsigned char gan[] PROGMEM = {
0x00,0x28,0x00,0x24,0x3F,0xFE,0x20,0x20,0x2F,0xA4,0x20,0x24,0x2F,0xA8,0x28,0x98,
0x28,0x92,0x4F,0xAA,0x40,0x46,0x80,0x82,0x01,0x00,0x48,0x84,0x48,0x12,0x87,0xF2,
/*"感"*/
};
const unsigned char qi[] PROGMEM = {
0x00,0x00,0x3E,0x7C,0x22,0x44,0x22,0x44,0x3E,0x7C,0x01,0x20,0x01,0x10,0xFF,0xFE,
0x02,0x80,0x0C,0x60,0x30,0x18,0xC0,0x06,0x3E,0x7C,0x22,0x44,0x22,0x44,0x3E,0x7C,
/*"器"*/
};
const unsigned char du1[] PROGMEM = {
0x00,0x20,0x20,0x20,0x11,0xFC,0x10,0x20,0x00,0x20,0x03,0xFE,0xF0,0x02,0x10,0x94,
0x10,0x50,0x11,0x10,0x10,0x90,0x13,0xFE,0x14,0x28,0x18,0x44,0x10,0x82,0x03,0x02,
/*"讀"*/
};
const unsigned char qu[] PROGMEM = {
0x00,0x00,0xFF,0x80,0x22,0xFC,0x22,0x44,0x3E,0x44,0x22,0x44,0x22,0x44,0x3E,0x44,
0x22,0x28,0x22,0x28,0x27,0xA8,0xFA,0x10,0x42,0x10,0x02,0x28,0x02,0x44,0x02,0x82,
/*"取"*/
};
const unsigned char xi1[] PROGMEM = {
0x01,0x00,0x11,0x00,0x11,0x00,0x11,0x00,0x3F,0xF8,0x21,0x00,0x41,0x00,0x01,0x00,
0xFF,0xFE,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06,
/*"失"*/
};
const unsigned char bai[] PROGMEM = {
0x00,0x40,0x7C,0x40,0x44,0x40,0x54,0x80,0x54,0xFE,0x55,0x08,0x56,0x88,0x54,0x88,
0x54,0x88,0x54,0x50,0x54,0x50,0x10,0x20,0x28,0x50,0x24,0x88,0x45,0x04,0x82,0x02,
/*"敗"*/
};
const unsigned char tan1[] PROGMEM = {
0x00,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,
0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
/*"!"*/
};
const unsigned char duc[] PROGMEM = {
0x60,0x00,0x91,0xF4,0x96,0x0C,0x6C,0x04,0x08,0x04,0x18,0x00,0x18,0x00,0x18,0x00,
0x18,0x00,0x18,0x00,0x18,0x00,0x08,0x00,0x0C,0x04,0x06,0x08,0x01,0xF0,0x00,0x00,
/*"℃"*/
};
void setup() {
Serial.begin(9600);
// 初始化OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 display allocation failed"));
for(;;);
}
display.clearDisplay();
// 初始化DHT傳感器
dht.begin();
// 顯示歡迎信息
display.drawBitmap(0, 0, wen, 16, 16, SSD1306_WHITE);
display.drawBitmap(16, 0, shi, 16, 16, SSD1306_WHITE);
display.drawBitmap(32, 0, du, 16, 16, SSD1306_WHITE);
display.drawBitmap(46, 0, jian, 16, 16, SSD1306_WHITE);
display.drawBitmap(62, 0, ce, 16, 16, SSD1306_WHITE);
display.drawBitmap(78, 0, xi, 16, 16, SSD1306_WHITE);
display.drawBitmap(94, 0, tong, 16, 16, SSD1306_WHITE);
display.drawBitmap(110, 0, chu, 16, 16, SSD1306_WHITE);
display.drawBitmap(0, 17, chi, 16, 16, SSD1306_WHITE);
display.drawBitmap(16, 17, hua, 16, 16, SSD1306_WHITE);
display.drawBitmap(32, 17, zhong1, 16, 16, SSD1306_WHITE);
display.drawBitmap(46, 17, dian3, 16, 16, SSD1306_WHITE);
display.drawBitmap(63, 17, dian3, 16, 16, SSD1306_WHITE);
display.display();
delay(2000);
}
void loop() {
// 等待傳感器穩定
delay(2000);
// 讀取溫度和濕度
float h = dht.readHumidity();
float t = dht.readTemperature();
// 檢查是否讀取成功
if (isnan(h) || isnan(t))
{
Serial.println("Failed to read from DHT sensor!");
display.clearDisplay();
display.drawBitmap(0, 0, chuan, 16, 16, SSD1306_WHITE);
display.drawBitmap(16, 0, gan, 16, 16, SSD1306_WHITE);
display.drawBitmap(34, 0, qi, 16, 16, SSD1306_WHITE);
display.drawBitmap(51, 0, du1, 16, 16, SSD1306_WHITE);
display.drawBitmap(68, 0, qu, 16, 16, SSD1306_WHITE);
display.drawBitmap(85, 0, xi1, 16, 16, SSD1306_WHITE);
display.drawBitmap(102, 0, bai, 16, 16, SSD1306_WHITE);
display.drawBitmap(119, 0, tan1, 16, 16, SSD1306_WHITE);
display.display();
return;
}
// 顯示溫濕度信息
display.clearDisplay();
// 顯示溫度
display.drawBitmap(0, 0, wen, 16, 16, SSD1306_WHITE);
display.setTextSize(2);
display.drawBitmap(17, 0, du, 16, 16, SSD1306_WHITE);
display.setTextSize(2);
display.drawBitmap(34, 0, dian, 8, 16, SSD1306_WHITE);
display.setTextSize(2);
display.drawBitmap(114, 0, duc, 16, 16, SSD1306_WHITE);
display.setTextColor(SSD1306_WHITE);
display.setCursor(48, 0);
display.print(t);
/**display.setTextSize(2);
display.setCursor(112, 0);
display.print("C");
*/
// 顯示濕度
display.drawBitmap(0, 24, shi, 16, 16, SSD1306_WHITE);
display.setTextSize(2);
display.drawBitmap(17, 24, du, 16, 16, SSD1306_WHITE);
display.setTextSize(2);
display.drawBitmap(34, 24, dian, 8, 16, SSD1306_WHITE);
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(48, 25);
display.print(h);
display.setTextSize(2);
display.setCursor(116, 25);
display.print("%");
// 顯示更新時間提示
display.drawBitmap(0, 46, mei, 16, 16, SSD1306_WHITE);
display.drawBitmap(17, 46, er, 8, 16, SSD1306_WHITE);
display.drawBitmap(26, 46, miao, 16, 16, SSD1306_WHITE);
display.drawBitmap(43, 46, zhong, 16, 16, SSD1306_WHITE);
display.drawBitmap(60, 46, geng, 16, 16, SSD1306_WHITE);
display.drawBitmap(77, 46, xin, 16, 16, SSD1306_WHITE);
display.drawBitmap(96, 46, yi, 16, 16, SSD1306_WHITE);
display.drawBitmap(113, 46, ci, 16, 16, SSD1306_WHITE);
display.display();
}
復制代碼
作者:
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