У меня есть следующий код на Arduino, где я хочу мигать светодиодом со следующими правилами:
Светодиод мигает два раза быстро, а затем останавливается на более длительное время, так что следующий ритмдостигнуто:
ON-ON ---- ON-ON ---- ON-ON ...
Вкл должен длиться 125 мс, короткая пауза должна длиться 75 мс, а длинная 500 мс.
Вот что я сделал до сих пор:
unsigned long flashOn = 125;
unsigned long flashOff = 75; //first pause must be a short one
unsigned long flashCount = 0;
void handleFrontFlash() {
byte beforeState = digitalRead(LED_Front);
flashOff = (flashCount % 2 > 0) ? 75 : 500;
digitalWrite(LED_Front, (millis() % (flashOn + flashOff)) < flashOn);
byte afterState = digitalRead(LED_Front);
if(beforeState == LOW and afterState == HIGH)
flashCount++;
}
Моя идея состояла в том, чтобы посчитать, сколько раз светодиод включается, и использовать модуль по модулю, чтобы определить, является ли циклзавершено.Однако двойная вспышка достигается только при каждой восьмой вспышке светодиода, в остальное время светодиод мигает один раз.
Кто-нибудь может мне помочь?