from machine import Pin, PWM, ADC
import utime
# Buzzer pinleri
buzzers = [PWM(Pin(2)), PWM(Pin(3)), PWM(Pin(4)), PWM(Pin(5))]
effect_buzzer1 = PWM(Pin(18))
effect_buzzer2 = PWM(Pin(19))
# LED pinleri
leds = [Pin(6, Pin.OUT), Pin(7, Pin.OUT), Pin(8, Pin.OUT)]
# Potansiyometre
pot = ADC(Pin(26))
# Butonlar
button1 = Pin(14, Pin.IN, Pin.PULL_DOWN)
button2 = Pin(15, Pin.IN, Pin.PULL_DOWN)
# HC-SR04
trigger = Pin(16, Pin.OUT)
echo = Pin(17, Pin.IN)
def measure_distance():
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(10)
trigger.low()
duration = utime.time_pulse_us(echo, 1, 30000)
distance_cm = (duration * 0.0343) / 2
return distance_cm
def set_led(index):
for i in range(3):
leds[i].value(1 if i == index else 0)
def play_note(buzzer, freq, duration_ms):
buzzer.freq(freq)
buzzer.duty_u16(30000)
utime.sleep_ms(duration_ms)
buzzer.duty_u16(0)
def mario_theme():
notes = [659, 659, 0, 659, 0, 523, 659, 0, 784]
durations = [150,150,150,150,150,150,150,150,150]
for freq, dur in zip(notes, durations):
for b in buzzers:
if freq > 0:
play_note(b, freq, dur)
utime.sleep_ms(50)
def giorno_theme():
notes = [440, 494, 523, 587, 659, 698, 784]
durations = [200,200,200,200,200,200,200]
for freq, dur in zip(notes, durations):
for b in buzzers:
play_note(b, freq, dur)
utime.sleep_ms(50)
def ba_dum_tss():
play_note(effect_buzzer1, 196, 300)
play_note(effect_buzzer1, 220, 300)
play_note(effect_buzzer1, 196, 150)
play_note(effect_buzzer1, 82, 600)
def sad_effect():
play_note(effect_buzzer2, 392, 300)
play_note(effect_buzzer2, 370, 300)
play_note(effect_buzzer2, 349, 300)
play_note(effect_buzzer2, 330, 600)
while True:
distance = measure_distance()
tempo = int(pot.read_u16() / 65535 * 200) + 50 # tempo 50–250 ms arası
if button1.value():
ba_dum_tss()
elif button2.value():
sad_effect()
elif distance < 100:
set_led(0)
giorno_theme()
elif distance < 200:
set_led(1)
mario_theme()
else:
set_led(2)
for b in buzzers:
b.duty_u16(0) # Hepsini sustur
utime.sleep(0.1)
FPS: 0
Power: 0.00W
Power: 0.00W