Сегодня в уроке рассмотрим, как можно считать код клавиш с пульта ДУ при помощи DigiSpark на микроконтроллере attiny85. Боле подробно познакомиться с отладочной платой DigiSpark attiny85 вы можете вот в этой статье.
Программировать DigiSpark будем в среде Arduino IDE. Для получения кода клавиш с инфракрасного пульта дистанционного управления необходимо установить дополнительную библиотеку, но обо всем по порядку.
Настройка Arduino IDE для работы с DigiSpark и установка библиотеки Adafruit Trinket USB.
Для начала нам необходимо настроить Arduino IDE для работы с платой DigiSpark. Пошаговую инструкцию вы можете посмотреть в статье DigiSpark ATtiny85 настройка Arduino IDE и установка драйвера. А в данном уроке вкратце расскажу про данные настройки.
- Добавляем DigiSpark в список отладочных плат Arduino IDE.
- Устанавливаем драйвер для DigiSpark.
Все материалы, используемые в данном уроке, вы можете скачать внизу статьи в разделе «Файлы для скачивания».
Установка библиотеки Adafruit Trinket USB.
Библиотека Adafruit Trinket USB содержит различные функции позволяющие использовать микроконтроллер, такой как DigiSpark, Arduino Micro, Arduino Leonardo в качестве клавиатуры, мышки для ПК. В данном уроке будем использовать библиотеку TrinketHidCombo, которая идет в составе набора библиотек Adafruit Trinket USB. Давайте приступим к её установке.
Для того чтобы установить библиотеку Adafruit Trinket USB необходимо её скачать с сайта GitHub.
После чего с помощью инструмента «Скетч -> Подключить библиотеку -> Добавить ZIP библиотеку..». Загружаем библиотеку в среду разработки.
Для этого выбираем скаченный архив. После чего мы увидим, что установка прошла успешно. Сейчас можно перейти к написанию кода. Также с библиотекой устанавливаются примеры, которые помогут лучше понять возможности данного инструмента.
Схема подключения к DigiSpark IR приемника в виде модуля KY-022.
Для простоты использования в уроке будем использовать модуль IR приемника KY-022. Про данный модуль у меня есть отдельный урок, почитать который вы сможете тут. Итак, берем модуль KY-022 и подключаем его к DigiSpark по схеме приведённой ниже.
Схема подключения ИК приёмника (IRremote) KY-022 к DigiSpark и пульт ДУ.
Вот так будет схематично выглядеть передача сигнала с пульта ДУ. Сейчас перейдем к программной части и передадим полученный код с пульта ДУ на компьютер.
Скетч DigiSpark attiny85 считывания кода с пульта ДУ.
Для начала нам необходимо подключить библиотеку, которая позволит печатать команды полученные с пульта ДУ в любой текстовый документ на вашем компьютере.
#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 | 962 |
Скачать
Вы можете скачать файл.
|
|
DigiSpark Drivers.zip | 2861 Kb | 867 |
Скачать
Вы можете скачать файл.
|
Комментарии