首页 > 解决方案 > 我的代码没有打开继电器模块中的所有四个通道

问题描述

我正在做一个家庭自动化。我用过arduino-uno、HC-05蓝牙模块和四通道继电器模块。当我从手机输入“z”时,我目前卡住了,我的所有继电器通道都不会充当打开开关。

不知道为什么不能同时打开所有的开关。是arduino还是继电器或代码的问题?

String inputs;
#define relay1 2 //Connect relay1 to pin 2
#define relay2 3 //Connect relay2 to pin 3
#define relay3 4 //Connect relay3 to pin 4
#define relay4 5 //Connect relay4 to pin 5
int val1=0;
int val2=0;
int val3=0;
int val4=0;
int val5=0;

void setup()
{
    Serial.begin(9600); //Set rate for communicating with phone
    pinMode(relay1, OUTPUT); //Set relay1 as an output
    pinMode(relay2, OUTPUT); //Set relay2 as an output
    pinMode(relay3, OUTPUT); //Set relay1 as an output
    pinMode(relay4, OUTPUT); //Set relay2 as an output
    digitalWrite(relay1, HIGH); //Switch relay1 off
    digitalWrite(relay2, HIGH); //Swtich relay2 off
    digitalWrite(relay3, HIGH); //Switch relay3 off
    digitalWrite(relay4, HIGH); //Swtich relay4 off
}

void loop()
{
    while(Serial.available()) //Check if there are available bytes to read
    {
        delay(10); //Delay to make it stable
        char c = Serial.read(); //Conduct a serial read
        if (c == '#'){
            break; //Stop the loop once # is detected after a word
        }
        inputs += c; //Means inputs = inputs + c
    }

    if (inputs.length() >0)
    {
        Serial.println(inputs);

        if(inputs == "a") 
        {
            if(val1==0)
            {
                digitalWrite(relay1,LOW);
                val1=1;
            }
            else
            {
                digitalWrite(relay1,HIGH);
                val1=0;
            }  
                delay(100);
        }
        else if(inputs == "b") 
        {
            if(val2==0)
            {
                digitalWrite(relay2,LOW);
                val2=1;
            }
            else
            {
                digitalWrite(relay2,HIGH);
                val2=0;
            }  
            delay(100);
        }
        else if(inputs == "c") 
        {
            if(val3==0)
            {
                digitalWrite(relay3,LOW);
                val3=1;
            }
            else
            {
                digitalWrite(relay3,HIGH);
                val3=0;
            }  
            delay(100);
        }
        else if(inputs == "d") 
        {
            if(val4==0)
            {
                digitalWrite(relay4,LOW);
                val4=1;
            }
            else
            {
                digitalWrite(relay4,HIGH);
                val4=0;
            }  
            delay(100);
        }
        else if(inputs == "z") 
        {
            if(val5==0)
            {
                digitalWrite(relay1,LOW);
                digitalWrite(relay2,LOW);
                digitalWrite(relay3,LOW);
                digitalWrite(relay4,LOW);
                val5=1;
            }
            else
            {
                digitalWrite(relay1,HIGH);
                digitalWrite(relay2,HIGH);
                digitalWrite(relay3,HIGH);
                digitalWrite(relay4,HIGH);
                val5=0;
            }  
            delay(100);
        }

        inputs="";
    }
}

标签: arduino

解决方案


很多时候继电器使用很多电流。而且arduino的当前容量有限,也许这就是它们不能同时打开的原因。


推荐阅读