眨眼草图对我来说并不清楚

时间:2017-08-01 09:35:32

标签: c arduino led

代码作业是让Arduino闪烁,在快速闪烁和慢速闪烁之间交替。 LED应闪烁5次,每半秒闪烁一次,然后再闪烁5次,每两秒闪烁一次。只要Arduino接通电源,LED就会以这种交替方式继续闪烁。

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
bool isChange=true;

void setup() {
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);
}

void loop() {
  for(int i=0;i<5;i++) {
    digitalWrite(led,HIGH);
    // turn the LED on (HIGH is the voltage level)
    if(isChange)
      delay(500);
    else
      delay(2000);
    digitalWrite(led,LOW);
   // turn the LED off by making the voltage LOW
    if(isChange)
      delay(500);
    else
      delay(2000);
  }
  isChange=isChange?false:true;
}

我不知道循环如何执行10次以及ischange在代码的最后一行中的工作方式。

1 个答案:

答案 0 :(得分:1)

当你到达loop()函数的末尾时,arduino会再次调用它,使for循环重新开始。这就是为什么它眨眼超过五次。

ischange = ischange ? false : true;

称为三元运算符

是语法糖
if (ischange)
    ischange = false;
else
    ischange = true;

可以概括为

condition ? expression A : expression B

如果条件为真,则执行表达式A,否则执行表达式B.此表达式的结果可由赋值运算符捕获,例如代码中的情况。

type variable_name = condition ? expression A : expression B