Esta sección de la guía, nos proporciona capacidades táctiles y de sonido a nuestro proyecto. Primero, vamos a aprender como utilizar los pads de toque capacitivo en la Circuit Playground Express. Le vamos a agregar a cada uno una respuesta que imprime, para saber que está funcionando.

circuitpython_TouchPads.jpg
Pads capacitivos

Vamos a comenzar con el pad táctil A1.

Renombra tu archivo code.py actual si deseas guardar algún cambio que hayas realizado. Luego descargas el siguiente archivo. Le cambias el nombre a code.py y lo copias a tu CPX.

from adafruit_circuitplayground.express import cpx

while True:
    if cpx.touch_A1:
        print('Touched 1!')

Ahora vamos a revisar el código.

En este código creamos un ciclo. La tarjeta está revisando constantemente a ver si has tocado A1, y te imprime un mensaje en la consola serial REPL, cuando lo haces. El código básicamente se lee como "si ud toca A1, imprima 'Touched 1!' ", y no hace falta más.

El siguiente archivo incluye el resto de pads capacitivos. Descarga el archivo. Cambia su nombre a code.py, y luego lo copias hacia la CPX.

from adafruit_circuitplayground.express import cpx

while True:
    if cpx.touch_A1:
        print('Touched 1!')
    elif cpx.touch_A2:
        print('Touched 2!')
    elif cpx.touch_A3:
        print('Touched 3!')
    elif cpx.touch_A4:
        print('Touched 4!')
    elif cpx.touch_A5:
        print('Touched 5!')
    elif cpx.touch_A6:
        print('Touched 6!')
    elif cpx.touch_A7:
        print('Touched 7!')

Ahora puedes tocar cualquier de los pads capacitivos, y la consola serial del REPL te va a avisar cual fue el que tocaste. ¡Has la prueba!

Vamos a ver una diferencia en el código.

Download: file
while True:
    if cpx.touch_A1:
        print('touched 1!')
    elif cpx.touch_A2:
        print('touched 2!')

Hasta el momento hemos utilizado ciclos de tipo while, condicionales de tipo if, y  else. Este código incluye una condicional de tipo elif. Un elif es la combinación de un else y un if, lo que básicamente significa "De otra forma, siempre y cuando".

Hay 7 pads táctiles. La tarjeta necesita saber cual es la que estás tocando, y dar una respuesta basado en cual pad estás tocando. El código dice "Si estás tocando A1, vas a imprimir'Touched 1!', de otra forma, si estás tocando A2, vas a imprimir 'Touched 2!', de otra forma, si estás tocando A3, vas a imprimir 'Touched 3!'" y así para cada uno de los pads táctiles. No podemos utilizar un else en este código, porque no es un simple escenario de si sí o no. Es más granular porque tiene 7 estados, uno para cada uno de los pad táctiles.

Haciendo Ruido

Ahora, vamos a aprender como tocamos tonos con el parlante integrado.

circuitpython_Speaker.jpg
Parlante integrado

Hay dos maneras para que suenen tonos con el parlante integrado. Una es usar play_tone, el cual toca un tono particular por una duración dada. La otra forma es utilizando start_tone y stop_tone, las que requieren que le pongas un disparador, como un botón (¡o un pad táctil!), para tocar un tono durante la duración del evento.

Vamos a comenzar realizando un tono sencillo. Descargue el archivo. Cambie su nombre a code.py y luego realice una copia hacia la CPX.

from adafruit_circuitplayground.express import cpx

cpx.play_tone(440, 1)

En el primer ejemplo, usamos play_tone, el cual necesita que se le diga una frecuencia (en Hz) y una duración (en segundos). Le hemos dicho una frecuencia de 440 Hz (un La central) y durante un segundo.

En este caso, el tono suena apenas el código se comienza a ejecutar, dado que no hay otro código que tenga que correr cuando la tarjeta inicia. Este código no repite el tono, solo lo toca una vez. Usted puede salvar de nuevo su code.py, o recargar el REPL para hacerla que toque el tono de nuevo.

Puedes cambiar tanto la frecuencia como la duración para cambiar el tono que tocas y la duración por la que va a sonar. Si necesitas tonos específicos, puedes buscar un generador de tonos en línea. ¡Diviértete con esto!

Start Tone, Stop Tone

Para nuestro piano de tonos, vamos a utilizar start_tone y stop_tone. Para este ejemplo, vamos a utilizar los pads A1 y A2 de la Circuit Playground Express.

Recuerda, si has realizado cambios que desees preservar, renombra tu archivo code.py a otro nombre. Descarga el siguiente archivo, cambia su nombre por code.py y luego lo copias a la CPX.

from adafruit_circuitplayground.express import cpx

while True:
    if cpx.touch_A1:
        cpx.start_tone(262)
    elif cpx.touch_A2:
        cpx.start_tone(294)
    else:
        cpx.stop_tone()

Este segundo ejemplo utiliza start_tone (o iniciar tono), el cual necesita que le des una frecuencia (en Hz), y luego stop_tone (o detener tono) se encarga de se detenga.

Si tocas A1, vas a escuchar un tono hasta que dejes de tocar A1. Si tocas A2, vas a escuchar un tono hasta que dejes de tocar A2. De nuevo hemos utilizado ciclos tipo while, y condiciones if, y elif y esta vez hemos agregado también un else. Este código básicamente significa: "Mientras esté tocando A1, toque cierto tono, o de lo contrario detenga el tono. De otra forma, mientras esté tocando A2, toque cierto tono, o de lo contrario detenga el tono". El condicional else aplica para ambos el  if y el elif de forma separada.

¡Esta es la base del piano de toque capacitivo! Ya casi llegamos. ¡En la siguiente sección, vamos a juntar todo lo que hemos aprendido en el proyecto final!

This guide was first published on Jul 01, 2020. It was last updated on Jul 01, 2020.

This page (Tocando tonos) was last updated on Oct 12, 2020.