第三篇、Arduino uno、nano、2560用oled0.96寸屏幕显示dht11温湿度传感器的温度和湿度信息——结果导向

news2024/11/17 3:24:42

0、结果

说明:先来看看拍摄的显示结果,如果是你想要的,可以接着往下看。

1、外观

说明:本次使用的oled是0.96寸的,别的规格的屏幕不一定适用本教程,一般而言有显示白色、蓝色和蓝黄一起显示的,虽然dht11温湿度模块形态各异,但是代码都是适用的,因为它们的模块都是一样的。

2、连线

说明:只需要连接三根线。

uno————dht11

    5V--------------VCC
GND--------------GND

    D7--------------DATA

说明:只需要连接四根线。

uno————oled 0.96

    5V--------------VCC
GND--------------GND

 SCL--------------SCL

 SDA--------------SDA

3、源程序

说明:采用非阻塞方式编写,一定时间检测和显示一次温湿度数据,并将对应功能进行函数化,方便移植。

/****************************************dht11 part****************************************/
#include <dht11.h>                                      //include library
#define dht11Pin 7                                      //Define DHT11 sensor connection pins
#define dht11TimeInterval 1000                          //Detect the time interval of a trip

dht11 DHT11;                                            //Instantiate an object
unsigned long dht11Times = 0;                           //Record the device running time
int dhtTemp = 0, dht11Humi = 0;                         //Storage temperature  //Storage humidity
/****************************************oled96 part****************************************/
#include <Arduino.h>                                                          //include library
#include <U8g2lib.h>                                                          //include library
#include <Wire.h>                                                             //include library

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

#define oledTimeInterval 1000                                                 //Detect the time interval of a trip
unsigned long oledTimes = 0;                                                  // Record the device running time

/****************************************set up and loop part*********************************/
void setup() {
  u8g2.begin();                                                               //Example Initialize the IIC
}
void loop() {
  getTempData();                                                              //Obtain the temperature and humidity values
  oledDisplayMath();                                                          //Display math
}
/****************************************oled96 part****************************************/
/*Display math*/
void oledDisplayMath() {
  if (millis() - oledTimes >= oledTimeInterval) {                              //This command is executed once in a while
    oledTimes = millis();

    u8g2.setFont(u8g2_font_ncenB14_tr);                                         //u8g2_font_6x12_tr
    u8g2.setFontDirection(0);
    u8g2.firstPage();
    do {
      u8g2.setCursor(0, 15);                                                    //0 means start at the first column and 15 means end at row 15
      u8g2.print("Temp:");
      u8g2.setCursor(64, 15);                                                    //0 means start at the first column and 15 means end at row 15
      u8g2.print(dhtTemp);
      u8g2.setCursor(96, 15);                                                    //0 means start at the first column and 15 means end at row 15
      u8g2.print(" C");
      u8g2.setCursor(0, 31);                                                    //0 means start at the first column and 15 means end at row 15
      u8g2.print("Humi: ");
      u8g2.setCursor(64, 31);
      u8g2.print(dht11Humi);
      u8g2.setCursor(96, 31);                                                    //0 means start at the first column and 15 means end at row 15
      u8g2.print(" %");
    } while ( u8g2.nextPage() );
  }
}
/****************************************dht11 part****************************************/
/*Obtain the temperature and humidity values*/
void getTempData() {
  if (millis() - dht11Times >= dht11TimeInterval) {
    dht11Times = millis();
    DHT11.read(dht11Pin);                               //Update all sensor information
    dhtTemp = DHT11.temperature;
    dht11Humi = DHT11.humidity;

    Serial.print("Temperature: ");
    Serial.print(dhtTemp);
    Serial.print(" (C), ");
    Serial.print("Humidity: ");
    Serial.print(dht11Humi);
    Serial.println(" (%).");
  }
}

4、注意事项

说明:需要在线下载<u8glib.h>库文件和<dht11.h>库文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/546866.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【小沐学Web】Node实现Web图表功能(ECharts.js,React)

&#x1f388;&#x1f388;&#x1f388;Python实现Web图表功能系列&#xff1a;&#x1f388;&#x1f388;&#x1f388;1&#x1f388;【Web开发】Python实现Web图表功能&#xff08;D-Tale入门&#xff09;&#x1f388;2&#x1f388;【Web开发】Python实现Web图表功能&a…

Fragment 要你何用?2.0版本

前言 在之前的文章里有分析过Activity、Fragment、View之间的关联&#xff0c;也简单分析了Fragment的原理。 本篇将对Fragment被高频使用的场景以及一些坑点作分析&#xff0c;通过本篇文章&#xff0c;你将了解到&#xff1a; 老生常谈&#xff1a;为什么需要Fragment?Frag…

Java 创建一个大文件

有时候&#xff0c;我们在对文件进行测试的时候&#xff0c;可能需要创建一个临时的大文件。 那么问题来了&#xff0c;在 Java 中如何创建大文件呢&#xff1f; 问题和解决 有些人想到的办法就是定义一个随机的字符串&#xff0c;然后重复很多次&#xff0c;然后将这个字符…

第一篇:强化学习基本原理通俗介绍

你好&#xff0c;我是zhenguo&#xff08;郭震&#xff09; 今天强化学习第一篇&#xff1a;白话介绍强化学习的基本原理 强化学习是一种机器学习方法&#xff0c;旨在让智能体&#xff08;agent&#xff09;通过与环境的交互学习如何做出最优的行动选择以获得最大的累积奖励。…

Rust每日一练(Leetday0004) 正则表达、盛水容器、转罗马数字

目录 10. 正则表达式匹配 Regular Expression Matching &#x1f31f;&#x1f31f;&#x1f31f; 11. 盛最多水的容器 Container with most water &#x1f31f;&#x1f31f; 12. 整数转罗马数字 Integer to Roman &#x1f31f;&#x1f31f; &#x1f31f; 每日一练…

new和delete用法详解

本篇文章对C中的new和delete进行详解。在讲解new和delete时&#xff0c;我们会对比C语言中的malloc和free&#xff0c;看看两者的区别和相似之点。希望本篇文章会对你有所帮助。 文章目录 一、什么是new和delete 二、new和delete的用法 2、1 new和delete操作内置类型 2、2 new和…

中青宝两大议案被否!散户又“赢了”?

21.93万股&#xff0c;就能决定股东大会上的议案成败——离奇的一幕在中青宝上演。 5月18日&#xff0c;中青宝召开2022年度股东大会。会上&#xff0c;《关于2023年度日常关联交易预计的议案》《关于非独立董事2023年度薪酬方案的议案》两项议案被否。 此次股东大会上&#x…

linux设置静态ip与windows互相ping通、设置静态ip之后不能联网和网络服务重启失败的问题

1.虚拟机linux设置静态ip与windows互相ping通及设置静态ip之后不能联网问题一站式解决&#xff1a; 转载&#xff1a;https://www.codenong.com/cs105332412/ 2.遇到网络服务重启失败的问题 按照提示查看网络服务的状态 看到这篇博文https://www.cyberithub.com/failed-to-s…

Ae 效果详解:Keylight(1.2)

Ae菜单&#xff1a;效果/Keying/Keylight(1.2) Effects/Keying/Keylight(1.2) Keylight 是一款工业级的蓝幕或绿幕键控器&#xff0c;核心算法由 Computer Film 公司开发&#xff0c;并由 The Foundry 公司进一步开发移植到 Ae。 Keylight 在制作专业品质的抠像效果方面表现出色…

第11章_数据处理之增删改

第11章_数据处理之增删改 1. 插入数据 1.1 实际问题 解决方式&#xff1a;使用 INSERT 语句向表中插入数据。 1.2 方式1&#xff1a;VALUES的方式添加 使用这种语法一次只能向表中插入一条数据。 情况1&#xff1a;为表的所有字段按默认顺序插入数据 INSERT INTO 表名 VAL…

Python 学习 2022.08.28 周日

文章目录 一、 概述1.1&#xff09; 之前写的文章&#xff1a;1.2) 基础点1.3) 配置1.4) Python2 和 Python3 的区别1.5&#xff09; 相关问题跟踪解决1.6) 其他 一、 概述 1.1&#xff09; 之前写的文章&#xff1a; 【Python大系】Python快速教程《Python 数据库 GUI CGI编…

clion开发stm32之flash驱动(f4系列)

前言 使用的开发工具(clionmsys2openocd)使用的开发版芯片stm32f407vet6参考手册为stm32f4中文参考文档 查看中文手册 ## 驱动代码 头文件(bsp_flash.h) #ifndef STM32F103VET6_PROJECT_BSP_FLASH_H #define STM32F103VET6_PROJECT_BSP_FLASH_H #include "sys.h"…

华硕幻X 2023 Windows11原厂预装系统 工厂恢复安装带ASUSRecevory一键还原

华硕幻X 2023 Windows11原厂预装系统 工厂模式恢复安装带ASUSRecevory一键还原 文件地址&#xff1a;https://pan.baidu.com/s/1snKOsH3OMl3GZLqeAf-GLA?pwd8888 华硕工厂恢复系统 &#xff0c;安装结束后带隐藏分区以及机器所有驱动软件 需准备一个16G左右空u盘进行恢复 …

chatgpt赋能Python-python3怎么用

Python3入门指南&#xff1a;从基础到进阶 Python是一款简单而强大的编程语言&#xff0c;具有易读性、易学性和高生产性的特点。它广泛应用于数据分析、机器学习、Web开发、自动化测试等领域。Python的第三个版本&#xff08;Python3&#xff09;相对于第二个版本&#xff08…

网络互连与互联网 - 路由信息协议(RIP)

文章目录 1 概述2 RIP 要点2.1 根据 距离矢量&#xff08;或 跳数&#xff09;寻找最佳路由2.2 RIP 三大要点2.3 基本工作过程2.4 路由条目的更新规则2.5 RIPv1 和 RIPv2 区别2.6 "坏消息传播慢" 的问题 3 网工软考真题 1 概述 #mermaid-svg-DFp89TU9n8BiJLTr {font-…

K8s scheduler 调度:NodeName、NodeSelector与Taint

1 前言 上篇介绍了k8s调度的预选和优选策略&#xff0c;K8s scheduler 调度&#xff1a;预选和优选策略。 本篇介绍三个影响pod调度的配置&#xff1a;NodeName、NodeSelector与Taint。 2 NodeName NodeName是根据node的名称调度pod。可用于强制约束Pod跳过默认的Kubernetes调度…

Hive on Spark调优(大数据技术6)

第6章 Join优化 6.1 Hive Join算法概述 Hive拥有多种join算法&#xff0c;包括common join&#xff0c;map join&#xff0c;sort Merge Bucket Map Join等。下面对每种join算法做简要说明&#xff1a; 1&#xff09;common join Map端负责读取参与join的表的数据&#xff…

Hive on Spark调优(大数据技术8)

第8章 任务并行度优化 8.1 优化说明 对于一个分布式的计算任务而言&#xff0c;设置一个合适的并行度十分重要。在Hive中&#xff0c;无论其计算引擎是什么&#xff0c;所有的计算任务都可分为Map阶段和Reduce阶段。所以并行度的调整&#xff0c;也可从上述两个方面进行调整。 …

Maven基础学习---3、Maven的使用(命令行)

1、根据坐标创建Maven工程 1、Maven核心概念&#xff1a;坐标 &#xff08;1&#xff09;数学中的坐标 使用x、y、z三个[向量]作为空间的坐标系&#xff0c;可以在[空间]中唯一定位到一个[点]。 &#xff08;2&#xff09;Maven中的坐标 1、向量说明 使用三个[向量]在[Maven…

MapReduce排序

MapTask和ReduceTask均会对数据按照key进行排序。该操作属于Hadoop的默认行为。任何应用程序中的数据均会被排序&#xff0c;而不管逻辑上是否需要。 默认排序是按照字典顺序排序&#xff0c;且实现该排序的方法是快速排序。 对于MapTask&#xff0c;它会将处理的结果暂时放到…