Richard Brauckmuller
Published

The NED Button

A button made for political satire, starring Dennis Nedry.

IntermediateShowcase (no instructions)90
The NED Button

Story

Read more

Schematics

Empty Housing Unit

Wiring Setup

Decorated Housing Unit

Completed Button Unit

Working Project

Code

Code for Button

Python
import time

import board
import digitalio
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
from adafruit_hid.keycode import Keycode

# A simple neat keyboard demo in CircuitPython

# The pins we'll use, each will have an internal pullup
keypress_pins = [board.A1, board.A2]
# Our array of key objects
key_pin_array = []
# The Keycode sent for each button, will be paired with a control key
keys_pressed = [Keycode.A, "https://www.youtube.com/watch?v=g_vZasFzMN4\n"]
control_key = Keycode.SHIFT

# The keyboard object!
time.sleep(1) # Sleep for a bit to avoid a race condition on some systems
keyboard = Keyboard(usb_hid.devices)
keyboard_layout = KeyboardLayoutUS(keyboard) # We're in the US :)

# Make all pin objects inputs with pullups
for pin in keypress_pins:
key_pin = digitalio.DigitalInOut(pin)
key_pin.direction = digitalio.Direction.INPUT
key_pin.pull = digitalio.Pull.UP
key_pin_array.append(key_pin)

# For most CircuitPython boards:
led = digitalio.DigitalInOut(board.LED)
# For QT Py M0:
# led = digitalio.DigitalInOut(board.SCK)
led.direction = digitalio.Direction.OUTPUT

print("Waiting for key pin...")

while True:
# Check each pin
for key_pin in key_pin_array:
if not key_pin.value: # Is it grounded?
i = key_pin_array.index(key_pin)
print("Pin #%d is grounded." % i)

# Turn on the red LED
led.value = True

while not key_pin.value:


pass # Wait for it to be ungrounded!
# "Type" the Keycode or string
key = keys_pressed[i] # Get the corresponding Keycode or string

if isinstance(key, str): # If it's a string...
keyboard_layout.write(key) # ...Print the string

else: # If it's not a string...
keyboard.press(control_key, key) # "Press"...
keyboard.release_all() # ..."Release"!

# Turn off the red LED
led.value = False

time.sleep(0.01)

Credits

Richard Brauckmuller
2 projects • 0 followers
Contact

Comments

Please log in or sign up to comment.