欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

arduino OLED显示温度 ,二氧化碳,和空气质量,使用u8g2库

程序员文章站 2024-02-27 12:44:51
...

材料
arduino nano一个
MQ-2传感器一个
18B20传感器一个
OLED屏幕一个
若干杜邦线
面包板
来个大合照
arduino OLED显示温度 ,二氧化碳,和空气质量,使用u8g2库
成品是这个样子
arduino OLED显示温度 ,二氧化碳,和空气质量,使用u8g2库
引脚
SCL <–> A5
SDA <–> A4
A0 <–> A3
D0 <–> A2
18B20 <–> A1
肯定会有人想问为啥18B20要接A1
因为我试了一下A6 A7两个引脚不能用
可能是这个原因
arduino OLED显示温度 ,二氧化碳,和空气质量,使用u8g2库
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);
}

好了处女篇结束
感兴趣的有什么不懂的可以留言

相关标签: arduino