DHT11数据 显示到 LCD12864 上面

2016-12-202.3万
AI 快速预览详细 收起
本文介绍了如何使用Arduino Mega 2560将DHT11温湿度传感器的数据显示在LCD12864屏幕上。文章提供了详细的接线方法、代码实现及故障排查步骤。通过自定义函数checkData(int chk)来检测传感器是否正常,并在LCD12864上显示错误代码。适合初学者学习,帮助快速上手并展示成果。
本人小白,正在自学LCD12864,然后试试将DHT11上的数据打印到LCD12864屏幕上面。因为初学,如有不足,欢迎指教。
先说一下环境:
Arduin IDE版本:1.6.13
Arduino Mega 2560 点击购买
DHT11模块 点击购买
LCD12864 点击购买

接线的话,DHT11模块我接在了数字27端口上。

下面是代码,我在我这里是成功运行的。

[mw_shl_code=c,true] //******************************
//*Abstract: Read value of temperature and humidity of air
//*          and print data on LCD 12864 screen.
//*
//*Version:V1.0
//*Author:Ran Tao @ UOW
//*Date:December.20.2016
//******************************
//导入LCD12864驱动库和DHT11库
#include <U8glib.h>
#include <dht11.h>

//创建一个u8g(LCD12864)对象
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8); // U8GLIB_PCD8544(sck/sclk, mosi/sdin, ce/sce, d0/dc, reset)
//创建一个DHT11对象
dht11 DHT11;

//设置DHT11 数字端口:D27
#define DHT11_PIN 27

//自定义一个函数来检测传感器是否正常
void checkData(int chk){
  if(chk!=0){
    //当chk为:-2时,表示传感器连接异常
    //传感器连接正常时,chk应为:0
    u8g.setPrintPos(0,15);
    u8g.print("Error Code: ");
    u8g.setPrintPos(35,35);
    u8g.print(chk);
    u8g.drawStr(0, 55, "Read Data Error!");
  }else{
    drawScreen();
  }
}

//自定义一个函数用来打印屏幕
void drawScreen(){
  drawTitle();
  drawData();
  u8g.setFont(u8g_font_unifont);
  u8g.drawStr(0, 55, "Hello World!");
}

//自定义一个函数用来打印温度湿度标题
void drawTitle(){
  //设置文本字体
  u8g.setFont(u8g_font_unifont);
  //指定位置打印字符串
  //语法:
  //    LCD对象名.drawStr(X轴位置, Y轴位置, "要打印的内容");
  u8g.drawStr(0, 18, "TMP:");
  u8g.drawStr(0, 36, "HMD:");
  u8g.drawStr(68, 18, "C");
  u8g.drawStr(68, 36, "%");
}

//自定义一个函数用来打印数据
void drawData(){
  //设置文本字体
  u8g.setFont(u8g_font_unifont);
  //对下文内容设置起始位置
  //语法:
  //    LCD对象名.setPrintPos(X轴位置, Y轴位置)
  u8g.setPrintPos(48,18);
  //打印到LCD屏幕上
  //语法:
  //    LCD对象名.print(变量名,字符串)
  //注意: 使用前需要使用setPrintPos()函数来设置位置
  u8g.print(DHT11.temperature);
  u8g.setPrintPos(48,36);
  u8g.print(DHT11.humidity);
}

void setup(){
  //屏幕内容旋转180°
  u8g.setRot180();// rotate screen
}

void loop(){
  //从传感器端口读取数据
  int check = DHT11.read(DHT11_PIN);

  // u8g loop
  u8g.firstPage();
  drawScreen();
  do {
    checkData(check);
  } while( u8g.nextPage() );
  //每秒刷新一次
  delay(1000);
}[/mw_shl_code]

DHT11数据 显示到 LCD12864 上面图1

后面还会更新详细的LCD12864使用说明,感觉官方给的文档太少,所以自己也找来了一些资料。后面分享给大家。

我已经把u8glib库文件上传到了百度网盘。
u8glib 库文件下载地址: [url=https://pan.baidu.com/s/1pLcwDLp]百度网盘[/url]

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
gada888
gada888
挺棒的
yanqi
yanqi
直接在arduino加载zip就行了
maomaopcy
maomaopcy
请问你的两个库文件如何下载安装?
- 没有更多了 -