Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复此arduino代码?(详细信息如下)_Arduino - Fatal编程技术网

如何修复此arduino代码?(详细信息如下)

如何修复此arduino代码?(详细信息如下),arduino,Arduino,我有一辆Arduino Mega 2560。我有一个LED接地并通过试验板连接到引脚12,还有一个开关通过试验板连接到引脚7和引脚2。我已经写了这个程序,这样一个按钮按下改变LED的状态之间的开和关。所有的组件似乎都在工作,所以我认为这是一个编码问题。这是我的密码: boolean running = false; boolean ledon = true; void statechange() { if(running == false) { running = true;

我有一辆Arduino Mega 2560。我有一个LED接地并通过试验板连接到引脚12,还有一个开关通过试验板连接到引脚7和引脚2。我已经写了这个程序,这样一个按钮按下改变LED的状态之间的开和关。所有的组件似乎都在工作,所以我认为这是一个编码问题。这是我的密码:

boolean running = false;
boolean ledon = true;
void statechange() {
  if(running == false) {
    running = true;
    ledon = !ledon;
    if(led on) {
      digitalWrite(12, HIGH);
    } else {
      digitalWrite(12, LOW);
    }
    delay(1000);
    running = false;
  }
}

void setup() {
  pinMode(12, OUTPUT);
  pinMode(7, OUTPUT);
  digitalWrite(7, HIGH);
}

void loop() {
  attachInterrupt(0,statechange,CHANGE);
}

我没有收到任何错误,只是不工作,不管发生什么,LED都会熄灭。

你确定这是正确的吗

伊夫莱登 { 数字写入12,高; } 其他的 { 数字写入12,低; } 看起来,如果LED亮起,请将其打开,否则,如果LED熄灭,请将其关闭

难道不是:

伊夫莱登 { 数字写入12,低; 莱顿=假; } 其他的 { 数字写入12,高; 莱顿=真; } 如果使用ledon跟踪状态,但独立于If语句更改状态,则两者可能会不同步。特别是如果其他地方的代码可以改变莱顿的状态

另一件让我困扰的事情是:ifrunning==false


如果这是真的,例如你的硬件?如果没有运行,那么此时尝试更改I/O状态有什么意义

我想,变量在那一段代码之前被翻转。@user3102599一旦您知道它被更改为什么,我就会实现它。。。请参阅编辑。实际上,我只想在按下按钮时LED改变状态,而不是闪烁,但无论如何都要感谢。在这种情况下,您的代码可以简化。我会更新我的答案。
boolean ledon = true;

void statechange()
{
    ledon = !ledon;
    digitalWrite(12, ledon ? HIGH : LOW);
}

void setup()
{
  pinMode(12, OUTPUT);
  pinMode(7, OUTPUT);
  digitalWrite(7, HIGH);

}

void loop()
{
    attachInterrupt(0,statechange,CHANGE);
}