import machine
import time
# Налаштування піщалки (бузера) на GPIO 23
buzzer_pin = machine.Pin(23, machine.Pin.OUT)
# Використовуємо ШІМ (PWM) для генерації звуку різної частоти
buzzer = machine.PWM(buzzer_pin)
buzzer.duty(0) # Спочатку звук вимкнено
# Словник із налаштуваннями кнопок: GPIO пін -> (Назва/Колір, Частота звуку в Гц)
BUTTONS_CONFIG = {
34: ("Червона кнопка (btn1)", 262), # Нота До (C4)
35: ("Зелена кнопка (btn2)", 294), # Нота Ре (D4)
32: ("Синя кнопка (btn3)", 330), # Нота Мі (E4)
33: ("Жовта кнопка (btn4)", 349), # Нота Фа (F4)
25: ("Біла кнопка (btn5)", 392), # Нота Соль (G4)
26: ("Сіра кнопка (btn6)", 440) # Нота Ля (A4)
}
# Ініціалізація кнопок із підтяжкою до живлення (PULL_UP)
buttons = {}
for pin_num, config in BUTTONS_CONFIG.items():
buttons[pin_num] = machine.Pin(pin_num, machine.Pin.IN, machine.Pin.PULL_UP)
print("Система запущена! Натискайте кнопки для відтворення звуку.")
while True:
any_button_pressed = False
for pin_num, pin_obj in buttons.items():
# Оскільки підключено до GND, 0 означає, що кнопка натиснута
if pin_obj.value() == 0:
name, frequency = BUTTONS_CONFIG[pin_num]
print(f"Натиснуто: {name} | Частота: {frequency} Гц")
# Вмикаємо звук заданої частоти
buzzer.freq(frequency)
buzzer.duty(512) # 50% гучності
any_button_pressed = True
break # Пріоритет віддається першій знайденій натиснутій кнопці
# Якщо жодна кнопка не натиснута — вимикаємо звук
if not any_button_pressed:
buzzer.duty(0)
time.sleep(0.05) # Невелика затримка для захисту від брязкіту контактів