简单arduino代码中的循环无效

简单arduino代码中的循环无效,arduino,Arduino,我正在做一个简单的项目,通过手机控制的arduino继电器。我试图创建一个回路,使继电器在高和低之间切换,只需将1发送到引脚7。我尝试了多种变体,但都不起作用,我找不到错误。这是密码,提前谢谢` int relay = 7; int prev; //previous value int val; //actual value void setup() { pinMode(relay, OUTPUT); Serial.begin(9600); } void loop() { if(Se

我正在做一个简单的项目,通过手机控制的arduino继电器。我试图创建一个回路,使继电器在
之间切换,只需将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; 
    }
  }
}

当前代码尝试读取串行端口,如果有要读取的内容,则将其设置为变量val

如果它已经读取了一个值,但没有另一个值,则val仍然设置为与以前相同的值

因此,它很可能会以循环的速度开始切换高/低转换

相反,您可以将逻辑代码移动到if(Serial.available()>0)语句中,以便只在按键时调用它