Сегодня в уроке рассмотрим, как можно считать код клавиш с пульта ДУ при помощи 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 | 1053 | Скачать |
![]() |
DigiSpark Drivers.zip | 2861 Kb | 943 | Скачать |
Уроки Arduino
19 августа , 2021
Комментариев:0
Файлов для скачивания:2
Фото:5
Понравилась статья? Нажми
Виджеты для Easy HMI
Читайте также
Мы в соц сетях
Комментарии