usb-knob/code.py

113 lines
3.0 KiB
Python

import board
import digitalio
import time
import usb_hid
from adafruit_hid.consumer_control_code import ConsumerControlCode
from adafruit_hid.consumer_control import ConsumerControl
from adafruit_hid.mouse import Mouse
clkPin = digitalio.DigitalInOut(board.GP2)
dtPin = digitalio.DigitalInOut(board.GP1)
dtPin.direction= digitalio.Direction.INPUT
clkPin.direction = digitalio.Direction.INPUT
clkPin.pull = digitalio.Pull.UP
dtPin.pull = digitalio.Pull.UP
global buttonPin
buttonPin = digitalio.DigitalInOut(board.GP15)
buttonPin.direction = digitalio.Direction.INPUT
buttonPin.pull = digitalio.Pull.UP
global consumer_control
consumer_control = ConsumerControl(usb_hid.devices)
global mouse
mouse = Mouse(usb_hid.devices)
global mode
mode = 0
global previousValue
previousValue = True
#volume controller
def control_volumen(pinStatus):
if pinStatus == False:
print('Volumen down')
consumer_control.send(ConsumerControlCode.VOLUME_DECREMENT)
else:
print('Volumen up')
consumer_control.send(ConsumerControlCode.VOLUME_INCREMENT)
def mute_volumen():
consumer_control.send(ConsumerControlCode.MUTE)
print('Mute')
#quickscroll
def scroll_up_down(pinStatus):
if pinStatus == False:
print('Scroll down')
mouse.move(wheel=3)
else:
print('Scroll up')
mouse.move(wheel=-3)
def middle_mouse_button():
mouse.click(Mouse.MIDDLE_BUTTON)
#media control
def previous_next_track(pinStatus):
if pinStatus == False:
print('Previous track')
consumer_control.send(ConsumerControlCode.SCAN_PREVIOUS_TRACK)
else:
print('Next track')
consumer_control.send(ConsumerControlCode.SCAN_NEXT_TRACK)
def play_pause():
consumer_control.send(ConsumerControlCode.PLAY_PAUSE)
print('Play/Pause')
while True:
if buttonPin.value == False:
if mode == 0:
mute_volumen()
elif mode == 1:
middle_mouse_button()
elif mode == 2:
play_pause()
else:
mode = 0
mute_volumen()
print('Button pressed')
time.sleep(0.3)
if buttonPin.value == False:
if mode == 0:
mute_volumen()
mode += 1
elif mode == 1:
middle_mouse_button()
mode += 1
elif mode == 2:
play_pause()
mode += 1
else:
mode = 0
mute_volumen()
print("changed mode: " + str(mode))
time.sleep(1)
else:
if previousValue != clkPin.value:
if clkPin.value == False:
if mode == 0:
control_volumen(dtPin.value)
elif mode == 1:
scroll_up_down(dtPin.value)
elif mode == 2:
previous_next_track(dtPin.value)
else:
mode = 0
control_volumen(dtPin.value)
previousValue = clkPin.value