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

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

3天内不再提示

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

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

在这个项目中,我们将制作ArduinoOLED温度计和湿度计。我们将从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); }

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OLED
    +关注

    关注

    119

    文章

    6111

    浏览量

    222705
  • 湿度计
    +关注

    关注

    0

    文章

    16

    浏览量

    11002
  • 温度计
    +关注

    关注

    6

    文章

    401

    浏览量

    78258
  • Arduino
    +关注

    关注

    186

    文章

    6451

    浏览量

    185690
收藏 人收藏

    评论

    相关推荐

    仪表工程师带你快速了解远传双金属温度计

    温度计
    华泰天科
    发布于 :2024年07月29日 09:49:39

    不知道双金属温度计的有什么特点?建议仪表小白收藏起来!

    温度计
    jzyb
    发布于 :2024年07月15日 10:36:48

    还不认识双金属温度计!一个视频带你了解

    双金属温度计
    华泰天科
    发布于 :2024年05月16日 17:35:48

    温度计的种类、常见故障及原因分析

    温度计,作为一种能够准确测量和显示 温度变化的工具,在科研、工业、医疗、日常生活等多个领域中都发挥着重要作用。随着科技的发展, 温度计的种类越来越丰富,功能也越来越完善。然而,在使用过程中, 温度计
    的头像 发表于05-10 15:36 626次阅读

    温度计的技术原理及分类温度计的功能特点及应用场景

    温度计,作为测量 温度的专用仪器,在科研、工业、医疗、日常生活等多个领域发挥着至关重要的作用。随着科技的不断进步, 温度计的种类、性能和应用范围也在不断扩展。本文将对 温度计的技术原理、分类
    的头像 发表于05-10 15:28 1023次阅读

    如何制作自己的Arduino电容

    在这个项目中,您将学习如何 制作自己的 Arduino电容 (测量电容器的值,范围从pF到1000的uF)。一般来说,电子爱好者喜欢设计自己的小工具而不是购买。在这个项目中,我们使用两种电容测量方法,即
    的头像 发表于02-25 15:10 993次阅读
    如何<b class='flag-5'>制作</b>自己的<b class='flag-5'>Arduino</b>电容<b class='flag-5'>计</b>

    数字温度计电路图分享

    数字 温度计是一种使用数字显示 温度值的 温度测量仪器。其工作原理是利用热敏电阻、热电偶或红外线等原理测量物体或环境的 温度,并将 温度值以数字形式显
    的头像 发表于02-12 09:28 3582次阅读
    数字<b class='flag-5'>温度计</b>电路图分享

    如何使用Arduino设置热敏电阻来创建温度计

    在本教程中,我们将指导您如何使用 Arduino设置热敏电阻以创建基本 温度计。提供的原理图、试验板图和示例代码将使热敏电阻工作变得简单明了。
    的头像 发表于02-11 10:37 1636次阅读
    如何使用<b class='flag-5'>Arduino</b>设置热敏电阻来创建<b class='flag-5'>温度计</b>

    电子温度计电路图分享

      电子 温度计是一种利用电子技术测量 温度的仪器,它可以测量热电信号、电阻信号、红外线信号等多种形式的热量转换成的信号。电子 温度计的工作原理是基于物质对 温度的反应,即当物体的
    的头像 发表于02-07 16:51 1576次阅读
    电子<b class='flag-5'>温度计</b>电路图分享

    温度计的种类有哪些,各有什么用途

    温度计是用来测量 温度的仪器,常见的 温度计种类有很多,每种 温度计都有其独特的用途和适用范围。以下将详细介绍几种常见的 温度计。 气压
    的头像 发表于01-22 11:34 2452次阅读

    数字显示温度计的PCB设计制作过程

    我们要从外界感应 温度,关键是 温度传感器,在这里用LM35完成,获取了外界的 温度值之后,需要一定的显示装置加以显示。当前流行的方法是通过A/D转换器将模拟量转化为数字量,在这里用ICL7107完成。再通过LED或LCD显示出来。下
    发表于11-06 15:11 1560次阅读
    数字显示<b class='flag-5'>温度计</b>的PCB设计<b class='flag-5'>制作</b>过程

    基于MCS一51温度计的设计实习

    德赢Vwin官网 网站提供《基于MCS一51 温度计的设计实习.pdf》资料免费下载
    发表于10-19 10:47 0次下载
    基于MCS一51<b class='flag-5'>温度计</b>的设计实习

    基于单片机的数码语音温度计电路设计

    德赢Vwin官网 网站提供《基于单片机的数码语音 温度计电路设计.pdf》资料免费下载
    发表于10-18 09:47 1次下载
    基于单片机的数码语音<b class='flag-5'>温度计</b>电路设计

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

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

    五种常见温度计的工作原理

    本文介绍五种常见的工业用 温度计:液体膨胀式 温度计、固体膨胀式 温度计、压力式 温度计、热电偶 温度计、热电阻
    的头像 发表于09-06 16:10 2571次阅读
    五种常见<b class='flag-5'>温度计</b>的工作原理