12405浏览
查看: 12405|回复: 3

[进阶] DHT11数据 显示到 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]

maomaopcy  学徒

发表于 2018-3-16 20:07:56

请问你的两个库文件如何下载安装?
回复

使用道具 举报

yanqi  见习技师

发表于 2019-3-4 13:20:11

直接在arduino加载zip就行了
回复

使用道具 举报

gada888  版主

发表于 2019-3-9 21:50:12

挺棒的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail