from machine import Pin, PWM
import time
# --- PINS (MATCHES YOUR DIAGRAM) ---
speaker = PWM(Pin(8)) # GP8 → buzzer
led = Pin(13, Pin.OUT) # GP13 → LED
button_pins = [12, 11, 10, 9, 7, 6, 5, 4] # GP12–GP4
buttons = [Pin(pin, Pin.IN, Pin.PULL_UP) for pin in button_pins]
# --- NOTES (Hz) ---
button_tones = [262, 294, 330, 349, 392, 440, 494, 523]
# --- TRACKING ---
button_pressed = [False] * 8
led_on = False
led.on() # start LED OFF
print("LED value 0")
# --- MAIN LOOP ---
while True:
pitch = 0
# Check buttons
for i in range(8):
if buttons[i].value() == 0: # button pressed
pitch = button_tones[i]
button_pressed[i] = True
# Play sound
if pitch != 0:
speaker.freq(pitch)
speaker.duty_u16(30000)
else:
speaker.duty_u16(0)
# Turn LED on after ALL buttons pressed at least once
if not led_on:
all_pressed = True
for pressed in button_pressed:
if not pressed:
all_pressed = False
break
if all_pressed:
led.off()
print("led value 1")
led_on = True # stays on forever
time.sleep(0.01)