如何在一段时间内检查LED是否闪烁?

时间:2017-09-22 12:14:07

标签: arduino led

我需要检查LED是否每2秒闪烁一次......是否可能?我正在使用Arduino Mega 2560.谢谢。

1 个答案:

答案 0 :(得分:1)

有多种选择,具体取决于LED本身。

如果您可以访问LED的接线(我假设为5V!),您可以连接Arduino的中断引脚和公共GND。现在你可以计算“Turn Ons”并将其除以时间,得到一个平均值,该值应等于2。

示例代码将是(未经过测试!):

    #define MEASUREPIN          2       // Watch https://www.arduino.cc/en/Reference/AttachInterrupt for infos

    long measureStartTime{0};           // ms since start of first blink
    long runTime{0};                    // [ms]
    long avgTime;                       // [ms]
    volatile long cycles{0};

    void setup() {
      pinMode(MEASUREPIN, INPUT);
      Serial.begin(9600);

      attachInterrupt(digitalPinToInterrupt(MEASUREPIN), countCycles, RISING);
    }

    void loop() {
      if(measureStartTime == 0 && cycles == 0){  
        Serial.println("Blink not started"); 
      }else{
        if(measureStartTime == 0){
          measureStartTime == millis();
        }else{
          runTime = millis()-measureStartTime;
          avgTime = runTime/cycles;
          Serial.print("Average blink interval: ");
          Serial.print(avgTime);
          Serial.println("ms");
        }    
      }
    }

    void countCycles(){
      cycles++;
    }

如果您无法使用接线,可以使用光传感器,以产生类似的信号。

我希望这符合您的需求,因为我不能发表评论,所以我无法获得更多信息。