在這個(gè)項(xiàng)目中,我們將制作Arduino OLED溫度計(jì)和濕度計(jì)。我們將從DHT22傳感器讀取溫度和濕度,然后我們將在OLED屏幕上顯示數(shù)據(jù)。
OLED代表有機(jī)發(fā)光二極管,它們有多種不同尺寸可供選擇。我們要使用的尺寸是128X64(1.3英寸)。 OLED通過(guò)SPI和I2C通信與Arduino配合使用,但在我們的項(xiàng)目中,我們將使用SPI通信。
電路圖
首先,我們將OLED與Arduino連接起來(lái)。 OLED可以連接到I2C中的Arduino以及SPI。以I2C方式連接OLED的連接更容易,但SPI通信比I2C更快。因此,我們將使用SPI將OLED與Arduino連接起來(lái)。按照以下方式將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,因?yàn)檫@些引腳用于SPI通信。接下來(lái),將DHT22與Arduino連接。 DHT22傳感器與Arduino的連接如下:
將DHT22上的VCC連接到Arduino上的5V引腳
將DHT22上的GND連接到Arduino上的GND
將DHT22的數(shù)據(jù)引腳連接到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);//設(shè)置字體大小//在OLED上打印數(shù)據(jù)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(“無(wú)法讀取DHT傳感器!”); return;} float heat_index = sensor.computeHeatIndex(fah,h);//計(jì)算Fahrenheitfloat中的熱指數(shù)heat_indexC = sensor.convertFtoC(heat_index);//在Celsiusoled.firstPage()中計(jì)算熱量指數(shù); do {oled.setFont(u8g_font_fub11);//設(shè)置字體大小//在OLBled.drawStr上打印數(shù)據(jù)(0,15,“Temp:”); oled.drawStr(0,40,“Hum:”); oled.drawStr(0,60,“嗨:“); oled.setPrintPos(72,15);//設(shè)置尺寸以打印temperatureoled.print(t,0); oled.println(“C”); oled.setPrintPos(72,40);//設(shè)置尺寸以打印humidoled.print(h,0); oled.println(“%”); oled.setPrintPos(72,60);//設(shè)置尺寸以打印熱量indexoled.print(heat_indexC,0); oled.println(“%”);} while(oled。 nextPage()); delay(2000); }
代碼說(shuō)明
首先,我們包括DHT22傳感器和OLED的庫(kù)。 ‘ U8glib ’庫(kù)適用于OLED,它使代碼非常簡(jiǎn)單。我們將使用“ U8glib ”庫(kù)的功能顯示OLED上的數(shù)據(jù)。
#include #include“DHT.h”接下來(lái),我們定義了連接DHT22傳感器數(shù)據(jù)引腳的引腳,然后定義了DHT傳感器的類型。市場(chǎng)上還有一些其他類型的DHT傳感器。之后,我們初始化了連接OLED的引腳。
#define DHTPIN 7 #define DHTTYPE DHT22 DHT傳感器(DHTPIN,DHTTYPE); U8GLIB_SH1106_128X64 oled(13 ,11,10,9,8); 在設(shè)置功能中,我們給出命令以開始從DHT22傳感器接收值。然后我們?cè)O(shè)置字體并在OLED上打印“歡迎DIYHACKING”5秒鐘。如果您不喜歡,可以更改字體大小。你可以在這里找到不同的字體大小。
sensor.begin(); oled.firstPage(); do {oled.setFont(u8g_font_fur14);//設(shè)置字體大小//在OLED上打印數(shù)據(jù)oled.drawStr(20,15,“歡迎”); oled.drawStr(40,40,“To”); oled.drawStr(5,60,“DIYHACKING “); } while(oled.nextPage()); delay(5000);} 在循環(huán)函數(shù)中,我們從DHT22傳感器讀取濕度和溫度值,然后我們使用溫度計(jì)算熱量指數(shù)濕度。
float h = sensor.readHumidity();//讀取濕度值float t = sensor.readTemperature();//讀取溫度值float fah = sensor.readTemperature(true);//讀取Fahrenheitif中的溫度(isnan(h)|| isnan(t)|| isnan(fah)){//檢查我們是否收到值或notSerial.println(“無(wú)法讀取DHT傳感器!”); return; float heat_index = sensor.computeHeatIndex(fah,h);//計(jì)算Fahrenheitfloat中的熱指數(shù)heat_indexC = sensor.convertFtoC(heat_index);//以攝氏度計(jì)算熱指數(shù)最后,我們?cè)俅卧O(shè)置字體大小并在OLED上打印溫度,濕度和熱指數(shù)。您可以按照上面討論的鏈接更改字體大小,也可以在不同的維度設(shè)置數(shù)據(jù)。
oled.firstPage(); do {oled.setFont(u8g_font_fub11);//設(shè)置字體大小//在OLBED.drawStr上打印數(shù)據(jù)(0,15,“Temp:”); oled.drawStr(0,40,“Hum:”); oled.drawStr(0,60,“嗨:“); oled.setPrintPos(72,15);//設(shè)置尺寸以打印temperatureoled.print(t,0); oled.println(“C”); oled.setPrintPos(72,40);//設(shè)置尺寸以打印humidoled.print(h,0); oled.println(“%”); oled.setPrintPos(72,60);//設(shè)置尺寸以打印熱量indexoled.print(heat_indexC,0); oled.println(“%”);} while(oled。 nextPage()); delay(2000); }
-
OLED
+關(guān)注
關(guān)注
119文章
6221瀏覽量
224937 -
濕度計(jì)
+關(guān)注
關(guān)注
0文章
17瀏覽量
11057 -
溫度計(jì)
+關(guān)注
關(guān)注
6文章
406瀏覽量
78578 -
Arduino
+關(guān)注
關(guān)注
188文章
6477瀏覽量
187962
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
溫度計(jì)使用注意事項(xiàng) 溫度計(jì)與濕度計(jì)的區(qū)別
![](https://file1.elecfans.com/web3/M00/05/60/wKgZPGd_ZhiARhAXAAj23TMJEoI179.png)
![](https://file1.elecfans.com/web3/M00/02/2D/wKgZO2dblJeAam_OAAVRp6pPORo177.png)
![](https://file1.elecfans.com/web3/M00/00/18/wKgZPGdGitaAPWRRAAsk3AvAZ6M362.png)
![](https://file1.elecfans.com/web2/M00/0A/A3/wKgZomckSxaAMpVMAAqP56ACZWw871.png)
![](https://file1.elecfans.com/web1/M00/F3/32/wKgaoWcRzwuAXoP5AASnybfkbAM437.png)
![](https://file1.elecfans.com/web2/M00/09/06/wKgZomcEpiGAactfAAonfn2XCCs387.png)
![](https://file1.elecfans.com/web2/M00/07/3D/wKgZombuHHGAb0goAAW5vxbBB_I531.png)
探針式電子溫度計(jì)由什么組成
探針式電子溫度計(jì)用來(lái)測(cè)量什么的溫度
探針式溫度計(jì)使用的正確流程是
電阻式溫度計(jì)是利用什么原理
![](https://file1.elecfans.com/web2/M00/FF/F5/wKgaomam87-AbaS3AAsGBDjwTh4272.png)
評(píng)論