步骤1:接线
连接所有部件,如示意图所示(fritizng文件和部件可从下面下载)
在arduino顶部滑动时,我没有显示lcd接线。
请记住在5v和sig节点之间放置4.7 kohm电阻。 od dht22。您可以购买带有内置电阻器的dht传感器,如果不需要的话。
要连接任何东西到继电器-继电器中的电源分别接到com1和com2,应打开设备并断开电源。关闭到no1和no2(否–常开)。
我正在使用screw shield-所以我不必焊接任何东西
步骤2:代码-在网站上看起来很糟,但抓取了附件文件
/*sky control - temperature and humidity sensor with relays made by arkadiuszo2 v1
* please read comments
* shopping list includes:
* 1. arduino uno
* 2. dht22 sensor
* 3. 2 channel relay - 5v
* 4. dfrobot lcd keypad shield
*
* in v2 i will add air quality sensor based on sharp‘s gp2y1010au0f
*/ #include
#include
#include //starting values after boot up, you can change them
int temp = 25;
int hum = 50; //for dht22 (am2023)
#define dhtpin 15
#define dhttype dht22
const int relay1 = 18;
const int relay2 = 19;
dht dht(dhtpin, dhttype);
liquidcrystal lcd(8, 9, 4, 5, 6, 7);
dfr_key keypad;
int localkey = 0;
string keystring = “”;
int lcd_key = 0;
int adc_key_in = 0;
#define btnright 0
#define btnup 1
#define btndown 2
#define btnleft 3
#define btnselect 4
#define btnnone 5
int read_lcd_buttons(){
adc_key_in = analogread(0);
if (adc_key_in 》 1000) return btnnone;
if (adc_key_in 《 50) return btnright;
if (adc_key_in 《 250) return btnup;
if (adc_key_in 《 450) return btndown;
if (adc_key_in 《 650) return btnleft;
if (adc_key_in 《 850) return btnselect;
}
void setup()
{
pinmode(relay1, output);
pinmode(relay2, output);
lcd.begin(16, 2);
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“sky control v1”);
lcd.setcursor(0, 1);
lcd.print(“instr on select”);
delay(2500);
serial.begin(9600);
dht.begin();
delay(1000);
lcd.clear();
//sample rate (default 10 ms)
keypad.setrate(10);
digitalwrite(relay1, high);
digitalwrite(relay2, high);}
void loop() {
float h = dht.readhumidity();
float t = dht.readtemperature();
if (isnan(t) || isnan(h)) { //checking sensor operation
lcd.begin(16, 2);
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“sensor broken!!”);
delay(10000);
} else {
//you can change values (step) after each button press, default is 1’c for step and 5% humidity
lcd_key = read_lcd_buttons();
switch (lcd_key){
case btnleft:{
temp = temp +1;
break;
}
case btnright:{
temp = temp - 1;
break;
}
case btnup:{
hum = hum + 5;
break;
}
case btndown:{
hum = hum - 5;
break;
}
case btnselect:{
lcd.begin(16, 2);
lcd.clear();
lcd.setcursor(0, 0);
lcd.print(“hum up/down +-5%”);
lcd.setcursor(0, 1);
lcd.print(“temp l/r +-1”);
lcd.print((char)223);
lcd.print(“c”);
delay (5000);
break;
}
}
lcd.setcursor(0, 0);
lcd.print(“hum: ”);
lcd.print(h);
lcd.print(“%”);
lcd.print(“(”);
lcd.print(hum);
lcd.print(“%)”);
lcd.setcursor(0, 1);
lcd.print(“tem: ”);
lcd.print(t);
lcd.print((char)223);
lcd.print(“(”);
lcd.print(temp);
lcd.print((char)223);
lcd.print(“)”);
//adding this so the humidifier will not be powering on and off constantly (humidifier will exceed upper limit by 10% - if you need exact values comment this section and uncomment next !!
int h = hum + 10;
if(h 《 hum ) digitalwrite(relay1, low);
else if (h 》= h) digitalwrite(relay1, high);
/* 《- uncomment this if you need exact values but comment 5 lines above
if(h 《 hum ) digitalwrite(relay1, low);
else digitalwrite(relay1, high);
*/
if(t 《 temp ) digitalwrite(relay2, low);
else digitalwrite(relay2, high);
}
}
第3步:操作
按“选择”后,您将看到基本的操作说明
“向上/向下”将预设湿度增加+ -5%
左/右将预设温度改变+ -1°c
在代码中,您会发现加湿器将超出预设限制10%-这样就可以了不会一直在打开和关闭电源,即。您已将目标湿度设置为50%-继电器将在读数达到49%时打开加湿器的电源,并在读数达到60%时关闭加湿器的电源。您可以通过修改代码来更改它。
超声波传感器的四个创新应用
FEC衍生的SEI膜可以抑制薄膜电极的开裂
AR与VR在过去一年的进展如何?
为什么现在的人工智能助理都像人工智障
基于ASP.net的网上书店系统安全性研究
如何制造温度和湿度控制器
直流模块:12V/15V升高压至10000V/12000V
这项电磁兼容国家标准正式发布,今年12月实施
探析5G网联无人机整体解决方案
5G、AI等被写进《工业互联网创新发展行动计划(2021-2023年)》
RFID(WIP)是一种灵活的项目和组件跟踪解决方案
超高清视频产业发展现状和趋势分析
2n系列三极管
赛普拉斯PSoC 4:让设计方案满足未来之需
哈深智材:人才济济,积累今日实力;千锤百炼,成就来日辉煌
中科院宁波材料所“智能全向移动机器人”项目荣获“好设计”金奖
三星要把Bixby实体化搭载智能家庭助手 但开发进度缓慢
如何通过HP 547A电流示踪器追踪ESD电流路径
路灯控制器怎么调?路灯控制器怎么设置?
联想手机在国内市场打好翻身仗 目前处境十分的尴尬