Сегодня в уроке рассмотрим, как можно считать код клавиш с пульта ДУ при помощи DigiSpark на микроконтроллере attiny85. Боле подробно познакомиться с отладочной платой DigiSpark attiny85 вы можете вот в этой статье.

Программировать DigiSpark будем в среде Arduino IDE. Для получения кода клавиш с инфракрасного пульта дистанционного управления необходимо установить дополнительную библиотеку, но обо всем по порядку.
Для начала нам необходимо настроить Arduino IDE для работы с платой DigiSpark. Пошаговую инструкцию вы можете посмотреть в статье DigiSpark ATtiny85 настройка Arduino IDE и установка драйвера. А в данном уроке вкратце расскажу про данные настройки.


Все материалы, используемые в данном уроке, вы можете скачать внизу статьи в разделе «Файлы для скачивания».
Библиотека Adafruit Trinket USB содержит различные функции позволяющие использовать микроконтроллер, такой как DigiSpark, Arduino Micro, Arduino Leonardo в качестве клавиатуры, мышки для ПК. В данном уроке будем использовать библиотеку TrinketHidCombo, которая идет в составе набора библиотек Adafruit Trinket USB. Давайте приступим к её установке.
Для того чтобы установить библиотеку Adafruit Trinket USB необходимо её скачать с сайта GitHub.

После чего с помощью инструмента «Скетч -> Подключить библиотеку -> Добавить ZIP библиотеку..». Загружаем библиотеку в среду разработки.

Для этого выбираем скаченный архив. После чего мы увидим, что установка прошла успешно. Сейчас можно перейти к написанию кода. Также с библиотекой устанавливаются примеры, которые помогут лучше понять возможности данного инструмента.

Для простоты использования в уроке будем использовать модуль IR приемника KY-022. Про данный модуль у меня есть отдельный урок, почитать который вы сможете тут. Итак, берем модуль KY-022 и подключаем его к DigiSpark по схеме приведённой ниже.


Вот так будет схематично выглядеть передача сигнала с пульта ДУ. Сейчас перейдем к программной части и передадим полученный код с пульта ДУ на компьютер.
Для начала нам необходимо подключить библиотеку, которая позволит печатать команды полученные с пульта ДУ в любой текстовый документ на вашем компьютере.
#include "TrinketHidCombo.h"
Затем в блоке setup() сделаем все необходимые настройки.
DDRB |= (1 << DDB1); //P1 (LED) OUT в скетче не использован PORTB |= 1 << PB2; // подтяжка PB2 не помешает. GIMSK |= 1 << INT0; //прерывание int0 включить MCUCR |= 1 << ISC00; //Любое логическое изменение в INT0 генерирует запрос на прерывание GTCCR |= 1 << PSR0; TCCR0A = 0; TCCR0B = (1 << CS02) | (1 << CS00); TIMSK = 1 << TOIE0; //таймер прерывания TrinketHidCombo.begin(); // запустите механизм USB-устройства
Напишем 2 вспомогательные функции.
ISR (INT0_vect) {
if (PINB & 1 << 2) { // Если лог1
TCNT0 = 0;
}
else {
tcnt = TCNT0; // если лог 0
if (startflag) {
if (30 > tcnt && tcnt > 2) {
if (tcnt > 15 && m < 32) {
irdata |= ((uint32_t)1 << m);
}
m++;
}
}
else startflag = 1;
}
}
ISR (TIMER0_OVF_vect) {
//если сработало это прерывание, значит конец посылки
if (m) {
complete = 1; m = 0; startflag = 0; keydata = irdata; irdata = 0; // если индекс не 0, то создать флаг конца
}
} И в основном цикле loop() получение значения с IR приемника выведем на ПК в любом текстовом редакторе.
if (complete) { // получили что то сприемника
TrinketHidCombo.println(keydata, HEX);
TrinketHidCombo.pressKey(0, 0); // печатем полуенное значение
delay(200); // во избежание слишком частого повтора ввода клавиш
complete = 0;
} Проверка кода и вывод полученных значений в текстовый документ.
После загрузки кода в Digispark приступим к проверке кода. Для этого подключим плату к компьютеру и откроем любой текстовый документ и нажмем по порядку все клавиши на пульте дистанционного управления. Получим список команд всех клавиш в текстовом документе, как показано на картинке ниже.

У вас, наверное, возник резонный вопрос: Зачем это нужно? Ведь с помощью Arduino UNO получить коды клавиш пульта ДУ проще. Так и есть. Но данный урок это подготовка базы для реализации управления приложениями на ПК с помощью Digispark. О чем расскажу в ближайшем проекте.
Появились вопросы или предложения оставляйте их в комментариях.
Мы рады объявить о нашем присутствии на Boosty! Arduino-Tex приглашает всех наших друзей и последователей поддержать нас на этой замечательной платформе. Здесь вы найдете эксклюзивный контент, уникальные проекты и возможность стать частью нашей творческой команды. Присоединяйтесь к нам на Boosty и вместе мы сделаем мир Arduino еще удивительнее!
Понравился урок. DigiSpark attiny85 считываем код пульта ДУ? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
| Скетч DigiSpark attiny85 считывания кода с пульта ДУ.ino | 2 Kb | 1145 | Скачать | |
| DigiSpark Drivers.zip | 2861 Kb | 1041 | Скачать |
Уроки Arduino
19 августа , 2021
Комментариев:0
Файлов для скачивания:2
Фото:5
Понравилась статья? Нажми
Читайте также
Мы в соц сетях
Комментарии