适合程序员的智能家居

发布时间:2025-01-13 09:20

智能洗衣机如何选择合适的洗涤程序 #生活技巧# #居家生活技巧# #电器使用技巧# #智能电器操作#

#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毕设 智能家居管理系统 程序+论文

随便看看