Arduino nano как клавиатура

Обновлено: 18.05.2024

В этой заметке речь пойдет о том как собрать беспроводную клавиатуру для ПК или ноутбука. Данную мини клавиатуру можно использовать для управления проигрывателем Windows Media, либо её не сложно перепрограммировать под любое другое приложение.
Для сборки приемника клавиатуры который будет подключаться к ПК понадобиться плата Ардуино LEONARDO. Обычная плата Ардуино тут не подойдет. Ардуино LEONARDO может прикидываться для ПК клавиатурой, мышкой или джойстиком. Я буду использовать в проекте плату Arduino Micro, которая является аналогом платы Ардуино LEONARDO, но имеет более удобный форм-фактор для работы с макетной платой.
Для сборки передатчика. Подойдет любая плата Arduino – я буду использовать Arduino Nano. Также понадобиться пара UART модулей – для этого проекта я буду использовать HC-11 – они обеспечивают уверенную связь внутри небольшой квартиры – управлять компьютером с расстояния 2 км я думаю, особой необходимости нет, и поэтому использовать дальнобойные UART модули типа HC-12 или APC 220 в таком проекте смысла особого не имеет. Ну и 5 кнопок. 2 кнопки для управления громкостью 2 для переключения треков и одна для старта/приостановки воспроизведения. Приемник будет питься от разъема USB компьютера. Сама клавиатура от PowerBank. Схема подключения простая – она приведена ниже.

Для того чтобы плата Ардуино Leonardo превратилась в клавиатуру потребуется библиотека Keyboard.
Как пользоваться библиотекой Kyboard
Для организации связи я буду использовать свою библиотеку Serial27b. Пример использования этой библиотеки вы сможете найти в этой статье:
Как пользоваться библиотекой Serial27b
Разумеется перед заливкой прошивки необходимо, чтобы обе эти библиотеки были установлены в среду программирования Arduino IDE – как это сделать можно узнать здесь:
Как установить библиотеку в среду Arduino IDE
Все библиотеки можно скачать по этим ссылкам.
Библиотека Serial27b
Библиотека Keyboard
Скетч клавиатуры и приемника вы найдете после установки библиотеки Serial27b в среду Arduino IDE в демонстрационных примерах.

Список железок вы найдете в описании под видео – если статья Вам понравилась не забывайте ставить лайки и оставлять комментарии, чтобы её смогли увидеть другие люди. Приятного просмотра.

[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост

Идея заиметь себе программируемую клавиатуру родилась у меня довольно таки давно. По работе и не только, я уже около 7 лет пользуюсь замечательными программами PunoSwitcher и Mkey. У них есть свои минусы, но все таки - все они здорово облегчают и автоматизируют многие рутинные задачи. И, в целом, основную массу моих потребностей в скриптах и программируемых клавишах можно реализовать софтверно через вышеописанные программы. Но здесь есть 3 существенных минуса:
Оговорюсь сразу, все это чистой воды субъективщина, и ИМХО

1) Программы “съедают” некоторые клавиши. Например переназначив всю Numpad клавиатуру, вы останетесь без удобного ввода цифровых значений, и каждый раз переключать режимы в том же Mkey(который имеет свойство зависать в самый нужный момент), не очень удобно.
2) При смене рабочей машины приходится каждый раз переназначать настройки и устанавливать софт. Да, можно сделать экспорт настроек и все такое прочее, но это не Plug&Play,в плане удобства.
3)Кроссплатформенность. Так вышло, что у меня основной машиной для “взять с собой в поездку налегке” является старенький нетбук AcerAspire One с Linux Arch на борту, ибо только он там работал адекватно. И оказавшись без своих скриптов и переназначенных клавиш, было очень некомфортно работать.
справедливости ради стоит упомянуть, что через какое-то время я накатил на него облеченную версию WIN 7 и все стало прекрасно, но пост это об этом).
И так как цены на программируемые клавиатуры кусались, и я подумал, “а что если сделать ее на Ардуино?”. И вот в результате родилось это "чудо".
За основу я взял проект из ролика небезызвестного @AlexGyver, о комп.пранке.(ссылка)
Саня если ты это читаешь - огромное тебе спасибо. Ты не только вдохновил меня на это все, но облегчил разработку своими удобными библиотеками по работе с кнопками.

Комплектующие
Для создания проекта понадобится:
Arduino Pro Micro - 1 шт

PNP транзистор - 1 шт.

NPN транзисторы - 3 шт.

LED светодиоды - 3 шт.

Я использовал старые советские КТ315 / КТ 361, просто потому что они были под рукой.

[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост

Да, можно было бы выбросить транзисторы с LED светодиодов, но я решил немного заморочится).

Поначалу проект разрабатывался под старую PS/2 клавиатуру, поэтому на ранних фото вы можете наблюдать в схеме PS/2 разъем.

[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост

[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост

В ходе экспериментов стало ясно, что некоторые клавиатуры могут работать с Аодуиной, как Ps/2 устройства, после перезагрузки.Именно для этого в схеме есть PNP транзистор для перезагрузки клавиатуры, через полсекунды после подключения Ардуины.

Затем,специально под этот проект, на Али была куплена Numpad клавиатура за 300р, которая оказалась вонючим куском пластика, к тому же еще и с бракованной клавишей, которая вывалилась при распаковке.

[Arduino] Программируемая клавиатура своими руками. Arduino, Coub, Гифка, Видео, Длиннопост

И хотя к ее работоспособности у меня претензий нет, и удалось вернуть полцены, эту клаву к покупке не рекомендую. Сейчас, за 400-500р можно взять Numpad-механику. Но ее определение как PS/2 устройство, и совместимость с моим проектом я не гарантирую.

Демонстрация работы.

Одна из самых важных функций этой клавиатуры - возможность эмуляции нажатий нескольких клавиш - уже делает эту клаву, очень удобным инструментом в работе.Например.
Как то давно, на Пикабу был выложен пост “Создание МОЩНОЙ программируемой клавиатуры”, путем использования программы HIDmacros.
МОЩНОЙ!

Во многих проектах появляется необходимость создания возможности ввода данных пользователем. Если вам нужно реализовать большое количество кнопок(относительно), то подключать их по-отдельности становится и долго, и нерационально. Для этой цели лучше выбрать какую-нибудь клавиатуру, но как и к любому выбору, к нему нужно подходить осознано. Какие же бывают виды клавиатур и как с ними взаимодействовать?

Глобально, все модули данного типа можно поделить на две большие категории: матричные и аналоговые.

Матричные клавиатуры

Самый простой, дешёвый и популярный вид клавиатур. Он относительно прост в изготовлении и заполняет собой большую часть рынка модулей ардуино. Выглядит чаще всего следующим образом:

image

image

Принцип работы

Понять как устроена данная клавиатура можно изучив следующую схему:

image

Чтобы понять какая кнопка была нажата, нужно подавать сигнал на первые четыре контакта модуля и смотреть какой сигнал возвращается со второй. Но не стоит пугаться того, что вам придется писать алгоритмы обработки для восьми пинов вручную — в этом нам поможет готовая библиотека «keypad.h», благодаря которой нам не придется изобретать велосипед.

Подключение к плате

Подключение собственно модуля

В этой статье я воспользуюсь следующей схемой подключения:

image

У Вас наверное возникает вопрос: «Почему я решил использовать пины со второго по девятый, пропустив нулевой и первый?» — дело в том, что некоторые модули, используют их в качестве каналов RX и TX для получения и передачи данных соответственно. К примеру, блютуз модуль. Поэтому с учётом возможного дополнения проекта другими модулями, было решено оставить данные пины подключения свободными.

Написание скетча

Для начала, для того, чтобы получить возможность использовать библиотеку для подключения клавиатур в коде, нужно установить её на ваше устройство. Это можно сделать следующим образом: в самой Arduino IDE нажимаем Скетч -> Подключить библиотеку -> Управлять библиотеками… либо используем комбинацию горячих клавиш «Ctrl + Shift + I». В поиске вбиваем «keypad.h»(без скобочек) и нажимаем «Установка».

После установки приступаем к написанию скетча:

Плюсы и минусы

Минусы

  • Слишком много пинов нужно подключить для работы. Это довольна крупная проблема, если вы создаёте не калькулятор или кодовый замок, а более масштабный проект, в котором еще нужно задействовать огромное количество различных модулей — возможно им просто не хватит пинов.
  • Слишком низкое качество выполнения модуля: никто вам не гарантирует постоянный стабильный сигнал. Оригинальные клавитуры выполнены не на очень высоком уровне, а если вы вообще сделали заказ на Aliexpress, то скорее всего, вам предстоит исправлять косяки китайских инженеров паяльником, чтобы добится стабильной работы.
  • Используется дополнительная библиотека, которая также будет занимать память микроконтроллера, которой у него и так не очень много. Если вы пишите большой проект с множеством функций и вычислений и вам каждый байт на счету нужно считывать данные с клавиатуры вручную либо использовать аналоговую клавиатуру.

Плюсы

Аналоговые клавиатуры

Принцип работы

В аналоговых клавиатурах для изменения уровня напряжения используются резисторы, а сигнал выходит по одному каналу, который подключается в, собственно, аналоговый пин на плате. Как всё устроено можно понять взглянув на следующую схему:

image

Подключение к плате

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

Итак: аналоговый выход клавиатуры соединяем с любым аналоговым пином на плате, контакт VCC на плате соединяем с 3.3V(не смотрите на надпись на самой клавиатуре, которая гласит о 5V — это ошибка), а GND на плате с GND на модуле. Вы можете воспользоватся следующей схемой:


Написания скетча

Здесь не нужно использовать сторонние библиотеки, т.к. всё предельно просто и понятно. Вот собственно и сам код, который считывает нажатую кнопку и выводит её номер, от 1 до 16(слева на право, с верху в низ) либо 0 если ничего не нажато, в монитор порта.

Плюсы и минусы

Плюсы

  • Очень простое подключение
  • Занимает лишь один пин
  • Экономит память, которую вы не тратите под библиотеку
  • Обеспечивает стабильную работу(при условии, если вы не будете нажимать более одной кнопки одновременно)

Минусы

  • Стоит дороже матричных клавиатур
  • Скорее всего единственным способом покупки будет заказывать с Китая и доставка займёт какое-то время

Итоги

Лично я рекомендую использовать именно аналоговые клавиатуры, так как они чаще-всего более качественные и подключать их проще-простого. Главное обращать внимание на таблицу значений нажатых кнопок, которую предоставляет производитель или же, если таковой нет, можно сделать эти замеры самостоятельно, выводя значения из аналогового порта в монитор порта, чтобы потом использовать их в коде. Но выбор, всегда остается за Вами: использовать стандартный дешёвый вариант либо переплатить ради значительных плюсов в некоторых ситуациях.

На этом у меня всё. Оставляйте свои вопросы в комментариях, пишите своё мнение и встретимся на просторах Хабра!

Эмулятор мыши, клавиатуры, мультимедия клавиатуры на обычных Adruino UNO/NANO/MINIPRO

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

dimax аватар

Давно заприметил у Адафрута адаптированную библу V-USB под дижиспарк с довольно широкими возможностями. Захотелось такое-же, но для УНО. Сегодня перенастроил их библу, подойдёт для любых 16Мгц ардуин на м.к. мега328.

Что она даёт: можно эмулировать мультимедия клавиатуру, регулировать аппаратно (без драйверов) громкость, плей-пауза-муте, и ещё с десяток спец. клавиш. Можно эмулировать обычную клавиатуру. Эмулировать нажатие до 5 клавиш одновременно, печатать одиночные символы, печатать текст как командой print/println. Так-же можно эмулировать мышь, -двигать курсор, нажимать любую из 3х клавиш.

Аппаратные требования: отъедает одно прерывание (в библе настроено на INT0) + ещё пару пинов. Один из которых служит для внешнего PULL_UP, за счёт этого драйвер программно может включать/отключать USB. Нельзя тормозить loop, там есть функция, которую нужно запускать не реже 1 раза в 10 мс. Для согласования уровней USB и 5v TTL можно применить такую схему:


Либо можно просто запитать Vcc ардуино от напряжения 3,3 ..3,6 вольта и подключить напрямую. Библа. Скетч с примерами работы разных функций:

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Если цикл while(digitalRead(12) == LOW) будет крутиться до отпускания клавиши, то как TrinketHidCombo.poll(); не реже 1 раза в 10мс будет выполняться.

нужно воткнуть DigiUSB.delay(1); в цикл - иначе клава отвалится.

но, как нажимать более одной кнопки - не понятно.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

dimax, а это точно нужно, если это задано в usbconfig.h ?

тем более, что как минимум один из них всегда не INPUT ?

03 pinMode(4,INPUT); //USB d- (белый) PORT D4 задан в usbconfig.h
04 pinMode(2,INPUT); // USB d+ (зелёный) PORT D2 задан в usbconfig.h
  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

dimax аватар

Если цикл while(digitalRead(12) == LOW) будет крутиться до отпускания клавиши, то как TrinketHidCombo.poll(); не реже 1 раза в 10мс будет выполняться.

Да, самому не понравилось. Я осознанно нарушил, не хотелось городить огород в примере синтаксиса совсем другой функции. Пробовал держать кнопку долго - USB как ни странно не отваливается. В моём случае никаких кнопок в дальнейшем не предпологалось, поэтому так и оставил.

Клапауций 322, нет конечно, просто как описание используемых ног :) А DigiUSB.delay() в этой библе по моему нет..

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Пробовал держать кнопку долго - USB как ни странно не отваливается.

т.е. печатает, пока не отпустишь кнопку

TrinketHidCombo.print( "Hello, World!" ); // напечатать Hello, World!

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

DigiUSB.delay() в этой библе по моему нет..

зато, есть delay(1); //паузу можно убрать

если можно убрать, то должно быть где-то в библиотеке - иначе протокол VUSB сожрёт всё время МК и он не будет иметь ресурсов отвечать хосту компьютера.

в библиотеке клавы Дижиспарка есть DigiKeyboard.delay();

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

dimax аватар

Клапауций 322, с while выполнится один раз, ведь кнопку нужно отпустить для выхода из цикла. А когда loop останавливался из-за цикла while при удерживании нажатой кнопки, то почему-то USB не отваливался, хотя по идее должен был.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Клапауций 322, с while выполнится один раз, ведь кнопку нужно отпустить для выхода из цикла.

А когда loop останавливался из-за цикла while при удерживании нажатой кнопки, то почему-то USB не отваливался, хотя по идее должен был.

аналогично - проверил: не отваливается, но забраковал конструкцию - не должно нажатие кнопки останавливать работу всего. разве, что использовать как СТОП-КРАН именно для остановки всего.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

То что искал ! Спасибо топикстартеру !

Вот если-бы добавить пару-тройку крутилок-енкодеров, то это-бы для меня был новогодний подарок ! :)

Друзья, помогите чайнику ))

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вот если-бы добавить пару-тройку крутилок-енкодеров, то это-бы для меня был новогодний подарок ! :)

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

очень полезный пост. добавлю и свои 3 копейки:

1. переход с регистра B на D посредством редактирования хедера произошел не полностью - в TrinketHidComboC.c:49 сохранился захардкоденный B:

2. по причине отсутствия стабилитронов 3.6 в использовал альтернативную схему подключения с 2-мя понижающими диодами в цепи питания. оказалось что усб работает и с одним, а то UNO с двумя диодами не работал. вместо стабилитронов использовал также синии светодиодики - у них падение напряжения 3.5в - очень прикольно моргают во время сеанса. горят ярко - поэтому вообщето надо пожалеть дуню и включать их через резистор 200 ом хотя бы.

3. нашел более устойчивую и профессиональную реализацию библиотеки HID на той же основе v-usb:

после подкручивания значений пинов работала очень надежно - правда потом я что-то испортил в процессе "улучшения".

4. усб запускается с 3-го а иногда и с 10-го раза. поэтому очень помогает применить ватч-дога wdt чтобы дуня сама через 8 секунд перегружалась.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

А подскажите, как заставить ардуину вводить в комп великие и могучие русские буквы? У русских букв коды начинаются от 192.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

dimax аватар

SeregaSher, если вопрос в свете обсуждаемого эмулятора -то клавиатура в принципе не может отличить на каком языке вы печатаете. Для перехода на русский нужно предварительно включить соответсвующий хоткей, определённый операционной системой.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

dimax, спасибо за проделанную работу. На компьютере всё отлично работает. К сожалению, собранное устройство не определяется на Андроиде, ради которого я собственно и начал этим заниматься. Есть соображения, с чем это может быть связано?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

dimax аватар

webprog, на андроиде работает 100% - самолично проверял и на смартфоне и на планшете.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

dimax, действительно, сейчас начал проверять на SGS6 - работает, а на Note никак. Реальные устройства, в том числе мышка с клавиатурой с одним адаптером работают нормально. Буду разбираться.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

я хотел бы узнать , можноли использовать стабитроны на 3.3 В вместо 3.6 В

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

dimax аватар

mr.robot, не желательно. Уровни там конечно 3,3вольта, но стабилитрон на 3,6 что бы не подрезать уровень входящих сигналов от хоста. В самом крайнем случае можно взять стабилитроны на 3,3.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

а то у меня при подключении комп выписывает ошибку

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Всё подключил по схеме, запитал VCC Arduino pro mini 3,6В с БП. Стабилизаторы не подключал. Скетч залил, при подключении к компьютеру никакой реакции. Может есть ещё какие подводные камни? На что стоит обратить внимание?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Здравствуйте, подскажите варианты схем, если нет стабилитронов, а то три резистора, не пойму как с ними быть. Да вопрос тупой понимаю, вот ниже парень говорит про диоды понижающие, а потмом речь идет про светодиоды, путает(запутал, те он использовал и диоды и светодиоды). Из всего написанного я так понял, можно либо взять источник питания сразу на 3,3, тогда что значит подключить на прямую(резистор хоть один останется? как их там между собой соединять )? Другой вариант - использовать только резисторы со светодиодом, чтобы понизить выходной сигнал 5V до 3.6 - может ктонить показать примитивную схему последнего варианта?
На руках имеется Arduino Pro Mini 3.3V, 8MHz, какую схему реализовывать на ней. Путает меня соединение с 4 и 5 цифрового порта .

очень полезный пост. добавлю и свои 3 копейки:

1. переход с регистра B на D посредством редактирования хедера произошел не полностью - в TrinketHidComboC.c:49 сохранился захардкоденный B:

2. по причине отсутствия стабилитронов 3.6 в использовал альтернативную схему подключения с 2-мя понижающими диодами в цепи питания. оказалось что усб работает и с одним, а то UNO с двумя диодами не работал. вместо стабилитронов использовал также синии светодиодики - у них падение напряжения 3.5в - очень прикольно моргают во время сеанса. горят ярко - поэтому вообщето надо пожалеть дуню и включать их через резистор 200 ом хотя бы.

3. нашел более устойчивую и профессиональную реализацию библиотеки HID на той же основе v-usb:

после подкручивания значений пинов работала очень надежно - правда потом я что-то испортил в процессе "улучшения".

4. усб запускается с 3-го а иногда и с 10-го раза. поэтому очень помогает применить ватч-дога wdt чтобы дуня сама через 8 секунд перегружалась.

Скромный Arduino может многое, но знаете ли вы, что он может эмулировать USB-клавиатуру? С помощью этой простой схемы вы можете объединить те, которые трудно запомнить длинные сочетания клавиш, в одну настраиваемую комбинацию клавиш. Вот конечный результат:

Никогда не использовал Arduino раньше? Ознакомьтесь с нашим руководством по началу работы

Что вам нужно

Части ярлыка Arduino


Вот что вам нужно, чтобы сделать этот проект:

  • 1 х Arduino Pro Micro.
  • Мгновенные кнопки или кнопки клавиатуры.
  • Резисторы 10 кОм.
  • Ассорти из соединительных проводов.
  • 1 х 220 Ом резисторы.
  • 1 х 5 мм (0,197 дюйма) светодиод.
  • 1 х 5 мм светодиодный держатель.

Вам понадобится очень специфическая Arduino для этого проекта. Я использую Pro Micro, так как они такие маленькие и дешевые, что вам нужен Arduino с встроенным в процессор USB-Serial (Atmega32u4). Можно построить этот проект с другими Arduinos, такими как UNO или Nano, однако для того, чтобы все заработало, требуется много напряженной работы, чтобы заново прошить биос и покопаться. Клоны других моделей Arduino обычно не работают вообще, но клон Pro Micro тоже подойдет.

Вот схема макета (исключая концевые отведения):

Arduino Сочетание клавиш

Убедитесь, что вы вырезали следы под резисторами и Arduino. Так как считывание схемы платы может быть очень трудным, вот макетная версия:

Ардуйно ярлык макет

Это плотная посадка, чтобы сжать все компоненты в такое маленькое пространство. Отрежьте углы вашего картона следующим образом:

Сочетание клавиш

Это должно аккуратно вписаться в нижней части корпуса:

Сочетание клавиш в коробке

Убедитесь, что дорожки движутся вертикально.

Подключить анод (длинная нога, позитив) светодиода к резистору 200 Ом, а затем к +5 В. Подключите катод (короткая нога, негатив) К земле, приземляться. Накройте ножки термоусадочной трубкой, а затем вставьте держатель в светодиод. Нет необходимости в каком-либо клее, однако ваш светодиодный держатель может быть не плотным, поэтому вам, возможно, придется адаптировать эти инструкции.

Светодиодный индикатор состояния ярлыка

Сочетание кнопок светодиодов цепи

Используйте маленький кусочек термоусадочной трубки, чтобы закрыть соединение между светодиодами и Arduino:

Ярлык светодиодный термоусадочный

Включите Arduino для проверки работы всех светодиодов. Вам не нужно загружать любой код. Если какие-либо светодиоды не работают, проверьте и перепроверьте проводку.

Ярлык светодиодного тестирования

Arduino Схема быстрого доступа

Эта схема одинакова для всех девяти переключателей. Подключите переключатели к цифровым контактам с 2 по 10, каждый со своим собственным резистором 10К на землю. Будьте осторожны при пайке переключателей Cherry MX, они могут быть немного хрупкими, у меня несколько контактов сломалось. Возможно, вы захотите припаять их непосредственно к еще большему количеству полос, но концевые выводы все еще подходят.

Вот и все для проводки. Возможно, вы захотите смонтировать гнездо USB типа B, однако крошечные контакты на них часто довольно трудно паять. Если вы не хотите этого делать, не беспокойтесь. Разъем Micro USB на Arduino аккуратно подходит к отверстию в корпусе. Если вас немного смущают разные типы USB, убедитесь, что вы понимаете различия

Наконец, дважды проверьте правильность схемы. Короткий может легко уничтожить Arduino, и это может быть легко сделать с помощью картона.

Возможно, вам придется изменить контакты, если вы изменили схему.

После загрузки откройте серийный монитор (в правом верхнем углу > Серийный монитор). Один за другим, нажмите каждую кнопку. Вы должны увидеть на серийном мониторе номер кнопки, которую вы нажали. Как и в случае со светодиодом, если ваш компьютер жалуется на слишком большой ток или светодиоды гаснут, когда вы нажимаете кнопку, немедленно отключайтесь! У вас есть короткое замыкание где-то в цепи, дважды проверьте правильность цепи и нет ли коротких замыканий между соединениями.

Если все работает, продолжайте и вставьте схему в коробку. Вы можете использовать немного клея, чтобы удержать цепь на месте (хотя провода держали мои в порядке). Закрепите крышку также.

Сделать Arduino похожей на клавиатуру очень просто. Если вы используете Nano или UNO, вы собираетесь перепрограммировать Arduino, используя Обновление прошивки устройства (DFU). Обычно используется для прошивки новой прошивки на Arduino. Вы собираетесь использовать его для прошивки Arduino новой прошивкой, которая заставит его работать как клавиатура. Это не будет рассмотрено здесь, так как это довольно сложная задача. На сайте Arduino есть хороший учебник для этого.

Arduino Pro Micro делает этот шаг очень простым. Логика, необходимая для эмуляции клавиатуры USB, уже встроена в процессор, поэтому это так же просто, как написать некоторый код!

Сначала настройте ключи:

Это массив, содержащий все контакты, к которым подключены кнопки. Если вы использовали больше или меньше кнопок или использовали другие контакты, измените значения здесь.

Массив - это набор единомышленников. Компьютеры могут оптимизировать ваш код для быстрого доступа к ним, и они ускоряют процесс написания кода.

Теперь инициализируйте все контакты как входы:

Это говорит Arduino, что все выводы в массиве являются входными. Для этого используется цикл, а не запись pinMode (2, INPUT) девять раз, ты должен написать это только один раз. Это также вызывает Keyboard.begin. Это устанавливает функцию, встроенную в библиотеку Arduino, разработанную специально для эмуляции клавиатуры.

Создайте метод с именем readButton:

Это берет булавку и проверяет, была ли она нажата или нет. Просто возвращается ПРАВДА или же ЛОЖНЫЙ. Он также содержит некоторые отладка программного обеспечения - простая задержка, а затем повторная проверка переключателя гарантирует, что кнопка действительно была нажата.

Теперь другой цикл for вызывается внутри void loop ():

Опять же, это перебирает каждый элемент в массиве и проверяет, был ли он нажат. Это называется readButton метод, который вы создали ранее. Если кнопка была нажата, она передает этот номер пина другому методу, называемому DoAction:

Это проверяет номер булавки, используя переключатель заявление. Переключатель операторов (иногда называется выключатель) похожи на если оператора, однако они полезны для проверки того, что одна вещь (в данном случае номер булавки) равна одному из нескольких разных результатов. По сути, они гораздо быстрее для расчета.

Основные компоненты находятся внутри этого оператора switch. Keyboard.println записывает текст на компьютер, как будто вы физически набираете каждую клавишу. Keyboard.press нажимает и удерживает одну клавишу Не забудьте выпустить их, используя Keyboard.releaseAll после небольшой задержки!

В дополнение ко всем цифровым и буквенным клавишам Arduino может нажимать большинство специальных клавиш, называемых Модификаторы клавиатуры. Это особенно полезно для нажатия сочетаний клавиш. На сайте Arduino есть полезный список.

Теперь осталось только создать несколько ярлыков. Вы можете сопоставить это с существующими ярлыками, такими как Alt + F4 (закрыть программу в Windows) или Cmd + Q (выйти из программы macOS). Кроме того, убедитесь, что вы прочитали наше окончательное руководство по сочетанию клавиш

, как создать ярлыки Windows

и каждый ярлык Chromebook

чтобы начать делать свои собственные ярлыки.

Вы создали свой собственный ярлык? Дайте мне знать в комментариях, я хотел бы увидеть некоторые фотографии!

Читайте также: