from machine import Pin, PWM
import time
#Diccionario con las notas y sus frecuencias
notas = {
'E4': 329.63, #MI
'A4': 440.00, #LA
'E5': 659.26, #MI\
'D5': 587.33, #RE\
'C5': 523.25, #DO\
'D4': 293.66, #RE
'C4': 261.63, #DO
'B4': 493.88, #SI
'G4': 392.00, #SOL
'A4.': 440.00 #LA (Reutilizando)
}
# Melodia
Cancion = [
'E4', 'E4', 'A4', 'E5', 'D5', 'C5', 'D5',
'A4', 'B4', 'C5', 'C5', 'D5', 'C5', 'B4',
'E4', 'E4', 'A4', 'E5', 'D5', 'C5', 'D5',
'A4', 'B4', 'C5', 'C5', 'B4', 'A4', 'G4', 'A4',
'E4', 'E4', 'A4', 'E5', 'D5', 'C5', 'D5',
'A4', 'B4', 'C5', 'C5', 'D5', 'C5', 'B4',
'E4', 'E4', 'A4', 'E5', 'D5', 'C5', 'D5',
'A4', 'B4', 'C5', 'C5', 'B4', 'A4', 'G4', 'A4',
'E4', 'E4', 'A4', 'E4', 'D4', 'E4', 'A4.',
'E5', 'D5', 'C5', 'D5', 'A4.', 'G4', 'A4', 'D5',
'A4', 'B4', 'C5', 'C5', 'C5', 'C5', 'D5', 'C5', 'B4',
'E4', 'E4', 'A4', 'E4', 'D4', 'E4', 'A4.',
'E5', 'D5', 'C5', 'D5', 'A4.', 'G4', 'A4', 'D5',
'A4', 'B4', 'C5', 'C5', 'B4', 'A4', 'G4', 'A4',
'E4', 'E4', 'A4', 'E5', 'D5', 'C5', 'D5',
'A4', 'B4', 'C5', 'C5', 'D5', 'C5', 'B4',
'E4', 'E4', 'A4', 'E5', 'D5', 'C5', 'D5',
'A4', 'B4', 'C5', 'C5', 'B4', 'A4', 'G4', 'A4',
]
# Duraciones en segundos
Duraciones = [
0.3, 0.3, 1.2, 0.3, 0.3, 0.3, 1.2,
0.3, 0.3, 1.2, 0.3, 0.3, 0.3, 1.2,
0.3, 0.3, 1.2, 0.3, 0.3, 0.3, 1.2,
0.3, 0.3, 1.0, 0.3, 0.6, 0.3, 0.3, 1.2,
0.3, 0.3, 1.2, 0.3, 0.3, 0.3, 1.2,
0.3, 0.3, 1.2, 0.3, 0.3, 0.3, 1.2,
0.3, 0.3, 1.2, 0.3, 0.3, 0.3, 1.2,
0.3, 0.3, 1.0, 0.3, 0.6, 0.3, 0.3, 1.2,
0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3,
0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3,
0.3, 0.3, 1.2, 0.3, 0.3, 0.3, 0.3, 0.3, 1.2,
0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3,
0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3,
0.3, 0.3, 1.0, 0.3, 1.0, 0.3, 0.3, 1.2,
0.3, 0.3, 1.2, 0.3, 0.3, 0.3, 1.2,
0.3, 0.3, 1.2, 0.3, 0.3, 0.3, 1.2,
0.3, 0.3, 1.2, 0.3, 0.3, 0.3, 1.2,
0.3, 0.3, 1.0, 0.3, 0.6, 0.3, 0.3, 1.2,
]
# Altavoz
Parlante = PWM(Pin(5))
# hacer sonar la melodia
for i in range(0,134): #el for recorre cada nota de la lista
nota = Cancion[i]
duracion = Duraciones[i]
if nota in notas:
frequency = notas[nota]
Parlante.freq(int(frequency))
Parlante.duty(512) # 50% ciclo de trabajo
time.sleep(duracion) #marca la duracion de cada nota
Parlante.duty(0) # apagar el parlante entre cada nota
if i < len(Cancion) - 1: #controla el tiempo de espera entre notas especificas
nota_sig = Cancion[i + 1]
if nota == 'A4' and nota_sig == 'E5':
time.sleep(0.2)
else:
if nota == 'D5' and nota_sig == 'A4':
time.sleep(0.2)
else:
time.sleep(0.06)