#include
bool flag0 = false;
bool flagl = false;
bool flag2 = false;
bool flag3 = false;
bool flag4 = false;
bool flag5 = false;
bool flag6 = false;
bool flag7 = false;
bool flag8 = false;
bool flag9 = false;
void setup() {
Serial.begin(9600);
for (int i =4; i <= 13; i++) {
pinMode(i, OUTPUT);
}
IrReceiver.begin(2);
}
void loop() {
if (IrReceiver.decode()) {
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
switch (IrReceiver.decodedIRData.decodedRawData) {
case 0xF30CBF00:
flag0 = !flag0;
break;
case 0xEF10BF00:
flagl = !flagl;
break;
case 0xEE11BF00:
flag2 = !flag2;
break;
case 0xED12BF00:
flag3 = !flag3;
break;
case 0xEB14BF00:
flag4 = !flag4;
break;
case 0xEA15BF00:
flag5 = !flag5;
break;
case 0xE916BF00:
flag6 = !flag6;
break;
case 0xE718BF00:
flag7 = !flag7;
break;
case 0xE619BF00:
flag8 = !flag8;
break;
case 0xE51ABF00:
flag9 = !flag9;
break;
}
digitalWrite(4, flag0);
digitalWrite(5, flagl);
digitalWrite(6, flag2);
digitalWrite(7, flag3);
digitalWrite(8, flag4);
digitalWrite(9, flag5);
digitalWrite(10,flag6);
digitalWrite(11,flag7);
digitalWrite(12,flag8);
digitalWrite(13,flag9);
IrReceiver.resume();
}
}
Нажав на красную кнопку на пульте необходимо чтобы все светодиоды выключились.
При нажатии на кнопку влево включается светодиод слева от текущего, при нажатии на кнопку вправо - соседний светодиод справа.
Если сейчас включен первый светодиод и вы нажали влево, то должен включится светодиод с другой стороны, тобишь последний
и такая же логика с другой стороны (если последний включен и нажали вправо, то включается первый)
Answers & Comments
#include <IRremote.h>
const int numLEDs = 10; // количество светодиодов
int LEDpins[numLEDs] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // пины светодиодов
bool LEDflags[numLEDs] = {false}; // флаги светодиодов
IRrecv IrReceiver(2);
decode_results results;
void setup() {
Serial.begin(9600);
for (int i = 0; i < numLEDs; i++) {
pinMode(LEDpins[i], OUTPUT);
}
IrReceiver.enableIRIn();
}
void loop() {
if (IrReceiver.decode(&results)) {
switch (results.value) {
case 0xF30CBF00: // красная кнопка - выключить все светодиоды
for (int i = 0; i < numLEDs; i++) {
LEDflags[i] = false;
digitalWrite(LEDpins[i], LOW);
}
break;
case 0xEF10BF00: // кнопка влево - включить светодиод слева
for (int i = 0; i < numLEDs; i++) {
if (LEDflags[i]) {
LEDflags[i] = false;
digitalWrite(LEDpins[i], LOW);
int prevIndex = (i - 1 + numLEDs) % numLEDs; // индекс предыдущего светодиода с учетом крайнего случая
LEDflags[prevIndex] = true;
digitalWrite(LEDpins[prevIndex], HIGH);
break;
}
}
break;
case 0xEE11BF00: // кнопка вправо - включить светодиод справа
for (int i = 0; i < numLEDs; i++) {
if (LEDflags[i]) {
LEDflags[i] = false;
digitalWrite(LEDpins[i], LOW);
int nextIndex = (i + 1) % numLEDs; // индекс следующего светодиода с учетом крайнего случая
LEDflags[nextIndex] = true;
digitalWrite(LEDpins[nextIndex], HIGH);
break;
}
}
break;
}
IrReceiver.resume();
}
}