Клавиатура 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')
Клавиатура работает относительно хорошо, хотя иногда возникают странные ошибки, которые я не смог устранить. Поскольку я построил всю клавиатуру из частей, которые у меня уже были, я вполне доволен результатом.





























