简单的arduino代码循环不起作用

时间:2016-05-07 13:21:56

标签: arduino

我正在研究简单的项目,通过手机控制的arduino中继。我正在尝试创建一个循环,这使得继电器只在HIGHLOW之间切换,只发送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; 
    }
  }
}

1 个答案:

答案 0 :(得分:0)

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

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

因此,它可能会像循环一样快地开始切换高/低转换。

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