import board
import digitalio
import time
import busio
from adafruit_display_text import label
import adafruit_displayio_ssd1306
import terminalio
import displayio
# Setup I2C for OLED
i2c = busio.I2C(board.GP8, board.GP9) # Change pins if necessary
displayio.release_displays()
display_bus = displayio.I2CDisplay(i2c, device_address=0x3C)
# OLED setup
WIDTH = 128
HEIGHT = 64
BORDER = 5
display = adafruit_displayio_ssd1306.SSD1306(display_bus, width=WIDTH, height=HEIGHT)
# Setup buttons
button_pins = [board.GP12, board.GP13, board.GP14, board.GP15] # Change pins if necessary
buttons = []
for pin in button_pins:
button = digitalio.DigitalInOut(pin)
button.direction = digitalio.Direction.INPUT
button.pull = digitalio.Pull.UP
buttons.append(button)
# Setup buzzer
buzzer = digitalio.DigitalInOut(board.GP16) # Change pin if necessary
buzzer.direction = digitalio.Direction.OUTPUT
# Create display group
splash = displayio.Group()
display.show(splash)
# Draw a label
text_area = label.Label(terminalio.FONT, text="Button States", color=0xFFFFFF, x=10, y=10)
splash.append(text_area)
button_labels = []
for i in range(len(button_pins)):
button_label = label.Label(terminalio.FONT, text=f"Button {i+1}: UP", color=0xFFFFFF, x=10, y=30 + 10 * i)
button_labels.append(button_label)
splash.append(button_label)
while True:
for i, button in enumerate(buttons):
if not button.value: # Button pressed
buzzer.value = True
button_labels[i].text = f"Button {i+1}: DOWN"
else: # Button not pressed
button_labels[i].text = f"Button {i+1}: UP"
time.sleep(0.1)
buzzer.value = False