Код (C++): #include "IRremote.h" IRrecv irrecv(10); // Указываем пин, к которому подключен приемник decode_results results; int RedLedPin = 12; int buzzer = 11; int IRLedPin = 9; void setup() { Serial.begin(9600); irrecv.enableIRIn(); pinMode(RedLedPin, OUTPUT); pinMode(buzzer, OUTPUT); pinMode(IRLedPin, OUTPUT); } void loop() { digitalWrite(IRLedPin, HIGH); if (irrecv.decode(&results)) { //Serial.println(results.value, HEX); irrecv.resume(); } else { tone (buzzer, 500); delay(100); tone(buzzer, 1000); delay(100); digitalWrite(RedLedPin, HIGH); delay(100); digitalWrite(RedLedPin, LOW); delay(100); } } Если убрать участок кода для пищалки, то всё работает. Вот текст ошибки Как решить проблему?
Функция tone() и IRremote используют один и тот же TIMER2. Решение - библиотеку IRremote настроить на использование TIMER1, в файле boarddefs.h изменить Код (C++): // Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc // ATmega48, ATmega88, ATmega168, ATmega328 #else #define IR_USE_TIMER1 // tx = pin 9 //#define IR_USE_TIMER2 // tx = pin 3 #endif