最近,我开始研究Arduino微控制器的编程。完成一些基本练习(使LED闪烁,使用离散量和模拟量输入,在LCD显示器上显示信息等)之后,我想制造一些对家庭有用的设备。我决定在房间里做一个温湿度计,并在LCD上指示参数。我还制作了自适应显示器背光灯,它可以根据房间的照明水平来改变亮度。这样可以减少设备的功耗,从而延长电池寿命。在该项目中,我使用了以下组件:1. Arduino Uno板
2.带有I2C协议支持模块的LCD1602显示器。为了减少导线数量并简化显示器的连接,我决定通过I2C协议进行连接,为此,我将特殊的转换器模块焊接到了LCD显示器上。
“3.温湿度传感器DHT11。它允许您确定20-80%的湿度和0-50°C的温度。该传感器有4个输出,但仅使用3个。在电源输出和数据输出之间必须安装10k欧姆的电阻。我使用了一个现成的传感器,该传感器安装在板上并连接了电阻,因此您可以安全地将其连接到Arduino板上。
”4.光敏电阻。它通过一个10kΩ电阻通过上拉至GND的方式连接到Arduino板上。
连接图如下:
光敏电阻连接到Arduino板的模拟输入A0。 DHT11传感器数据线连接到离散引脚2,电源引脚分别连接到+ 5V Arduino,GND引脚连接到Arduino板的接地。 LCD显示器连接到板上电源,SDA引脚连接到A4,SCL引脚连接到A5。背光亮度控制线连接到引脚9,在引脚9上产生PWM信号。下面是源代码:#include "DHT.h"
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
int LD;
#define DHTPIN 2
#define LED 9
#define FOTO 0
DHT dht(DHTPIN, DHT11);
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
pinMode(LED, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
}
int light(int svet)
{
if (svet<25)
{
return 255;
}
if(svet>1020)
{
return 2;
}
else
{
int L=(int)(-0.2*svet+261.262);
return L;
}
}
void loop() {
int f = analogRead(FOTO);
LD=light(f);
delay(2000);
analogWrite(LED, LD);
float h=dht.readHumidity();
float t=dht.readTemperature();
lcd.setCursor(0,0);
lcd.print("Temp ");
lcd.print(t);
lcd.setCursor(0,1);
lcd.print("Hum ");
lcd.print(h);
}
编译
完这段代码后,我们得到了一个这样的设备:将来我计划在Arduino上制造一些更有趣和更复杂的设备。我还制作了一个视频,展示了该设备的工作原理: