# Pico Game Timer & Dice Starter Code # 2025 Iffy Books (wtfpl) # https://iffybooks.net/pico-game-timer import board import digitalio import time import random # Initialize onboard LED pin board_led = digitalio.DigitalInOut(board.GP25) board_led.direction = digitalio.Direction.OUTPUT # Blink onboard LED for i in range(8): board_led.value = True time.sleep(0.1) board_led.value = False # Initialize vibration motor GP pin vibration_motor = digitalio.DigitalInOut(board.GP28) vibration_motor.direction = digitalio.Direction.OUTPUT # Initialize button GP pins button_1_pin = digitalio.DigitalInOut(board.GP0) button_1_pin.direction = digitalio.Direction.INPUT button_1_pin.pull = digitalio.Pull.UP button_2_pin = digitalio.DigitalInOut(board.GP3) button_2_pin.direction = digitalio.Direction.INPUT button_2_pin.pull = digitalio.Pull.UP # Create array of button pin objects button_pin_array = [button_1_pin, button_2_pin] # Initialize LED pins led_1 = digitalio.DigitalInOut(board.GP6) led_1.direction = digitalio.Direction.OUTPUT led_2 = digitalio.DigitalInOut(board.GP27) led_2.direction = digitalio.Direction.OUTPUT led_3 = digitalio.DigitalInOut(board.GP10) led_3.direction = digitalio.Direction.OUTPUT led_4 = digitalio.DigitalInOut(board.GP21) led_4.direction = digitalio.Direction.OUTPUT led_5 = digitalio.DigitalInOut(board.GP14) led_5.direction = digitalio.Direction.OUTPUT led_6 = digitalio.DigitalInOut(board.GP17) led_6.direction = digitalio.Direction.OUTPUT # Define function for turning all LEDs off def clear_leds(): for led_pin in led_pin_array: led_pin.value = False # Define function for turning all LEDs on def light_leds(): for led_pin in led_pin_array: led_pin.value = True # Define function for blinking LEDs in sequence def roll_leds(j=1): for i in range(j): for led_pin in led_pin_array: led_pin.value = True time.sleep(0.2) led_pin.value = False # Create an array of LED pin objects led_pin_array = [led_1, led_2, led_3, led_4, led_5, led_6] # Infinite loop while True: # Loop through button GP pin objects for button_pin in button_pin_array: # Is the pin grounded? if not button_pin.value: # If first button is pressed, roll dice if button_pin == button_pin_array[0]: clear_leds() roll_leds(2) clear_leds() # Pulse vibration motor vibration_motor.value = True time.sleep(0.2) vibration_motor.value = False # Choose a random integer from 1 to 6 random_number = random.randint(1,6) # Turn on LEDs for led_pin in led_pin_array[:random_number]: led_pin.value = True time.sleep(0.1) # If second button is pressed, start countdown timer elif button_pin == button_pin_array[1]: # Timer duration in seconds timer_seconds = 60 # Turn on all LEDs light_leds() # Turn off LEDs one by one for led_pin in led_pin_array: time.sleep(timer_seconds/len(led_pin_array)) led_pin.value = False # Blink LEDs and pulse vibration motor roll_leds(1) for j in range(2): vibration_motor.value = True time.sleep(0.33) vibration_motor.value = False time.sleep(0.1) roll_leds(3) clear_leds()