Arduino UNO + ИК-датчик + Звук. Проблемы при совместном использовании библиотеки IRremote и функций tone() /noTone()


Проблема:

Если в скетче (для Arduino UNO) используется библиотека IRremote:
   include "IRremote.h"
то скетч перестает компилироваться, при наличии в тексте скетча функций tone() и/или noTone().

Причина:

По умолчанию используется один и тот же аппаратный таймер TIMER2.

Вариант решения:

Перенастроить библиотеку IRremote на использование таймера TIMER1.

Для этого необходимо выполнить следующие действия:

1. Закрыть программу Arduino IDE (если она открыта).

2. Найти и открыть в текстовом редакторе файл boarddefs.h (полное имя файла по умолчанию C:\Program Files (x86)\Arduino\libraries\IRremote\boarddefs.h);

3. Найти строковый блок:
   #else
   // Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc
   // ATmega48, ATmega88, ATmega168, ATmega328
   	//#define IR_USE_TIMER1   // tx = pin 9
   	#define IR_USE_TIMER2     // tx = pin 3 
   #endif

4. Изменить его следующим образом:
   #else
   // Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc
   // ATmega48, ATmega88, ATmega168, ATmega328
   	#define IR_USE_TIMER1   // tx = pin 9
   	//#define IR_USE_TIMER2     // tx = pin 3 
   #endif

5. Сохранить файл.


Дата: 01.06.2022