La Circuit Playground Express y la Bluefruittienen dos botones. El botón A está la izquierda, y el botón B está a la derecha. Aunque las imágenes son de la Circuit Playground Express, los botones están en el mismo lugar en la Bluefruit. Estos botones pueden ser usados como entradas, lo que significa que le puedes decir a tu tarjeta que haga algo cuando los presionas.

Vamos a comenzar con el botón A. Agregue el siguiente código a su code.py. Recuerde, si necesita ayuda con eso revise aquí.

"""This example turns on the little red LED when button A is pressed."""
from adafruit_circuitplayground import cp

while True:
    if cp.button_a:
        print("Button A pressed!")
        cp.red_led = True

Ahora, presiona el botón A. ¡LED Rojo!

Vamos a ver el código. Primero, importamos cp.

Dentro de nuestro ciclo, revisamos si el botón A ha sido presionado con if cp.button_a:. Luego, si está siendo presionado, ¡imprimimos Button A pressed! hacia la consola serial, y prendemos el LED rojo!

Note que el LED se queda prendido una vez que el botón A es presionado. Esto es porque nunca le dijimos al código que lo apagara. Así que vamos a probar algo diferente.

Agregue el siguiente código a su code.py:

"""This example turns the little red LED on only while button B is currently being pressed."""
from adafruit_circuitplayground import cp

# This code is written to be readable versus being Pylint compliant.
# pylint: disable=simplifiable-if-statement

while True:
    if cp.button_b:
        cp.red_led = True
    else:
        cp.red_led = False

# Can also be written as:
#    cp.red_led = cp.button_b

Ahora presiona el botón B. ¡LED Rojo! Pero ahora solo mientras está siendo presionado. ¡Bien!

Vamos a observar el código. Primero importamos cp.

Dentro de nuestro ciclo, revisamos si el botón B ha sido presionado con if cp.button_b:. Si está siendo presionado, prendemos el LED rojo. Luego, en nuestroelse:, le decimos al código "de otra manera, apague el LED rojo". Así que cuando el botón no está siendo presionado, ¡el LED se apaga!

Puedes usar ambos botones en el mismo programa. Vamos a cambiar un poco las cosas.

Agregue el siguiente código a su code.py:

"""This example lights up the third NeoPixel while button A is being pressed, and lights up the
eighth NeoPixel while button B is being pressed."""
from adafruit_circuitplayground import cp

cp.pixels.brightness = 0.3
cp.pixels.fill((0, 0, 0))  # Turn off the NeoPixels if they're on!

while True:
    if cp.button_a:
        cp.pixels[2] = (0, 255, 0)
    else:
        cp.pixels[2] = (0, 0, 0)

    if cp.button_b:
        cp.pixels[7] = (0, 0, 255)
    else:
        cp.pixels[7] = (0, 0, 0)

Ahora presione el botón A o B. O presione ambos al mismo tiempo. ¡NeoPixeles verdes y azules!

Nuestro código está revisando si (if) cada botón está siendo presionado. Si está siendo presionado, prende el LED a la par del botón con un color específico. El botón A prende su LED a la par en verde. El botón B prende su botón a la par en azul. Y si ambos botones no están siendo presionados, los LEDs se apagan con cp.pixels.fill((0, 0, 0)).

Mitad y Mitad

Vamos a hacer algo más elegante. Agregue el siguiente código a su code.py:

"""This example lights up half the NeoPixels red while button A is being pressed, and half the
NeoPixels green while button B is being pressed."""
from adafruit_circuitplayground import cp

cp.pixels.brightness = 0.3
cp.pixels.fill((0, 0, 0))  # Turn off the NeoPixels if they're on!

while True:
    if cp.button_a:
        cp.pixels[0:5] = [(255, 0, 0)] * 5
    else:
        cp.pixels[0:5] = [(0, 0, 0)] * 5

    if cp.button_b:
        cp.pixels[5:10] = [(0, 255, 0)] * 5
    else:
        cp.pixels[5:10] = [(0, 0, 0)] * 5

Ahora presiona el botón A o el B. Los NeoPixeles se partieron por la mitad, ¡donde su lado es respectivo al lado donde se encuentra el botón!

Aquí estamos utilizando un concepto llamado partición. Una partición te permite indicar un punto de inicio y de finalizado y nos permite decirle al código que prenda las luces que están dentro de la partición. Así que en lugar de especificarle un solo LED con [0], le decimos a la tarjeta que prenda la primera mitad de los LEDs al presionar el botón A con cp.pixels[0:5] = [(255, 0, 0)] * 5. El  [0:5] es el punto de inicio y de final, y el * 5 es el tamaño de la partición (5 de 10 LEDs) Hacemos lo mismo para el botón B y la segunda mitad de los LEDs con cp.pixels[5:10]. Y luego le decimos a los LEDs que de otra forma se apaguen si no hay botones presionados.

Note que los puntos de terminado son normalmente 1 número más alto que el valor de numerado de los LEDs; esto porque la matemática de particiones es un poco diferente a como cuenta CircuitPython. Trata de jugar con esto un poco. Cambie el primer conjunto de valores a cp.pixels[1:4] = [(255, 0, 0)] * 3. ¡Observe cuales LEDs se prenden ahora!

Si usted trata de especificar un conjunto de LEDs que es diferente al tamaño de partición, su código no va a poder correr y un error se va a imprimir en la consola serial. Por ejemplo cp.pixels[1:4] = [(255, 0, 0)] * 4 va a fallar dado que el tamaño de partición debería ser 3. ¡Asegúrate de combinarlos correctamente!

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

This page (Botones) was last updated on Oct 24, 2020.