import board
import digitalio
import busio
import time
from i2c_lcd import I2cLcd # Updated import
# Initialize I2C LCD (16x2)
i2c = busio.I2C(scl=board.GP3, sda=board.GP2)
lcd = I2cLcd(i2c, 0x27, 2, 16)
# Configure switches
switch1 = digitalio.DigitalInOut(board.GP14)
switch1.direction = digitalio.Direction.INPUT
switch1.pull = digitalio.Pull.UP
switch2 = digitalio.DigitalInOut(board.GP15)
switch2.direction = digitalio.Direction.INPUT
switch2.pull = digitalio.Pull.UP
# Configure LEDs
leds = [
digitalio.DigitalInOut(board.GP16),
digitalio.DigitalInOut(board.GP17),
digitalio.DigitalInOut(board.GP18)
]
for led in leds:
led.direction = digitalio.Direction.OUTPUT
led.value = False
# Personal information - REPLACE WITH YOUR DETAILS
FULL_NAME = "Mk42 inbound"
MATRIC_NO = "The Prodigal Son"
def blink_leds():
"""Blinks all three LEDs simultaneously"""
for led in leds:
led.value = True
time.sleep(0.5)
for led in leds:
led.value = False
def scroll_text(text, direction='right-to-left', delay=0.3):
"""Displays scrolling text on LCD with specified direction"""
padding = " " * 16
display_text = padding + text + padding
if direction == 'right-to-left':
for i in range(len(display_text) - 15):
lcd.clear()
lcd.putstr(display_text[i:i+16]) # Fixed method name and syntax
time.sleep(delay)
else: # left-to-right
for i in range(len(display_text) - 16, -1, -1):
lcd.clear()
lcd.putstr(display_text[i:i+16]) # Fixed method name and syntax
time.sleep(delay)
lcd.clear()
# Main program loop
while True:
if not switch1.value: # Switch1 pressed (active low)
blink_leds()
scroll_text(FULL_NAME, 'right-to-left')
if not switch2.value: # Switch2 pressed (active low)
blink_leds()
scroll_text(MATRIC_NO, 'left-to-right')
time.sleep(0.1) # Debounce delay