在看了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个像素点,有了这个坐标就可以轻松算出你想要显示内容的任意位置。
使用库和代码都比较新,喜欢自己动手的朋友可以拿来直接用。
本内容仅用于学习交流,如有错误强烈欢迎指正,若内容有侵权请联系我删除。