Резюме.
Макро-клавиатура для Raspberry Pi Pico. Использует 6 клавиш и один модуль ротационного энкодера. У меня нет Github, поэтому код можно найти ниже, без комментариев, и он может потребовать рефакторинга, так как это был проект на выходных. Команды закодированы жестко, и вы должны быть в состоянии определить схему подключения по коду и изображения
Импортируем плату.
Импортируем DigitalIO.
Импортируем время.
Импортируем usb_hid.
Из adafruit_hid.keyboard импортируем клавиатуру.
Из adafruit_hid.keycode импортируем Keycode.
Импортируем RotaryIO.
Импортируем плату.
keyboard=Keyboard(usb_hid.devices)
key1 = digitalio.DigitalInOut(board.GP2)
key1.switch_to_input(pull=digitalio.Pull.DOWN)
key2 = digitalio.DigitalInOut(board.GP3)
key2.switch_to_input(pull=digitalio.Pull.DOWN)
key3 = digitalio.DigitalInOut(board.GP4)
key3.switch_to_input(pull=digitalio.Pull.DOWN)
key4 = digitalio.DigitalInOut(board.GP5)
key4.switch_to_input(pull=digitalio.Pull.DOWN)
key5 = digitalio.DigitalInOut(board.GP6)
key5.switch_to_input(pull=digitalio.Pull.DOWN)
key6 = digitalio.DigitalInOut(board.GP7)
key6.switch_to_input(pull=digitalio.Pull.DOWN)
rotK = digitalio.DigitalInOut(board.GP22)
rotK.switch_to_input(pull=digitalio.Pull.UP)
щелкнул = Истина
pressed = False
Энкодер = rotaryio.IncrementalEncoder(board.GP26, board.GP27)
last_position = None
Пока это правда:
Если нет (нет значения ключа 1, и нет значения ключа 2, и нет значения ключа 3, и нет значения ключа 4, и нет значения ключа 5, и нет значения ключа 6), и нет нажатия клавиши:
если key1.value:
keyboard.press(Keycode.LEFT_SHIFT)
keyboard.press(Keycode.WINDOWS)
keyboard.press(Keycode.S)
keyboard.release(Keycode.S)
keyboard.release(Keycode.WINDOWS)
keyboard.release(Keycode.LEFT_SHIFT)
если key2.value:
keyboard.press(Keycode.WINDOWS)
time.sleep(0.1)
keyboard.press(Keycode.S)
time.sleep(0.1)
keyboard.release(Keycode.S)
time.sleep(0.1)
keyboard.release(Keycode.WINDOWS)
time.sleep(0.1)
keyboard.press(Keycode.P)
time.sleep(0.1)
keyboard.release(Keycode.P)
time.sleep(0.1)
keyboard.press(Keycode.O)
time.sleep(0.1)
keyboard.release(Keycode.O)
time.sleep(0.1)
keyboard.press(Keycode.W)
time.sleep(0.1)
keyboard.release(Keycode.W)
time.sleep(0.1)
keyboard.press(Keycode.ENTER)
time.sleep(0.1)
keyboard.release(Keycode.ENTER)
если key3.value:
keyboard.press(Keycode.WINDOWS)
time.sleep(0.1)
keyboard.press(Keycode.S)
time.sleep(0.1)
keyboard.release(Keycode.S)
time.sleep(0.1)
keyboard.release(Keycode.WINDOWS)
time.sleep(0.1)
keyboard.press(Keycode.T)
time.sleep(0.1)
keyboard.release(Keycode.T)
time.sleep(0.1)
keyboard.press(Keycode.I)
time.sleep(0.1)
keyboard.release(Keycode.I)
time.sleep(0.1)
keyboard.press(Keycode.N)
time.sleep(0.1)
keyboard.release(Keycode.N)
time.sleep(0.1)
keyboard.press(Keycode.ENTER)
time.sleep(0.1)
keyboard.release(Keycode.ENTER)
если key4.value:
keyboard.press(Keycode.WINDOWS)
time.sleep(0.1)
keyboard.press(Keycode.E)
time.sleep(0.1)
keyboard.release(Keycode.E)
time.sleep(0.1)
keyboard.release(Keycode.WINDOWS)
если key5.value:
keyboard.press(Keycode.WINDOWS)
time.sleep(0.1)
keyboard.press(Keycode.S)
time.sleep(0.1)
keyboard.release(Keycode.S)
time.sleep(0.1)
keyboard.release(Keycode.WINDOWS)
time.sleep(0.1)
keyboard.press(Keycode.C)
time.sleep(0.1)
keyboard.release(Keycode.C)
time.sleep(0.1)
keyboard.press(Keycode.U)
time.sleep(0.1)
keyboard.release(Keycode.U)
time.sleep(0.1)
keyboard.press(Keycode.R)
time.sleep(0.1)
keyboard.release(Keycode.R)
time.sleep(0.1)
keyboard.press(Keycode.ENTER)
time.sleep(0.1)
keyboard.release(Keycode.ENTER)
если key6.value:
keyboard.press(Keycode.WINDOWS)
time.sleep(0.1)
keyboard.press(Keycode.S)
time.sleep(0.1)
keyboard.release(Keycode.S)
time.sleep(0.1)
keyboard.release(Keycode.WINDOWS)
time.sleep(0.1)
keyboard.press(Keycode.T)
time.sleep(0.1)
keyboard.release(Keycode.T)
time.sleep(0.1)
keyboard.press(Keycode.H)
time.sleep(0.1)
keyboard.release(Keycode.H)
time.sleep(0.1)
keyboard.press(Keycode.O)
time.sleep(0.1)
keyboard.release(Keycode.O)
time.sleep(0.1)
keyboard.press(Keycode.ENTER)
time.sleep(0.1)
keyboard.release(Keycode.ENTER)
pressed = True
print("вниз")
Если не (значение ключа 1) и не (значение ключа 2) и не (значение ключа 3) и не (значение ключа 4) и не (значение ключа 5) и не (значение ключа 6) и нажато:
pressed = False
print("вверх")
Если не (значение rotK) и кликнули:
щелкнул = Ложь
keyboard.press(Keycode.LEFT_ALT)
print("вниз")
если rotK.value и не(кликнуто):
щелкнул = Истина
keyboard.release(Keycode.LEFT_ALT)
print("вверх")
Положение = позиция энкодера.
Если last_position равно None или position не равно last_position:
Если нет (кликнули):
если позиция > последняя позиция:
keyboard.press(Keycode.TAB)
keyboard.release(Keycode.TAB)
Если позиция < последняя позиция:
keyboard.press(Keycode.LEFT_SHIFT)
keyboard.press(Keycode.TAB)
keyboard.release(Keycode.TAB)
keyboard.release(Keycode.LEFT_SHIFT)
Если нажать, и last_position не равно None:
если позиция > последняя позиция:
keyboard.press(Keycode.TAB)
keyboard.release(Keycode.TAB)
Если позиция < последняя позиция:
keyboard.press(Keycode.LEFT_SHIFT)
keyboard.press(Keycode.TAB)
keyboard.release(Keycode.TAB)
keyboard.release(Keycode.LEFT_SHIFT)
last_position = position
Настройки печати.
Марка принтера:
Creality.
Принтер:
Эндер 3.
Плоты:
Нет.
Поддерживает:
Нет.
Разрешение:
200.
Заполнение:
38
Постпечать.
32924836
32924837
32924838
32924840
Источник модели
