Уважаемые знатоки, прошу помочь с написанием кода. Суть такова, необходимо с пульта ИК управлять несколькими светодиодами (включением и выключением на свои кнопки пульта). Все получилось, но не могу управлять парой светодиодов - на них использую функцию millis(). В скече кнопка 1 работает нормально, кнопка 2 включает диоды но они уже не моргают с нужным интервалом - просто загораются.
#include <IRremote.hpp>
#define IR_RECEIVE_PIN 8
uint32_t tmr1;
uint32_t tmr2;
bool flag1;
bool flag2;
#define period1 1500
#define period2 50
#define period3 3500
#define period4 50
int ledPin1 = 3;
int ledPin2 = 9;
int ledPin3 = 10;
void setup() {
Serial.begin (9600);
IrReceiver.begin (IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
pinMode (ledPin1, OUTPUT);
pinMode (ledPin2, OUTPUT);
pinMode (ledPin3, OUTPUT);
}
void loop() {
if (IrReceiver.decode ()) {
switch (IrReceiver.decodedIRData.decodedRawData) {
case 0xEE11FB04:
Serial.println ("кнопка №1");
digitalWrite (ledPin1, !digitalRead (ledPin1));
break;
case 0xED12FB04:
Serial.print ("кнопка №2");
if (millis() - tmr1 >= (flag1 ? period1 : period2)) {
tmr1 = millis();
digitalWrite (ledPin2, flag1);
flag1 = !flag1;
}
if (millis() - tmr2 >= (flag2 ? period3 : period4)) {
tmr2 = millis();
digitalWrite (ledPin3, flag2);
flag2 = !flag2;
}
break;
}
IrReceiver.resume ();
}
}