from machine import Pin
import time
import random
# LED pins
led_pins = [13, 12, 14, 27, 26, 25, 33]
leds = [Pin(p, Pin.OUT) for p in led_pins]
# Button (GPIO 4 to GND)
button = Pin(4, Pin.IN, Pin.PULL_UP)
# Buzzer (GPIO 15)
buzzer = Pin(15, Pin.OUT)
# Clear all LEDs
def clear_leds():
for led in leds:
led.value(0)
# Show dice number
def show(num):
clear_leds()
if num == 1:
leds[3].value(1)
elif num == 2:
leds[0].value(1)
leds[6].value(1)
elif num == 3:
leds[0].value(1)
leds[3].value(1)
leds[6].value(1)
elif num == 4:
leds[0].value(1)
leds[1].value(1)
leds[5].value(1)
leds[6].value(1)
elif num == 5:
leds[0].value(1)
leds[1].value(1)
leds[3].value(1)
leds[5].value(1)
leds[6].value(1)
elif num == 6:
leds[0].value(1)
leds[1].value(1)
leds[2].value(1)
leds[4].value(1)
leds[5].value(1)
leds[6].value(1)
while True:
# Wait for button press
if button.value() == 0:
time.sleep(0.05) # debounce
if button.value() == 0:
# 🔊 Start buzzer
buzzer.value(1)
# 🎲 Rolling effect
for _ in range(10):
clear_leds()
leds[random.randint(0,6)].value(1)
time.sleep(0.1)
# 🔊 Stop buzzer
buzzer.value(0)
# Show final number
number = random.randint(1,6)
show(number)
# Wait until button released
while button.value() == 0:
pass
time.sleep(0.2)