我家的温湿度测量仪
盛夏来了,又热又潮,不知道家里的气候如何,想着买个温湿度计,但是物价飞涨,工资不涨,没钱买啊!不如自己做个,应该不难,于是开始动手制作。
这个作品的两个主角是数字温湿度传感器 DHT11和LCD4884 Shield 点阵液晶显示器,好像很简单,就是把DHT11的温湿度值采样到Arduino控制器里,然后对采样值进行处理,按照格式发送到LCD4884显示器中显示出来。我也就花了1天半的时间搞出来的。
LCD4884显示器板子直接插在Arduino UNO控制板的母槽引脚上,它与Arduino板子形成层叠关系,但是并未把Arduino可用的端口挡住,因为LCD4884板子上把Arduino的5个模拟端口和6个数字端口引出来了,并布局到LCD4884板子上,以便使用。 于是DHT11温湿度传感器用并排的三根杜邦线插在了模拟端口5上。
把Arduino控制板和DHT11传感器用双面胶带粘在电池盒背面,再把电池盒的电源插头插到Arduino UNO的电源插座,于是我家的温湿度测量计硬件系统就这样快速搭建完成。至于软件系统的编制,我下面慢慢谈。先介绍LCD4884显示器。
LCD4884 shield的一款48x84点阵液晶显示器,Arduino叠层设计,可直接插接到大部分Arduino控制器上使用,可显示中文、英文、图片等。模块具有5个模拟扩展端口和6个数字扩展端口,可连接DFRobot公司大部分的模拟或数字传感器,还具有一个小型的手机摇杆,可实现5个按键操作。LCD4884 shield是制作互动作品不可多得的显示器。
Arduino系统之所以好用,不仅是单片微机本身编程容易,而且给它的外设编程时,只要程序稍复杂些,大都从可以网络上或者厂家得到相应的库文件,LCD4884自然也有好用的库文件,针对Arduino UNO,LCD4884的库文件请下载:
。
LCD4884库文件请放在Arduino IDE软件文件夹里的libraries文件夹里,这个库文件就可用了,如下图。(双击图片,都可以放大看图的)
在Arduino IDE编程环境里,打开库文件里自带的LCD4884样例程序,哇塞,蛮长的,还有些复杂,都是LCD4884板子上的小型手机摇杆“惹得祸”!我这个作品不需要那个摇杆,只需要LCD显示即可,所以我删去了一些“没用的”程序段。
先做做实验,让屏幕显示:“温度:34'C”和”湿度:52 %“。程序如下(有详细注释):
(注意:程序中itoa()函数作用是,把整数数值转换为字符串,不能转换带小数点的浮点数。)#include "LCD4884.h" //声明LCD4884库函数
#include "Word1_cn.h" //内含汉字“温度:”的点阵数组的头文件
#include "Word2_cn.h" //内含汉字“湿度:”的点阵数组的头文件
int num1;
int num2;
char string1;//温度值字符串变量
char string2;//湿度值字符串变量
void setup()
{
lcd.LCD_init( );//初始化LCD4884
lcd.LCD_clear( ); //清屏
//把温度值整数部分转换为字符串
num1=34;
itoa(num1,string1,10);
//把湿度值整数部分转换为字符串
num2=52;
itoa(num2,string2,10);
}
//主程序
void loop()
{
//LCD第6列第1行,显示汉字“温度:”,字体12,显示三个汉字
lcd.LCD_write_chinese(6,1, Word1_cn,12,3,0,0);
//LCD第42列第1行,显示温度值整数部分字符,普通显示
lcd.LCD_write_string(42, 1,string1,MENU_NORMAL);
//显示温度单位
lcd.LCD_write_string(54, 1,"'C",MENU_NORMAL);
//LCD第6列第4行,显示汉字“湿度:”,字体12,显示三个汉字
lcd.LCD_write_chinese(6,4, Word2_cn,12,3,0,0);
//LCD第42列第4行,显示湿度值整数部分字符,普通显示
lcd.LCD_write_string(42,4, string2,MENU_NORMAL);
//显示湿度单位
lcd.LCD_write_string(54,4," %",MENU_NORMAL);
delay(500);//延时0.5s
}看看上面程序,LCD4884可以显示汉字,是通过字模软件提取每个汉字的字模点阵数组来实现的。程序中“温度:”和”湿度:“的字模点阵数组,分别放在红色字体标注的”Word1_cn“和”Word2_cn“头文件里,头文件可以用windows操作系统自带的“记事本”编辑和保存,只不过要记住,文件扩展名为”*.h“。现在问题是用什么字模软件,如何使用它,如何提取它生成的字模点阵字节数据。
LCD汉字字模软件请下载:http://115.com/file/c25immia#
lcd汉字取模软件.zip
这个字模软件是绿色软件,无需安装,解压后,点击字模软件文件夹里的启动图标,运行软件。请按照图示的步骤顺序操作,然后可以看到,字体为12的”温度:“的点阵数组是什么!
全文见博客文章:http://www.eefocus.com/zhang700309/blog/12-06/280255_7a0b3.html
呵呵,这个温湿度计可一点都不便宜丫 老张的帖子都很经典。DIY就是一种享受! 转换字符串的子程序是哪个库里的呢?:Q LCD4884这货不就是LCD5110嘛 zhangdeyue1 发表于 2012-9-20 15:03 static/image/common/back.gif
转换字符串的子程序是哪个库里的呢?
itoa不是标准库里的函数
标准库里的整型转字符串可以用 snprintf 哈哈,5110,老张大师顶;P 太行摄狼 发表于 2012-9-21 07:54 static/image/common/back.gif
哈哈,5110,老张大师顶
就是玩玩,还没搞过图像显示。 这个湿度传感器是数字输出吧,怎么弄的 宜昌城老张 发表于 2012-9-21 14:28 static/image/common/back.gif
就是玩玩,还没搞过图像显示。
我回去的也搞搞,不过看你的帖子真的很享受的,还能学到不少东西
照葫芦画瓢 做了一个就是编译出问题
页:
[1]