from machine import Pin
from utime import sleep_ms
from Tone import tone, noTone
from lcd import LCD
#from eeprom import guardar, leer
#Entradas y salidas
btn_v = Pin(13, Pin.IN, Pin.PULL_UP)
btn_r = Pin(14, Pin.IN, Pin.PULL_UP)
Buzzer = 16
#Variables a usar
inicio = False
valentin_state = False
i = 0
j = 1
# Función que se ejecuta cuando se presiona el botón
def boton_presionado(pin):
global inicio
inicio = not inicio
sleep_ms(100)
# Configurar la interrupción para detectar flancos de bajada (botón presionado)
btn_v.irq(trigger=Pin.IRQ_FALLING, handler=boton_presionado)
#Desplazar mensaje a la izq
def des (esp):
for x in range(esp):
lcd.shift_left()
sleep_ms(200)
#sleep_ms(1000)
figura_1 = (0x0A,0x0A,0x0A,0x00,0x11,0x11,0x0E,0x00) #Feliz
figura_2 = (0x0A,0x0A,0x0A,0x00,0x0E,0x11,0x11,0x00) #Triste
figura_3 = (0x00,0x0A,0x1F,0x1F,0x1F,0x0E,0x04,0x00) #Corazon
figura_4 = (0x02,0x09,0x05,0x15,0x15,0x05,0x09,0x02) #sonido
figura_5 = (0x0E,0x0E,0x0E,0x15,0x0E,0x04,0x0A,0x1B) #MonitoA
figura_6 = (0x0E,0x0E,0x0E,0x04,0x1F,0x04,0x0A,0x1B) #MonitoB
figura_7 = (0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00) #Nada
#figura_7 = (0x03,0x02,0x02,0x02,0x1E,0x1E,0x12,0x12) #Dinosaurio
figura_8 = (0x01,0x03,0x1F,0x1F,0x1F,0x1F,0x03,0x01) #Bocina
figura_9 = (0x01,0x03,0x05,0x09,0x09,0x0B,0x1B,0x18) #Musical
lcd = LCD(0,1,2,3,4,5) # RS, E, D4, D5, D6, D7
lcd.cgram_init() # Accede a la CGRAM para guardar caracteres especiales
lcd.cgram_create_char(0, figura_1) # Guarda los caracteres especiales en las posiciones 0 a 7 de la CGRAM
lcd.cgram_create_char(1, figura_2)
lcd.cgram_create_char(2, figura_3)
lcd.cgram_create_char(3, figura_4)
lcd.cgram_create_char(4, figura_5)
lcd.cgram_create_char(5, figura_6)
lcd.cgram_create_char(6, figura_7)
lcd.cgram_create_char(7, figura_8)
lcd.cgram_close() # Sale de la CGRAM
lcd.clear()
#Estas son las notas que voy a utilizar, el numero corresponde a la frec.
NOTE_GS3 = 208
NOTE_B3 = 247
NOTE_CS4 = 277
NOTE_D4 = 294
NOTE_E4 = 330
NOTE_FS4 = 370
NOTE_GS4 = 415
NOTE_A4 = 440
NOTE_B4 = 494
NOTE_CS5 = 554
NOTE_D5 = 587
NOTE_E5 = 659
#Orden de las notas para tocar correctamente la cancion
cancion = (NOTE_B4, NOTE_CS5, NOTE_B4, NOTE_B4, NOTE_CS5, NOTE_E5, NOTE_GS4, NOTE_A4, NOTE_GS4, NOTE_GS4, NOTE_A4, NOTE_CS5, NOTE_D4, NOTE_FS4,
NOTE_CS5, NOTE_B4, NOTE_D4, NOTE_FS4, NOTE_CS5, NOTE_B4, NOTE_D4, NOTE_FS4, NOTE_CS5, NOTE_B4, NOTE_D4, NOTE_FS4, NOTE_CS5, NOTE_D5, NOTE_E5,
NOTE_CS5, NOTE_CS4, NOTE_E4, NOTE_A4, NOTE_GS4, NOTE_CS4, NOTE_E4, NOTE_A4, NOTE_GS4, NOTE_CS4, NOTE_E4, NOTE_A4, NOTE_GS4, NOTE_A4, NOTE_B4,
NOTE_GS4, NOTE_A4, NOTE_B4, NOTE_GS4, NOTE_D4, NOTE_FS4, NOTE_CS5, NOTE_B4, NOTE_D4, NOTE_FS4, NOTE_CS5, NOTE_B4, NOTE_D4, NOTE_FS4, NOTE_CS5,
NOTE_B4, NOTE_D4, NOTE_FS4, NOTE_CS5, NOTE_D5, NOTE_E5, NOTE_CS5, NOTE_CS4, NOTE_E4, NOTE_A4, NOTE_GS4, NOTE_CS4, NOTE_E4, NOTE_A4, NOTE_GS4,
NOTE_CS4, NOTE_E4, NOTE_A4, NOTE_GS4, NOTE_A4, NOTE_B4, NOTE_GS4, NOTE_A4, NOTE_B4, NOTE_GS4, NOTE_B4, NOTE_CS5, NOTE_GS4, NOTE_FS4, NOTE_FS4,
NOTE_B4, NOTE_CS5, NOTE_GS4, NOTE_FS4, NOTE_FS4, NOTE_CS5, NOTE_E5, NOTE_D5, NOTE_CS5, NOTE_D5, NOTE_CS5, NOTE_B4, NOTE_CS5, NOTE_E5, NOTE_D5,
NOTE_CS5, NOTE_D5, NOTE_CS5, NOTE_B4, NOTE_GS4, NOTE_FS4, NOTE_D4, NOTE_B3, NOTE_GS3, NOTE_B4, NOTE_CS5, NOTE_GS4, NOTE_FS4, NOTE_FS4, NOTE_B4,
NOTE_CS5, NOTE_GS4, NOTE_FS4, NOTE_FS4, NOTE_CS5, NOTE_E5, NOTE_D5, NOTE_CS5, NOTE_D5, NOTE_CS5, NOTE_B4, NOTE_CS5, NOTE_E5, NOTE_D5, NOTE_CS5,
NOTE_D5, NOTE_CS5, NOTE_B4, NOTE_GS4, NOTE_FS4, NOTE_D4, NOTE_B3, NOTE_GS3)
#duracion de las notas
duracion = (250, 250, 1000, 250, 250, 1000, 250, 250, 1000, 250, 250, 1500, 125, 125, 125, 500, 125, 125, 125, 500, 125, 125, 125, 500, 125,
125, 125, 125, 125, 125, 125, 125, 125, 500, 125, 125, 125, 500, 125, 125, 125, 500, 125, 150, 125, 125, 150, 125, 125, 125, 125,
500, 125, 125, 125, 500, 125, 125, 125, 500, 125, 125, 125, 125, 125, 125, 125, 125, 125, 500, 125, 125, 125, 500, 125, 125, 125,
500, 125, 150, 125, 125, 150, 125, 350, 250, 250, 350, 350, 250, 250, 250, 350, 350, 125, 125, 125, 125, 125, 500, 500, 125, 125,
125, 125, 125, 500, 500, 50, 50, 50, 50, 50, 350, 250, 250, 350, 350, 250, 250, 250, 350, 350, 125, 125, 125, 125, 125, 500, 500,
125, 125, 125, 125, 125, 500, 500, 50, 50, 50, 50, 50)
while not inicio:
lcd.move_to(0,0)
lcd.putstr("VERDE = Iniciar")
lcd.move_to(0,1)
lcd.putstr("ROJO = ?")
#modo valentinxd
while (valentin_state == False):
mensaje1 = ("IGNIFICA QUE LOGRE TERMINAR ESTA COSA A ", "NAR ESTA COSA A TIEMPO ASI QUE TIENES 5 ", "SI QUE TIENES 5 SEG PARA DARME UN BESO Y", " DARME UN BESO Y PRESIONAR EL BOTON VERD", "AR EL BOTON VERDE O ESTA MADRE VA A EXPL", " MADRE VA A EXPLOTAR... APURATE AMOR")
lcd.clear()
lcd.putstr("HOLA AMOR, SI VES ESTO SIGNIFICA QUE LOG")
sleep_ms(1000)
des(24)
lcd.clear()
for i in range (6):
lcd.putstr(mensaje1[i])
des(24)
lcd.clear()
sleep_ms(500)
lcd.clear()
lcd.putstr("QUE PREFIERES?")
sleep_ms(1000)
lcd.clear()
lcd.putstr("A) UNA JARRA DE MIADOS?")
sleep_ms(1000)
des(7)
lcd.clear()
lcd.putstr("B) UN SHOT DE POPO?")
sleep_ms(1000)
des(3)
lcd.clear()
lcd.putstr("C) SER MI VALENTIN ELIZALDE?")
lcd.cgram_putc(2)
sleep_ms(1000)
des(13)
lcd.clear()
lcd.putstr("DILO EN VOZ ALTA PARA ESCANEAR TU VOZ")
sleep_ms(1000)
des(22)
lcd.clear()
#Mensaje y orden de aparicion de los emojis
mensaje = ("QUIERO DEDICARTE","UNA CANCION " ,"ME TARDE MUCHO", "HACIENDO ESTO :|", "ASI QUE, OJALA", "TE GUSTE ", "TE AMO MUCHO", "REYNA ", "ESTO VA CON TODO", "MI AMOR ")
emojis = (2, 7, 0, 2, 2)
#Saludo inicial
lcd.move_to(1,0)
lcd.putstr("HOLA BOBISSS!")
lcd.cgram_putc(0)
sleep_ms(2000)
lcd.clear()
#Mostrar mensaje pre-cancion
for x in range(0, 5, 1):
lcd.putstr(mensaje[i])
lcd.move_to(0,1)
lcd.putstr(mensaje[j])
lcd.cgram_putc(emojis[x])
sleep_ms(2000)
lcd.clear()
i = i + 2
j = j + 2
lcd.putstr("JALESE VIEJO!")
lcd.cgram_putc(7)
lcd.cgram_putc(3)
sleep_ms(1000)
#Tocar cancion
while True:
for i in range (0, 142, 1):
tone(Buzzer, cancion[i], duracion[i])
if ((i in range (27,30)) or (i in range (63,66)) or (i in range (42,44)) or (i in range (45,48)) or (i in range (78,80)) or (i in range (81,83)) or (i in range (107,112)) or (i in range (136,142))):
print("R")
else:
noTone(Buzzer)
sleep_ms(150)
print("L")
noTone(Buzzer)
sleep_ms(1000)
#for x in range(21):
# lcd.shift_left()
# sleep_ms(200)