我正在研究简单的项目,通过手机控制的arduino中继。我正在尝试创建一个循环,这使得继电器只在HIGH
和LOW
之间切换,只发送1到引脚7.我尝试了多种变化,但它永远不会有效,我无法找到错误。这是代码,提前谢谢。
int relay = 7;
int prev; //previous value
int val; //actual value
void setup()
{
pinMode(relay, OUTPUT);
Serial.begin(9600);
}
void loop()
{
if(Serial.available()>0) //send data when recieved
{
val = Serial.read(); //read value
}
if (val == '1')
{
if (prev == '1')
{
digitalWrite(relay, LOW);
prev=val;
}
else
{
digitalWrite(relay, HIGH);
prev=val;
}
}
else if (val == '0');
{
if (prev == '0')
{
digitalWrite(relay, HIGH);
prev=val;
}
else
{
digitalWrite(relay, LOW);
prev=val;
}
}
}
答案 0 :(得分:0)
当前代码尝试读取串行端口,如果有要读取的内容将其设置为变量val。
如果它已经读取了一个值,但没有其他值,则val仍然设置为与之前相同的值。
因此,它可能会像循环一样快地开始切换高/低转换。
相反,您可以将逻辑代码移动到if(Serial.available()> 0)语句中,以便仅在按下键时调用它。