arduino - 我的代码没有打开继电器模块中的所有四个通道
问题描述
我正在做一个家庭自动化。我用过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的当前容量有限,也许这就是它们不能同时打开的原因。
推荐阅读
- spring-boot - springboot2 +webflux + websocket
- javascript - 当我尝试使用“$inc”运算符增加 MongoDB 数据库中的年龄参数时出现“未处理的承诺拒绝警告”
- python - python-doxc table cell align 添加新行
- r - 子集后随机选择行
- javascript - 如何在Javascript中从数组中查找上一个或下一个元素?
- extentreports - 如何在范围报告中应用自定义 CSS 属性
- javascript - 检测组件外部的点击反应方式不是 dom 访问
- javascript - 从不同的数组大小创建表
- javascript - 从节点js中的函数返回一个promise
- postgresql - Postgres 在竞争条件中不存在的插入选择中出现重复的任何机会