import RPi.GPIO as GPIO
import time
# Buzzer pin configuration
buzzer_pin = 17 # Replace with the GPIO pin number your buzzer is connected to
# Initial GPIO setup
GPIO.setmode(GPIO.BCM)
GPIO.setup(buzzer_pin, GPIO.OUT)
# Dictionary of note frequencies
notes = {
'C': 261.63,
'D': 293.66,
'E': 329.63,
'F': 349.23,
'G': 392.00,
'A': 440.00,
'B': 493.88,
'C_high': 523.25,
}
# Function to play a note
def play_note(note, duration):
if note == ' ':
time.sleep(duration)
else:
GPIO.output(buzzer_pin, GPIO.HIGH)
time.sleep(duration)
GPIO.output(buzzer_pin, GPIO.LOW)
# Function to play a melody
def play_melody(melody):
for note, duration in melody:
play_note(note, duration)
try:
# Play the melody
example_melody = [
('E', 0.5),
('D', 0.5),
('C', 0.5),
('D', 0.5),
('E', 0.5),
('E', 0.5),
('E', 0.5),
('D', 0.5),
('D', 0.5),
('D', 0.5),
('E', 0.5),
('E', 0.5),
('E', 0.5),
('E', 0.5),
('D', 0.5),
('C', 0.5),
('D', 0.5),
('E', 0.5),
('E', 0.5),
('E', 0.5),
('E', 0.5),
('D', 0.5),
('D', 0.5),
('E', 0.5),
('D', 0.5),
('C', 0.5),
]
play_melody(example_melody)
except KeyboardInterrupt:
pass
finally:
# Clean up GPIO resources
GPIO.cleanup()