71 lines
1.8 KiB
Python
71 lines
1.8 KiB
Python
# SPDX-FileCopyrightText: Copyright (c) 2021 John Park for Adafruit
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
# Deco Keypad
|
|
|
|
|
|
import time
|
|
import board
|
|
from digitalio import DigitalInOut, Pull
|
|
from adafruit_debouncer import Debouncer
|
|
import usb_hid
|
|
from adafruit_hid.keyboard import Keyboard
|
|
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
|
|
from adafruit_hid.keycode import Keycode
|
|
import neopixel
|
|
|
|
print("- Deco Keypad -")
|
|
time.sleep(1) # Sleep for a bit to avoid a race condition on some systems
|
|
|
|
# ----- Keymap ----- #
|
|
# change as needed, e.g. capital A (Keycode.SHIFT, Keycode.A)
|
|
switch_a_output = Keycode.Z
|
|
switch_b_output = Keycode.X
|
|
|
|
# ----- Keyboard setup ----- #
|
|
keyboard = Keyboard(usb_hid.devices)
|
|
keyboard_layout = KeyboardLayoutUS(keyboard) # We're in the US :)
|
|
|
|
# ----- Key setup ----- #
|
|
switch_a_in = DigitalInOut(board.D5)
|
|
switch_b_in = DigitalInOut(board.D6)
|
|
switch_a_in.pull = Pull.UP
|
|
switch_b_in.pull = Pull.UP
|
|
switch_a = Debouncer(switch_a_in)
|
|
switch_b = Debouncer(switch_b_in)
|
|
|
|
# ----- NeoPixel setup ----- #
|
|
MAGENTA = 0xFF00FF
|
|
CYAN = 0x0088DD
|
|
WHITE = 0xCCCCCC
|
|
BLACK = 0x000000
|
|
|
|
pixel_pin = board.D9
|
|
pixels = neopixel.NeoPixel(pixel_pin, 2, brightness=1.0)
|
|
pixels.fill(BLACK)
|
|
time.sleep(0.3)
|
|
pixels.fill(WHITE)
|
|
time.sleep(0.3)
|
|
pixels.fill(BLACK)
|
|
time.sleep(0.3)
|
|
pixels[0] = MAGENTA
|
|
pixels[1] = CYAN
|
|
|
|
|
|
while True:
|
|
switch_a.update() # Debouncer checks for changes in switch state
|
|
switch_b.update()
|
|
|
|
if switch_a.fell:
|
|
keyboard.press(switch_a_output)
|
|
pixels[0] = WHITE
|
|
if switch_a.rose:
|
|
keyboard.release(switch_a_output)
|
|
pixels[0] = MAGENTA
|
|
|
|
if switch_b.fell:
|
|
keyboard.press(switch_b_output)
|
|
pixels[1] = WHITE
|
|
if switch_b.rose:
|
|
keyboard.release(switch_b_output)
|
|
pixels[1] = CYAN
|