40 lines
1.2 KiB
Python
Executable file
40 lines
1.2 KiB
Python
Executable file
# SPDX-FileCopyrightText: 2018 Kattni Rembor for Adafruit Industries
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
import rotaryio
|
|
import board
|
|
import digitalio
|
|
import usb_hid
|
|
from adafruit_hid.consumer_control import ConsumerControl
|
|
from adafruit_hid.consumer_control_code import ConsumerControlCode
|
|
|
|
button = digitalio.DigitalInOut(board.D12)
|
|
button.direction = digitalio.Direction.INPUT
|
|
button.pull = digitalio.Pull.UP
|
|
|
|
encoder = rotaryio.IncrementalEncoder(board.D10, board.D9)
|
|
|
|
cc = ConsumerControl(usb_hid.devices)
|
|
|
|
button_state = None
|
|
last_position = encoder.position
|
|
|
|
while True:
|
|
current_position = encoder.position
|
|
position_change = current_position - last_position
|
|
if position_change > 0:
|
|
for _ in range(position_change):
|
|
cc.send(ConsumerControlCode.VOLUME_INCREMENT)
|
|
print(current_position)
|
|
elif position_change < 0:
|
|
for _ in range(-position_change):
|
|
cc.send(ConsumerControlCode.VOLUME_DECREMENT)
|
|
print(current_position)
|
|
last_position = current_position
|
|
if not button.value and button_state is None:
|
|
button_state = "pressed"
|
|
if button.value and button_state == "pressed":
|
|
print("Button pressed.")
|
|
cc.send(ConsumerControlCode.PLAY_PAUSE)
|
|
button_state = None
|