Сделал Arduino на Atmega8515, которую выпаял из старого механизма, подключил к ней кварц 6 МГц (можно любой другой, просто этот был под рукой) и залил в неё Скретч на приём и передачу IR сигнала с пульта – всё заработало!
Также я сделал Arduino на Atmega8535 и тоже с внешним кварцем на 6 МГц.
Как сделать Arduino на Atmega8515 читайте здесь – “микроник.рус/7016/”
Как сделать Arduino на Atmega8535 читайте здесь – “микроник.рус/6961/”
Про “IR (инфракрасный сигнал): Читаем данные с пульта и передаём их” – читайте здесь – “микроник.рус/8046/”
Мне попалась Atmega8515 в корпусе TQFP44:
Приём сигнала IR не вызвал проблем и сразу заработал на pin 11 Ардуино (ножка PD3 на Atmega8515), а вот с отправкой – сразу не получилось – в Arduino Nano я подключал IR светодиод к ножке pin3 Ардуино, что соответствует ножке PB3 – но сигнал не отправлялся.
Пришлось читать информацию по библиотеке “github.com/Arduino-IRremote/Arduino-IRremote”
Нашёл вот такую табличку:
Здесь видно, что для отправки в Atmega8515 используется pin13 (ножка PD5 на Atmega8515) – в итоге она и заработала!
А также ссылка на файл: “Код таймера и выбор таймера находится в private/IRTimer.hpp. Здесь можно настроить выбранный таймер.”
В файле IRTimer.hpp как раз и нашёл подтверждение:
... /*************************************** * CPU's with MajorCore ***************************************/ #elif defined(__AVR_ATmega8515__) || defined(__AVR_ATmega162__) # if !defined(IR_USE_AVR_TIMER1) && !defined(IR_USE_AVR_TIMER3) #define IR_USE_AVR_TIMER1 // send pin = pin 13 //#define IR_USE_AVR_TIMER3 // send pin = pin 12 - ATmega162 only # endif ... // MightyCore, MegaCore, MajorCore # elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) \ || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) \ || defined(__AVR_ATmega324P__) || defined(__AVR_ATmega324A__) \ || defined(__AVR_ATmega324PA__) || defined(__AVR_ATmega164A__) \ || defined(__AVR_ATmega164P__) || defined(__AVR_ATmega32__) \ || defined(__AVR_ATmega16__) || defined(__AVR_ATmega8535__) \ || defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) \ || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) \ || defined(__AVR_ATmega8515__) || defined(__AVR_ATmega162__) #define IR_SEND_PIN 13
Тоже ссылка на pin13!
Код скретча отправки IR сигнала был следующий:
#include <IRremote.h>
IRsend irsend;
void setup()
{
}
void loop()
{
irsend.sendNEC(0xFFA25D, 32);
delay(3000);
}
Читал его с помощью Arduino Nano – в Серийном мониторе (Serial Monitor) приходит код FFA25D
Схема подключения IR светодиода на передачу сигнала:
А вот как выглядит мой MajorCore Arduino на Atmega 8515 с кварцем на 6 МГц:
Примечание:
Для Atmega8535 всё аналогично – для отправки используем pin13 (или PD5 на Atmega8535), схема подключения инфракрасного светодиода:








