La Circuit Playground Express y la Bluefruit tienen un acelerómetro integrado el cual abre muchas oportunidades para usarlo como entradas. Una de esas entradas es un golpe ligero. Tienes la habilidad de darle un golpe ligero ("tap") para decirle algo a la tarjeta. Tenemos dos opciones, un solo golpe ligero, o doble golpe ligero. Un solo golpe ligero espera por un golpe ligero antes de reaccionar. El doble golpe ligero espera a dos golples ligeros antes de reaccionar. ¡Vamos a ver!

Agregue el siguiente código a su code.py. Si necesita ayuda, recuerde revisar aquí.

"""This example prints to the serial console when the board is double-tapped."""
import time
from adafruit_circuitplayground import cp

# Change to 1 for single-tap detection.
cp.detect_taps = 2

while True:
    if cp.tapped:
        print("Tapped!")
    time.sleep(0.05)

Abra la consola serial para ver cuando la tarjeta recibe un doble golpe ligero. ¡Trate de darle un par de golpes ligeros a la tarjeta para ver que imprime!

Primero importamos a time y acp.

Luego definimos cp.detect_taps = 2.Esto le dice al código que detecte un doble golpe ligero o dos golpes ligeros antes de responder.

Dentro de nuestro ciclo tenemos if cp.tapped:. El código le dijo a cp.tapped que estamos esperando por 2 golpes antes de responder. Así que si la tarjeta recibe dos golples ligeros, la respuesta es imprimir (print) el texto "Tapped!" hacia la consola serial. Para ver esto, abra la consola serial, y dele dos golpes ligeros a su tarjeta. Hemos incluido un time.sleep(0.05) para evitar que por error se detecten varios golpes dobles a la vez.

Tratar cambiando cp.detect_taps a 1. ¡Dale un solo golple ligero a la tarjeta para ver la misma respuesta!

Ahora, ¡vamos a realizar algo con eso! Agregue el siguiente código a su code.py:

"""This example turns on the little red LED and prints to the serial console when you double-tap
the Circuit Playground!"""
import time
from adafruit_circuitplayground import cp

# Change to 1 for detecting a single-tap!
cp.detect_taps = 2

while True:
    if cp.tapped:
        print("Tapped!")
        cp.red_led = True
        time.sleep(0.1)
    else:
        cp.red_led = False

Trata con doble golpe ligero. ¡LED rojo!

Vamos aver el código. Primero importamos a time y acp.

Vamos a mantener cp.detect_taps = 2 para decirle al código que espere por un doble golpe ligero.

Dentro de nuestro ciclo, vamos a revisar si (if) la tarjeta ha recibido un doble golpe ligero. Aún vamos a imprirmir (print) a la consola serial, para que podamos ver cuando hemos realizado un doble golpe ligero con éxito. Pero ahora, le hemos agregado el prender el LED rojo. Ya que el evento de un doble golpe ligero es extremadamente rápido, también hemos incluido un time.sleep(0.1) para que el LED rojo tenga más chance de ser visto por nosotros. Sin eso, sería un flash muy rápido. Y tenemos nuestroelse para apagar el LED rojo cuando no estamos haciendo golpes sobre la tarjeta; de otra forma se prendería y nunca se apagaría.

Sencillo o Doble

No puedes detectar golpes ligeros de tipo sencillos y dobles a la vez; es una limitante del hardware. Puedes incluir detección para golpes ligeros tanto sencillos como dobles en un solo pedazo de código si creas una separación entre ellos de alguna forma. Vamos a ver como. Agrega el siguiente código a tu code.py.

"""This example shows how you can use single-tap and double-tap together with a delay between.
Single-tap the board twice and then double-tap the board twice to complete the program."""
from adafruit_circuitplayground import cp

# Set to check for single-taps.
cp.detect_taps = 1
tap_count = 0

# We're looking for 2 single-taps before moving on.
while tap_count < 2:
    if cp.tapped:
        tap_count += 1
print("Reached 2 single-taps!")

# Now switch to checking for double-taps
tap_count = 0
cp.detect_taps = 2

# We're looking for 2 double-taps before moving on.
while tap_count < 2:
    if cp.tapped:
        tap_count += 1
print("Reached 2 double-taps!")
print("Done.")
while True:
    cp.red_led = True

El código espera por dos golpes ligeros sencillos, y luego dos golpes ligeros dobles, para terminar la sencuencia. Así que si le haces dos veces golpes ligeros sencillos, y luegos dos veces golpes ligeros dobles, ¡vas a ver como el código imprime los mensajes mientras lo haces!

Vamos a observar el código. Primero importamos a cp y luego le definimos que espere por golpes ligeros sencillos con cp.detect_taps = 1.

Luego creamos la variable tap_count y la asignamos un valor de 0 contap_count = 0. Vamos a utilizar esto para llevar la cuenta de cuantas veces hemos hecho golpes ligeros en la tarjeta. Así sabremos cuando avanzar a la siguiente parte del código.

Nuestro ciclo es un poco diferente a ciclos anteriores. Este comienza con while tap_count < 2:. Esto dice, "siga en el bloque de código identado que pertenece al ciclo hasta que tap_count sea mayor que 2." Ya que tap_count ahorita está en 0, vamos a comenzar en el ciclo. El código dentro del ciclo dice, "Si la tarjeta ha recibido un golpe ligero sencillo, aumente tap_count por1."Cada vez que le haces un golpe ligero sencillo a la tarjeta, ella imprime (prints) hacia la consola serial, Single-tap! La primera vez que le haces un golpe ligero sencillo a la tarjeta,  tap_count = 1. La segunda vez, tap_count = 2. 2 no es menor que 2, así que luego del segundo tap, el código deja de trabajar dentro del ciclo, y continuar con la siguiente sección. Lo último que hace antes de continuar es imprimir (print) a la consola serial, Reached 2 single-taps! así que sabemos que hemos llegado al final de esta sección.

Luego, definimos tap_count = 0 de nuevo ya que vamos a detectar un nuevo tipo de golpe ligero. Para esperar golpes ligeros dobles, le decimos cp.detect_taps = 2.

En nuestro siguiente ciclo, es igual que el anterior. Mientras tap_count sea menor que 2, revise a ver si la tarjeta ha recibido el golpe ligero doble, y si es así imprima (print) Double tapped!y aumente tap_count por 1. Una vez que alcance 2, el código continúa. Luego imprimimos (print) a la consola serial Reached 2 double-taps!.

Lo último que hacemos es imprimir Done, y prender el LED rojo para saber que nuestro código terminó.

Este tipo de código es lo que hemos utilizado para crear una caja fuerte de combinación, donde la combinación es una serie de golpes ligeros. ¡Deja fluir la creatividad con esto y trata de buscar nuevas formas de como usarlo!

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

This page (Golpe Ligero) was last updated on Oct 25, 2020.