arduino OLED显示温度 ,二氧化碳,和空气质量,使用u8g2库
程序员文章站
2024-02-27 12:44:51
...
材料
arduino nano一个
MQ-2传感器一个
18B20传感器一个
OLED屏幕一个
若干杜邦线
面包板
来个大合照
成品是这个样子
引脚
SCL <–> A5
SDA <–> A4
A0 <–> A3
D0 <–> A2
18B20 <–> A1
肯定会有人想问为啥18B20要接A1
因为我试了一下A6 A7两个引脚不能用
可能是这个原因
OLED屏幕的vcc接3.3v电源
vcc和gnd跳线接电源和地线
需要引用DallasTemperature库、u8g2库、
我们需要u8g2驱动oled屏幕还有串口库与18B20库
废话不多说上代码,想学习这个的话建议手打上去注释比较清楚。
#include <U8g2lib.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#define ONE_WIRE_BUS A1//定义温度引脚
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0,SCL,SDA,U8X8_PIN_NONE);
/*这是定义oled屏幕的信息*/
OneWire onewire(ONE_WIRE_BUS);
DallasTemperature sensors(&onewire);
//定义温度串口
float CO2=0;
float APM=0;
float T=0;
//定义浮点 二氧化碳;空气质量;温度
void setup()
{
u8g2.begin();
sensors.begin();
//初始化屏幕与温度
}
void loop()
{
CO2=analogRead(A3);
APM=analogRead(A2);//这两个数据直接读取数值就好
sensors.requestTemperatures();
T=sensors.getTempCByIndex(0);//获取温度
u8g2.clearBuffer();//清除缓存
u8g2.firstPage();
u8g2.setFont(u8g2_font_ncenB14_tr);//字体
//显示空气质量
u8g2.drawStr(0,15,"APM:");
u8g2.setCursor(55,15);//位置
u8g2.print(APM);
//空气二氧化碳
u8g2.drawStr(0,35,"CO2:");
u8g2.setCursor(50,35);
u8g2.print(CO2);
//温度
u8g2.drawStr(0,55,"T:");
u8g2.setCursor(20,55);
u8g2.print(T);
u8g2.drawCircle(75,45,2,U8G2_DRAW_ALL);
/*这里我打不出来℃所以画一个圆上去*/
u8g2.setCursor(80,55);
u8g2.print("C");
u8g2.sendBuffer();//显示
delay(1000);
}
好了处女篇结束
感兴趣的有什么不懂的可以留言