Добрый вечер. Нужна помощь. Задача такова: При удержании кнопки на плате и нажатии кнопки на пульте ду - код кнопки записывается в переменную для последущего использования. Вот с этим и проблема. Кусок кода: Код (C++): if (irrecv.decode(&results)&& digitalRead(Knopka1) == 0) { code1 = results.value; Serial.println(results.value); Serial.println(code1); digitalWrite(Rele1,HIGH); delay(200); digitalWrite(Rele1,LOW); delay(200); Serial.println(code1); digitalWrite(Rele1,HIGH); delay(200); digitalWrite(Rele1,LOW); delay(200); digitalWrite(Rele1,HIGH); delay(200); digitalWrite(Rele1,LOW); delay(200); irrecv.resume(); } При нажатии выше упомянутых кнопок монитор порта выдает: 33441975 -1 -1 Или: 33441975 -16321 -16321 То есть results.value выводит правильно, а code1 присваивает какую ту ерунду. Буду рад любой помощи!!
вот весь код Код (C++): int ik = 2; int Rele1 = 3; int Rele2 = 4; int Rele3 = 5; int Knopka1 = 9; int Knopka2 = 10; int Knopka3 = 11; int on1 = 0; int on2 = 0; int on3 = 0; int code1 = 1; int code2 = 1; int code3 = 1; #include <IRremote.h> IRrecv irrecv(ik); decode_results results; unsigned long last = millis(); void setup() { pinMode(Rele1,OUTPUT); pinMode(Rele2,OUTPUT); pinMode(Rele3,OUTPUT); pinMode(Knopka1,INPUT_PULLUP); pinMode(Knopka2,INPUT_PULLUP); pinMode(Knopka3,INPUT_PULLUP); irrecv.enableIRIn(); Serial.begin(9600); } void loop() { if (irrecv.decode(&results)) { if (results.value == code1) { on1 = !on1; digitalWrite(Rele1, on1 ? HIGH : LOW); } if (results.value == code2) { on2 = !on2; digitalWrite(Rele2, on2 ? HIGH : LOW); } if (results.value == code3) { on3 = !on3; digitalWrite(Rele3, on3 ? HIGH : LOW); } irrecv.resume(); } if (irrecv.decode(&results)&& digitalRead(Knopka1) == 0) { code1 = results.value; Serial.println(results.value); Serial.println(code1); digitalWrite(Rele1,HIGH); delay(200); digitalWrite(Rele1,LOW); delay(200); Serial.println(code1); digitalWrite(Rele1,HIGH); delay(200); digitalWrite(Rele1,LOW); delay(200); digitalWrite(Rele1,HIGH); delay(200); digitalWrite(Rele1,LOW); delay(200); irrecv.resume(); }