Arduino制作温湿度计

之前买的arduino套装,里面有一个LCD显示屏,就想用它加上手头的一些传感器做点实用的东西,顺便验证一下显示屏是否可用。于是想到了可以做一个温湿度计。

实验目的:将温湿度传感器采集的温湿度显示在LCD显示屏上。

首先准备工作:

    1、  arduino主板一个

    2、  面包板一块

    3、  连接线若干

    4、  DHT11温湿度传感器1枚

    5、  1602A LCD显示屏一块(带背光)

    6、  可变电阻一个(或1K电阻一枚,但试验之后发现电阻效果不好,最好是可变电阻)

准备好这些器件后,就开始进行连线编码了。这里有很多需要注意的问题,我所使用的LCD显示屏排针是没有焊接到屏幕上的,所以参考例程连线以及编码后发现屏幕根本就不是预期中显示我想让他显示的字符,只是显示一排共16个小方块,可变电阻怎么调节都没有效果。上网查了很多资料也没有搞定,连线检查了多遍可以保证绝对没有错误。于是在淘宝店家那里咨询了一下,店长说需要把排针焊接到屏幕上才行,不然可能接触不良。开始半信半疑,想办法搞到锡焊焊接上之后果然OK了。如果有人遇到这种问题,可以焊接上再试试。


 LCD1602引脚详细说明:

引脚编号

名称

说明

1

Vss

接地 (0V)

2

Vdd

电源 (+5V)

3

Vo

接可变电阻中间引脚

4

RS

Register Select: 
  1: D0 – D7
当做资料解释 
  0: D0 – D7
当做指令解释

5

RW

Read/Write mode: 
  1:
从 LCD 读取资料 
  0: 写资料到 LCD 

6

E

Enable

7

D0

Bit 0 LSB

8

D1

Bit 1

9

D2

Bit 2

10

D3

Bit 3

11

D4

Bit 4

12

D5

Bit 5

13

D6

Bit 6

14

D7

Bit 7 MSB

15

A

背光(电源正极)

16

K

背光(GND)

    

DHT11引脚说明:



先晒一下效果图:(屏幕排针焊反了。。导致不能直接插到面包板上,只好通过若干导线来解决,给大家提个醒,焊接一定注意好别焊反了)




接线:

·    将 LCD的 RS, E, D4, D5, D6, D7 依序接到 12, 11, 5, 4, 3, 2 引脚上

·    将 LCD的 Vss 及 RW 接到 GND,Vdd 接到 +5V

·    可变电阻中间引脚接到 LCD的 Vo,剩下的两个引脚,一支接到 5V,另外一支接到 GND

·    DHT11接数字口8.


    

编码:程序实现上行显示温度,下行显示湿度。DHT11需要库文件,解压后放入libraries。

下载链接:http://pan.baidu.com/s/1mgwjOWo

 代码:

/*
 *LCD RS pin to digital pin 12
 *LCD Enable pin to digital pin 11
 *LCD D4 pin to digital pin 5
 *LCD D5 pin to digital pin 4
 *LCD D6 pin to digital pin 3
 *LCD D7 pin to digital pin 2
 *LCD R/W pin to ground
 *10K resistor:
 *ends to +5V and ground
 *wiper to LCD VO pin (pin 3)
*/
#include 
#include 
#define DHT11PIN 8
dht11 DHT11;
// initialize the library with the numbersof the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
void setup() {
 pinMode(DHT11PIN,OUTPUT);
  //set up the LCD's number of columns and rows:
 lcd.begin(16, 2);
}
 
void loop() {
  intchk = DHT11.read(DHT11PIN);
 lcd.setCursor(0, 0);
 lcd.print("Tep: ");
 lcd.print((float)DHT11.temperature, 2);
 lcd.print("C");
  //set the cursor to column 0, line 1
  //(note: line 1 is the second row, since counting begins with 0):
 lcd.setCursor(0, 1);
  //print the number of seconds since reset:
 lcd.print("Hum: ");
 lcd.print((float)DHT11.humidity, 2);
 lcd.print("%");
 delay(200);
}

源码完整下载:http://pan.baidu.com/s/1muO0Y

 

显示若是模糊可以调节可变电阻达到最佳效果。

参考资料:

http://www.arduino.cn/forum.php?mod=viewthread&tid=2908

http://www.arduino.cn/forum.php?mod=viewthread&tid=1429

你可能感兴趣的:(Arduino)