适合程序员的智能家居
智能洗衣机如何选择合适的洗涤程序 #生活技巧# #居家生活技巧# #电器使用技巧# #智能电器操作#
#include <EEPROM.h>
#include <IRremote.h>
#include <dht11.h>
#define GM_dpin A15 //光敏电阻
#define dht_dpin 21 //温湿度传感器
#define HW_dpin 22 //红外遥控探头
#define RSensor_dpin 23 //红外探测器人
#define jdq_dpin 29 //继电器
#define light_dpin 13 //指示灯
int ADZ = 45;
int LDZ = 175;
bool IsJDQOpend = false;
bool IsAutoOpen = false;
bool IsPause = false;
IRrecv irrecv(HW_dpin);
decode_results results;
dht11 DHT;
void InitController(){
pinMode(jdq_dpin, OUTPUT);
digitalWrite(jdq_dpin, LOW);
pinMode(light_dpin, OUTPUT);
digitalWrite(light_dpin, LOW);
pinMode(RSensor_dpin, INPUT);
pinMode(GM_dpin, INPUT);
}
void closeLight(){
digitalWrite(light_dpin, LOW);
digitalWrite(jdq_dpin, LOW);
IsJDQOpend = false;
IsAutoOpen = false;
delay(2000);
}
void openLight(){
digitalWrite(light_dpin, HIGH);
digitalWrite(jdq_dpin, HIGH);
IsJDQOpend = true;
delay(2000);
}
void makePause(){
IsPause = !IsPause;
if (IsPause){
for (int i = 0; i < 5; i++)
{
digitalWrite(light_dpin, HIGH);
delay(100);
digitalWrite(light_dpin, LOW);
delay(100);
}
}
else{
digitalWrite(light_dpin, HIGH);
delay(1000);
digitalWrite(light_dpin, LOW);
}
}
void LightController(){
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if (results.value == 0xFFA25D){
closeLight();
}
if (results.value == 0xFFE21D){
openLight();
}
if (results.value == 0xFFC23D){
makePause();
}
irrecv.resume();
}
if (IsPause)return;
int valx = analogRead(GM_dpin);
if (valx < ADZ){
if (!IsJDQOpend){
int val = digitalRead(RSensor_dpin);
if (val == 1)
{
openLight();
IsAutoOpen = true;
}
else
{
return;
}
}
}
else{
if (valx > LDZ && IsJDQOpend && IsAutoOpen){
valx = analogRead(GM_dpin);
if (valx <= LDZ)return;
closeLight();
}
}
}
void setup(){
byte value = EEPROM.read(1);
if (value != 255)ADZ = value;
value = EEPROM.read(2);
if (value != 255)LDZ = value;
Serial.begin(115200);
Serial3.begin(115200);
InitController();
irrecv.enableIRIn();
delay(500);
Serial.println();
Serial.println("[---ZZY Hareware Startup---]");
}
void loop(){
LightController();
InfoQuery();
GetCommand();
}
long timespan;
void InfoQuery(){
unsigned long t = (micros() - timespan) / 1000000;
if (t < 1)return;
timespan = micros();
int valx = analogRead(GM_dpin);
DHT.read(dht_dpin);
String msg = "VMZClub_Home HTP H";
msg += DHT.humidity;
msg += "T";
msg += DHT.temperature;
msg += "L";
msg += valx;
msg += "S";
msg += IsJDQOpend;
msg += "P";
msg += IsPause;
msg += "F";
msg += ADZ;
msg += "/";
msg += LDZ;
Serial3.print(msg);
Serial.println(msg);
}
void GetCommand(){
int cmd[10] = { -1 };
for (int i = 0; i < 10; i++)
{
cmd[i] = Serial3.read();
if (cmd[i] == -1)break;
Serial.println((char) cmd[i]);
}
if (cmd[0] == -1)return;
switch ((char) cmd[0])
{
case 'L':
switch (cmd[1])
{
case '0':
closeLight();
break;
case '1':
openLight();
break;
}
break;
case 'P':
switch (cmd[1])
{
case '0':
IsPause = false;
break;
case '1':
IsPause = true;
break;
}
break;
case 'F':
switch (cmd[1])
{
case'A':
if (cmd[2] != -1) {
ADZ = cmd[2];
EEPROM.write(1, ADZ);
}
break;
case'L':
if (cmd[2] != -1){
LDZ = cmd[2];
EEPROM.write(2, LDZ);
}
break;
}
break;
}
}
网址:适合程序员的智能家居 https://www.yuejiaxmz.com/news/view/705025
相关内容
智能家庭财务管理:选择合适的小程序开发商8 个适合程序员学习新技能的网站
家居小程序定制|为您定制个性化的智能家居体验
智能家居设计:家庭成员的需求
程序员是万能的吗?程序员 != 这些标签
《高效能程序员的修炼》——程序员的八种境界
程序员的工作压力管理与自我调适
看看人家程序员是怎么表白的 !(附教程~)
程序员 != 这些标签,那些被误解的程序员!
springboot毕设 智能家居管理系统 程序+论文