0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino的OLED温度计湿度计的制作教程

454398 来源:工程师吴畏 2019-08-01 10:39 次阅读

在这个项目中,我们将制作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
    +关注

    关注

    118

    文章

    5984

    浏览量

    221424
  • 湿度计
    +关注

    关注

    0

    文章

    16

    浏览量

    10991
  • 温度计
    +关注

    关注

    6

    文章

    397

    浏览量

    78118
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184826
收藏 人收藏

    评论

    相关推荐

    电接点双金属温度计-全球百科 #从入门到精通,一起讲透元器件!

    元器件温度计
    嘉可自动化仪表
    发布于 :2023年12月11日 08:20:47

    基于51单片机和AHT10温湿度传感器的温湿度计源码

    一款基于51单片机和AHT10温湿度传感器的温湿度计源码。
    发表于 10-09 08:39

    DS8B2数字温度计的设计、装配与调试(2)#传感器

    传感器数字温度计
    未来加油dz
    发布于 :2023年08月20日 09:33:18

    DS8B2数字温度计的设计、装配与调试(1)#传感器

    传感器数字温度计
    未来加油dz
    发布于 :2023年08月20日 09:32:34

    基于RJM8L003的食品温度计解决方案

    食品温度计是一种可以测量食品温度的专业工具,主要用于食品加工、储存、运输、销售等环节中,确保食品卫生安全和品质保持不变。随着人们对食品安全和品质的重视,以及对食品温度监测的要求越来越高,食品
    发表于 08-03 16:40

    Arduino DIY模拟温度计

    电子发烧友网站提供《Arduino DIY模拟温度计.zip》资料免费下载
    发表于 07-10 11:21 0次下载
    <b class='flag-5'>Arduino</b> DIY模拟<b class='flag-5'>温度计</b>

    Arduino伺服电机温度计

    电子发烧友网站提供《Arduino伺服电机温度计.zip》资料免费下载
    发表于 06-27 10:46 0次下载
    <b class='flag-5'>Arduino</b>伺服电机<b class='flag-5'>温度计</b>

    Arduino制作OLED位图图形

    电子发烧友网站提供《在Arduino制作OLED位图图形.zip》资料免费下载
    发表于 06-16 10:34 1次下载
    在<b class='flag-5'>Arduino</b>中<b class='flag-5'>制作</b><b class='flag-5'>OLED</b>位图图形

    热电偶温度计

    有没有工程师可以写高温热电偶的温度计
    发表于 06-15 09:15

    英飞凌PSoc62超低功耗温湿#超低功耗 #温湿度计

    英飞凌湿度计
    华仔stm32
    发布于 :2023年06月03日 21:42:59

    英飞凌PSoC62 实现超低功耗温湿度计

    英飞凌PSoC62是一款Cortex-M0+与Cortex-M4的双内核MCU,其有着非常优秀的超低功耗性能。 温度计的器材 英飞凌PSoC62开发板 这是一款英飞凌与RT-Thread联合制作
    发表于 06-03 10:14

    想要构建一个简单的wifi温度计,在哪里可以找到这样简单的工具包和源代码?

    我们正计划构建一个简单的 wifi 温度计。内置热电偶。可充电电池。Android 应用程序以 F 和 C 显示温度。电池百分比。任何演示套件随时可用?请告诉我们在哪里可以找到这样简单的工具包和源代码?
    发表于 06-01 09:15

    使用ESP8266-01模块的太阳能wifi泳池温度计,如何将模拟传感器信号直接连接到AD输入?

    泳池温度计,但它们似乎都与专用接收器(桌面或壁挂式)配对,无法通过手机应用程序或网络浏览器访问。 所以我的想法是让手机/网络浏览器可以使用池温度信息,并使用另一个 ESP8266-01 模块制作一个
    发表于 05-30 06:52

    00009 齿轮温度计 ,创客的温度计

    电工技术经验分享
    学习电子知识
    发布于 :2023年05月09日 20:56:42