首页 / 行业
基于Arduino的OLED温度计湿度计的制作教程
2019-08-01 10:39:00

在这个项目中,我们将制作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); }
最新内容
手机 |
相关内容
从概念到生产的自动驾驶软件在环(Si
从概念到生产的自动驾驶软件在环(SiL)测试解决方案,测试,解决方案,自动驾驶,传感器,评估,车辆,自动驾驶软件在环(SiL)测试是一种在计算什么是NFC控制器,NFC控制器的组成、
什么是NFC控制器,NFC控制器的组成、特点、原理、分类、常见故障及预防措施,控制器,分类,模式,移动支付,数据,信号,NFC(Near Field Com位移传感器结构类型及工作原理与应
位移传感器结构类型及工作原理与应用,工作原理,类型,结构,位移传感器,常见,效应,FDV302P位移传感器是一种用于测量物体位移或位置的写flash芯片时为什么需要先擦除?
写flash芯片时为什么需要先擦除?,擦除,芯片,充电,初始状态,存储单元,数据,Flash芯片是一种非易失性存储器技术,用于存储数据并实现固半导体主控技术:驱动自动驾驶革命的
半导体主控技术:驱动自动驾驶革命的引擎,自动驾驶,交通,自动驾驶系统,数据,车辆,自动,随着科技的不断进步,自动驾驶技术已经成为现实基于穿隧磁阻效应(TMR)的车规级电
基于穿隧磁阻效应(TMR)的车规级电流传感器,车规级,效应,导致,自旋,测量,电动汽车,随着电动汽车的快速发展和智能化驾驶技术的成熟,对豪威发布新款 4K 分辨率图像传感器
豪威发布新款 4K 分辨率图像传感器,适用于安防摄像头,分辨率,新款,区域,像素,运行,图像,豪威科技最近发布了一款全新的4K分辨率BAS70智能传感器助力打造数字经济数字世
智能传感器助力打造数字经济数字世界,数字,经济,传感器,助力,智能,及时发现,PCM1801U智能传感器是一种能够感知环境并将感知结果转