嵌入式学习笔记一个Arduino挂载DHT11温湿度传感器的实时温湿度显示

 在看了b站视频之后想做个温湿度传感器,做完感觉是很基础的练手制作,arduino官方对于DHT温湿度传感器的库还是很方便的,主要难度是液晶的显示

//导入温湿度传感器库
#include<DHT.h>
//导入液晶库
#include<SPI.h>
#include<Wire.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>

在库的部分这部分全部装完可能会有个Adafruit_I2CDevice.h: No such file or directory这个报错。解决方法是去管理库里面装一个Adafruit_BusIO的库。

接线注释在下面代码里面了

//导入温湿度传感器库
#include<DHT.h>
//导入液晶库
#include<SPI.h>
#include<Wire.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>
//声明温湿度引脚
#define DHTPIN 2//dht11的data脚2脚供电接vin
#define DHTTYPE DHT11
DHT dht(DHTPIN,DHTTYPE);
//声明液晶引脚
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
//液晶SCL接5脚SDA接4脚供电我接的3.3v脚
void setup() {
  Serial.begin(115200);
//=========设置DHT11===========
  Serial.println("DHT11 test!");
  dht.begin();
//=========设置液晶============
  Serial.println("OLEDTEST");
  display.begin(SSD1306_SWITCHCAPVCC,0x3c);
  display.clearDisplay();//不加这句会有个超大的adafruit的标志显示在屏幕上
}

void loop() {
  //获取温度值
  float temp_hum_val[2]={0};
  //显示温湿度
  if(!dht.readTempAndHumidity(temp_hum_val)){
    //测试串口监视
    Serial.print("humidity:");
    Serial.print(temp_hum_val[0]);
    Serial.print("%\t");
    Serial.print("temperature");
    Serial.print(temp_hum_val[1]);
    Serial.println(" *C");
//    //屏幕显示
//=========显示湿度================
    display.setTextSize(1);//尺寸
    display.setTextColor(SSD1306_WHITE);//颜色
    display.setCursor(0,0);//坐标
    display.println("Humidity:");
    display.println(temp_hum_val[0]);//显示内容
//=========显示百分号==============
    display.setTextSize(1);
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(27,8);
    display.println(" %");
//=========显示温度===================
    display.setTextSize(1);
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(0,18);
    display.println("Temperature:");
    display.println(temp_hum_val[1]);
//=========显示温度符号===============
    display.setTextSize(1);
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(27,26);
    display.println(" *C");
//=========显示命令==================
    display.display();//执行显示不加这句不显示
    //数据更新
    delay(100);
    display.clearDisplay();//不加这句话数字会重合
    }else{
      Serial.println("failed to get value.");
    }
    delay(100);
}

值得注意的是我用的0.96寸的液晶一个字符长宽各占5个像素点,有了这个坐标就可以轻松算出你想要显示内容的任意位置。

  

使用库和代码都比较新,喜欢自己动手的朋友可以拿来直接用。

本内容仅用于学习交流,如有错误强烈欢迎指正,若内容有侵权请联系我删除。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有灰机诶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值