我需要检查LED是否每2秒闪烁一次......是否可能?我正在使用Arduino Mega 2560.谢谢。
答案 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++;
}
如果您无法使用接线,可以使用光传感器,以产生类似的信号。
我希望这符合您的需求,因为我不能发表评论,所以我无法获得更多信息。