¡Ahora si vamos a juntar lo que hemos venido aprendiendo!
Asegúrate de salvar tu code.py si has realizado cambios que deseas preservar. Descarga el siguiente archivo, cambia su nombre a code.py y lo salvas hacia tu Circuit Playground Express.
# SPDX-FileCopyrightText: 2017 Kattni Rembor for Adafruit Industries # # SPDX-License-Identifier: MIT from adafruit_circuitplayground import cp while True: if cp.switch: print("Slide switch off!") cp.pixels.fill((0, 0, 0)) cp.stop_tone() continue if cp.touch_A4: print('Touched A4!') cp.pixels.fill((15, 0, 0)) cp.start_tone(262) elif cp.touch_A5: print('Touched A5!') cp.pixels.fill((15, 5, 0)) cp.start_tone(294) elif cp.touch_A6: print('Touched A6!') cp.pixels.fill((15, 15, 0)) cp.start_tone(330) elif cp.touch_A7: print('Touched A7!') cp.pixels.fill((0, 15, 0)) cp.start_tone(349) elif cp.touch_A1: print('Touched A1!') cp.pixels.fill((0, 15, 15)) cp.start_tone(392) elif cp.touch_A2 and not cp.touch_A3: print('Touched A2!') cp.pixels.fill((0, 0, 15)) cp.start_tone(440) elif cp.touch_A3 and not cp.touch_A2: print('Touched A3!') cp.pixels.fill((5, 0, 15)) cp.start_tone(494) elif cp.touch_A2 and cp.touch_A3: print('Touched "8"!') cp.pixels.fill((15, 0, 15)) cp.start_tone(523) else: cp.pixels.fill((0, 0, 0)) cp.stop_tone()
Estudiemos el código:
Lo primero que hacemos es configurar el interruptor deslizante para que el proyecto se pueda activar y desactivar.
while True: if cpx.switch: print("Slide switch off!") cpx.pixels.fill((0, 0, 0)) cpx.stop_tone() continue
Esto es al inicio del código. Todo el código de este proyecto se encuentra dentro de este ciclo tipo while
. Lo primero que el código hace dentro de este ciclo, es revisar si el interruptor se encuentra al lado izquierdo. Para propósitos de este proyecto, eso significa "apagado". Si está apagado, el código va a imprimir "Slide switch off!
", apaga los LEDs, y deja de tocar cualquier sonido. Luego, el continue
se asegura que el código no se detenga ahí, sino que continúe a las dos secciones a continuación.
Luego, vamos a programar para que cada pad táctil toque un tono diferente, y que muestre un color diferente en los NeoPixeles. Vamos a dejarle los prints, para tener algo de retroalimentación en el REPL.
Un piano toca notas de la más baja hacia la izquierda, hacia la más alta a la derecha. Para permitirle a nuestras "teclas" que estén en la configuración correcta, vamos a utilizar cables de lagarto con punta de pin, para que nos permita acomodarlos como teclas, y vamos a tener que hacer un par de cosas fuera de orden. Vamos a programar los pads táctiles en el mismo orden que vamos colocando los limones, comenzando desde la izquiera. Iniciemos por A4:
if cpx.touch_A4: print('Touched A4!') cpx.pixels.fill((15, 0, 0)) cpx.start_tone(262)
Si tocas a A4, el código imprime "Touched A4!
" en el REPL, prende las luces de color rojo, y toca un tono de 262 Hz (lo cual es un Do medio). Esta es la primera "tecla" de nuestro piano. A5, A6, A7 y A1 básicamente hacen lo mismo, pero les cambiamos el tono y el color. Aquí usamos condicionales tipo elif
en lugar de condicionales tipo if
.
Hay 7 pads táctileles. Vamos a incluir 8 tonos para crear una octava completa. Para simular este pad número 8, vas a tocar A2 y A3 al mismo tiempo. De esta forma, tenemos que escribir el código que haga la diferencia entre A2, entre A3 y entre los dos al mismo tiempo.
Miremos:
elif cpx.touch_A2 and not cpx.touch_A3: print('Touched A2!') cpx.pixels.fill((0, 0, 15)) cpx.start_tone(440) elif cpx.touch_A3 and not cpx.touch_A2: print('Touched A3!') cpx.pixels.fill((5, 0, 15)) cpx.start_tone(494)
Si tocas A2 pero no A3, el código imprime: "Touched A2!
", y muestra el color dado y toca el tono dado. Si tocas A3 pero no A2, el código imprime: "Touched A2!
", y muestra el color dado y toca el tono dado.
El pad simulado funciona de esta forma:
elif cpx.touch_A2 and cpx.touch_A3: print('Touched "8"!') cpx.pixels.fill((15, 0, 15)) cpx.start_tone(523)
Si estás tocando A2 y A3, el código imprime "Touched "8"!
", despliega el color final, y suena el tono final.
La última pieza del código es donde le decimos que si no está tocando nada, apague las luces, y deje de tocar tonos.
else: cpx.stop_tone() cpx.pixels.fill((0, 0, 0))
Ahora, ¡si tocas los pads, vas a escuchar los tonos y a ver los colores según se asignaron!
¡Ahora vamos a agregarle nuestras teclas de frutas!
Apaga tu Circuit Playground Express. Conecta un cable de lagarto a cada uno de los pads.
Las vas a querer acomodar de forma que no se toquen. Puedes doblar ligeramente los cables para convencerlos que se queden donde los necesitas. Si los cables se tocan, puede que parezca como si los estuvieran tocando.
El acomodarlos de esta forma, permite que no se toquen:
Los clips se conectan de forma que permitan abanicarse, y para evitar interferencia de los otros clips.
Note como el clip que se conectó a A7, ha sido doblado dos veces para lograr acortar su tamaño.
Ahora vamos a conectar las frutas. Con limas, es más sencillo porque puedes pinchar su piel con facilidad utilizando una punta de pin.
Ahora acomoda las limas en una línea, pero no muy cerca la una de la otra. Al igual que con los cables, el poner las limas muy cerca, puede causar interferencia.
Conecte su Circuit Playground Express. Puede que necesites presionar el botón de reset luego de conectarla, si está conectada a batería.
¡Ahora es tiempo de tocar! Este video muestra una canción siendo tocada en el Piano de Limones. ¡Que te diviertas tocando!
Page last edited January 21, 2025
Text editor powered by tinymce.