在這個項目中,我們將制作Arduino OLED溫度計和濕度計。我們將從DHT22傳感器讀取溫度和濕度,然后我們將在OLED屏幕上顯示數據。
OLED代表有機發光二極管,它們有多種不同尺寸可供選擇。我們要使用的尺寸是128X64(1.3英寸)。 OLED通過SPI和I2C通信與Arduino配合使用,但在我們的項目中,我們將使用SPI通信。
電路圖
首先,我們將OLED與Arduino連接起來。 OLED可以連接到I2C中的Arduino以及SPI。以I2C方式連接OLED的連接更容易,但SPI通信比I2C更快。因此,我們將使用SPI將OLED與Arduino連接起來。按照以下方式將OLED與Arduino連接:
將OLED上的CS引腳連接到Arduino上的引腳10
將OLED上的DC引腳連接到Arduino上的引腳9
將OLED上的RST引腳連接到Arduino上的引腳8
將OLED上的D1或CLK引腳連接到Arduino上的引腳11
將OLED上的D0或DIN引腳連接到引腳13在Arduino
我們已將OLED連接到引腳13,11,10,9和8,因為這些引腳用于SPI通信。接下來,將DHT22與Arduino連接。 DHT22傳感器與Arduino的連接如下:
將DHT22上的VCC連接到Arduino上的5V引腳
將DHT22上的GND連接到Arduino上的GND
將DHT22的數據引腳連接到Arduino上的引腳7
Arduino代碼
#include #include“DHT.h “#define DHTPIN 7 #define DHTTYPE DHT22 DHT傳感器(DHTPIN,DHTTYPE); U8GLIB_SH1106_128X64 oled(13,11,10,9,8); void setup(){sensor.begin(); oled.firstPage(); do {oled.setFont(u8g_font_fur14);//設置字體大小//在OLED上打印數據oled.drawStr(20,15,“歡迎”); oled.drawStr(40,40,“To”); oled.drawStr(5,60,“DIYHACKING “); } while(oled.nextPage()); delay(5000);} void loop(){float h = sensor.readHumidity();//讀取濕度值float t = sensor.readTemperature();//讀取溫度值float fah = sensor.readTemperature(true);//讀取Fahrenheitif中的溫度(isnan(h)|| isnan(t)|| isnan(fah)){//檢查我們是否收到值或notSerial.println(“無法讀取DHT傳感器!”); return;} float heat_index = sensor.computeHeatIndex(fah,h);//計算Fahrenheitfloat中的熱指數heat_indexC = sensor.convertFtoC(heat_index);//在Celsiusoled.firstPage()中計算熱量指數; do {oled.setFont(u8g_font_fub11);//設置字體大小//在OLBled.drawStr上打印數據(0,15,“Temp:”); oled.drawStr(0,40,“Hum:”); oled.drawStr(0,60,“嗨:“); oled.setPrintPos(72,15);//設置尺寸以打印temperatureoled.print(t,0); oled.println(“C”); oled.setPrintPos(72,40);//設置尺寸以打印humidoled.print(h,0); oled.println(“%”); oled.setPrintPos(72,60);//設置尺寸以打印熱量indexoled.print(heat_indexC,0); oled.println(“%”);} while(oled。 nextPage()); delay(2000); }
代碼說明
首先,我們包括DHT22傳感器和OLED的庫。 ‘ U8glib ’庫適用于OLED,它使代碼非常簡單。我們將使用“ U8glib ”庫的功能顯示OLED上的數據。
#include #include“DHT.h”接下來,我們定義了連接DHT22傳感器數據引腳的引腳,然后定義了DHT傳感器的類型。市場上還有一些其他類型的DHT傳感器。之后,我們初始化了連接OLED的引腳。
#define DHTPIN 7 #define DHTTYPE DHT22 DHT傳感器(DHTPIN,DHTTYPE); U8GLIB_SH1106_128X64 oled(13 ,11,10,9,8); 在設置功能中,我們給出命令以開始從DHT22傳感器接收值。然后我們設置字體并在OLED上打印“歡迎DIYHACKING”5秒鐘。如果您不喜歡,可以更改字體大小。你可以在這里找到不同的字體大小。
sensor.begin(); oled.firstPage(); do {oled.setFont(u8g_font_fur14);//設置字體大小//在OLED上打印數據oled.drawStr(20,15,“歡迎”); oled.drawStr(40,40,“To”); oled.drawStr(5,60,“DIYHACKING “); } while(oled.nextPage()); delay(5000);} 在循環函數中,我們從DHT22傳感器讀取濕度和溫度值,然后我們使用溫度計算熱量指數濕度。
float h = sensor.readHumidity();//讀取濕度值float t = sensor.readTemperature();//讀取溫度值float fah = sensor.readTemperature(true);//讀取Fahrenheitif中的溫度(isnan(h)|| isnan(t)|| isnan(fah)){//檢查我們是否收到值或notSerial.println(“無法讀取DHT傳感器!”); return; float heat_index = sensor.computeHeatIndex(fah,h);//計算Fahrenheitfloat中的熱指數heat_indexC = sensor.convertFtoC(heat_index);//以攝氏度計算熱指數最后,我們再次設置字體大小并在OLED上打印溫度,濕度和熱指數。您可以按照上面討論的鏈接更改字體大小,也可以在不同的維度設置數據。
oled.firstPage(); do {oled.setFont(u8g_font_fub11);//設置字體大小//在OLBED.drawStr上打印數據(0,15,“Temp:”); oled.drawStr(0,40,“Hum:”); oled.drawStr(0,60,“嗨:“); oled.setPrintPos(72,15);//設置尺寸以打印temperatureoled.print(t,0); oled.println(“C”); oled.setPrintPos(72,40);//設置尺寸以打印humidoled.print(h,0); oled.println(“%”); oled.setPrintPos(72,60);//設置尺寸以打印熱量indexoled.print(heat_indexC,0); oled.println(“%”);} while(oled。 nextPage()); delay(2000); }
-
OLED
+關注
關注
119文章
6254瀏覽量
226633 -
濕度計
+關注
關注
0文章
17瀏覽量
11104 -
溫度計
+關注
關注
6文章
406瀏覽量
78801 -
Arduino
+關注
關注
188文章
6485瀏覽量
189755
發布評論請先 登錄

溫度計使用注意事項 溫度計與濕度計的區別






探針式電子溫度計由什么組成
探針式電子溫度計用來測量什么的溫度
探針式溫度計使用的正確流程是
電阻式溫度計是利用什么原理

評論