Клавиатура Arduino Uno

Источник:

Эта клавиатура использует:

Ардуино Уно
3 поворотных энкодера, с прямоугольным основанием шириной 16 мм (я перепрофилировал свой из сломанного усилителя)
3 кнопки, квадратное основание шириной 9 мм (те, которые обычно входят в комплекты Arduino)
светодиод 5 мм
Опционально ползунковая кнопка для переключения режимов (6 мм х 20 мм, довольно распространенные маленькие кнопки, встречающиеся во многих гаджетах, с двумя монтажными отверстиями на ра��стоянии 15 мм друг от друга)
Резисторы 3 x 10 кОм (или 4, если вы хотите переключать режимы) для кнопок
Резисторы 220 Ом для светодиода.
8 гаек M3
2 х М3x20 мм
6 х М3x8 мм
2 гайки М4
2x М4x10 мм
какой-то груз, я использовал кусок литой стали размер��м 38 x 21 x 4 мм от старого усилителя, но вы можете использовать шайбы или отрезать кусок стали по размеру.

Я напечатал все файлы с помощью моего Prusa I3 MK2.5S с соплом шириной 0,6 мм и высотой слоя 0,25 мм (файлы довольно легко печатать, и только верхняя часть требует опор.

Клавиатура использует последовательную связь для отправки данных о нажатиях клавиш и поворотах ручек, которые затем принимаются кодом Python, который должен работать в фоновом режиме (вы можете настроить его на автоматический запуск при входе в систему).

Код Arduino довольно прост, и я включил его в файлы (я не программировал переключатель режимов, но добавить его будет довольно легко).

Код Python использует библиотеку Pyserial для чтения информации из последовательной шины (https://pyserial.readthedocs.io/en/latest/pyserial.html#installation) и библиотеку pyautogui для регистрации нажатий клавиш (https://pyautogui.readthedocs.io/en/latest/install.html).

Вот код, который я исполь��овал (две ручки внизу используются для двух скоростей прокрутки мыши, а верхняя — для регулировки громкости, кнопки — это функциональные клавиши.

импортный серийный номер
импортировать pyautogui

arduino = серийный.Serial(«COM4», 9600, тайм-аут=.1)
пока правда:
данные = arduino.readline()
если данные != Нет:
dataList = data.decode(«ascii»).split("_")
последний = 0
для слова в dataList:
if word == «volUp»: pyautogui.press('volumeup')
elif word == «volDo»: pyautogui.press('volumedown')
elif word == «en1Up»: pyautogui.scroll(50)
elif word == «en1Do»: pyautogui.scroll(-50)
elif word == «en2Up»: pyautogui.scroll(500)
elif word == «en2Do»: pyautogui.scroll(-500)
elif word == «bu1»: pyautogui.press('f1')
elif word == «bu2»: pyautogui.press('f2')
elif word == «bu3»: pyautogui.press('f3')

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

10:55
2
Нет комментариев. Ваш будет первым!

Ссылка появится после регистрации

Похожие модели

Корпус для адаптера питания
📁 Корпус для преобразователя питания сПодробнее
Корпус для DC регулируемого источника
📁 Корпус для DC регулируемого источникаПодробнее
Крепление "народного" налобного фонаря
📁 Крепление «народного» налобного фонаряПодробнее
Ручка настройки Yaesu FT-817
📁 Ручка VFO для FT-817/818. ИспользуйтеПодробнее
Модель кнопки для Imax B6
Вам понадобится капля клея, чтобыПодробнее
Антенный изолятор "орешек"
Это стандартный изолятор дляПодробнее
Адаптер питания Yaesu FT-817
📁 Вертикальный адаптер под коннекторыПодробнее
Корпус для ESP32 WROOM
📁 Корпус для ESP32 WROOM 📐 STL 🪵 PETGПодробнее
Корпус для ESP32
📁 3D модель корпуса для платы NodeMCU наПодробнее
Станок для намотки катушек с филаментом
📁 Станок для намотки катушек сПодробнее
Кабельный ввод
📁 3D модель для печати кабельнойПодробнее
Кабельный ввод #2
📁 Компактный контейнер с завинчивающейсяПодробнее
Кабельный гермоввод #3
📁 3D модель для печати кабельногоПодробнее
Кабельные вводы различных размеров
📁 Кабельные вводы различных размеровПодробнее
Распределительная коробка
📁 3D модель для печати распределительнойПодробнее
Водозащищенный кабельный ввод
📁 3D модель кабельного ввода сПодробнее
Кабельный ввод #4
📁 3D модель для печати качественногоПодробнее
Распределительная коробка с креплением на стену
📁 Распределительная коробка с креплениемПодробнее
Адаптеры для SIM карт - 3D модель для печати
📁 Адаптеры для SIM карт — 3D модель дляПодробнее
Корпус для метеодатчика на ESP8266
📁 Корпус для метеодатчика на ESP8266Подробнее
Улучшенный дрон «Nano Long Range» на 1х18650
📁 Улучшенный дрон «Nano Long Range» наПодробнее
Электронные "песочные часы"
📁 Электронные «песочные часы» 📐 STLПодробнее
Контейнер для батарей ft-817
📁 Контейнер для аккумулятора FT-817 сПодробнее
Защитный каркас Yaesu FT 817
📁 Защитные рельсы для Yaesu FT 817 и 818Подробнее
YAESU FT-817 Рельсы
📁 Рельсы с подвесом для тангенты иПодробнее
Портативный настольный источник питания
📁 Портативный настольный источникПодробнее
Кейс для хранения батарей ( 21700, 18650, AA, AAA)
📁 Кейс для хранения батарей ( 21700Подробнее
Каркас для батарей 18650
📁 Корпус для Heltec V4 с GPS, проектПодробнее
Корпус для датчика на esp8266
📁 Корпус для датчика на esp8266 📐 STLПодробнее
Корпус для метеодатчика с анемометром
📁 Корпус для метеодатчика с анемометромПодробнее
Посещая этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.