La Circuit Playground Express y la Bluefruit tienen un sensor de temperatura integrado, a la par del símbolo de un termómetro que está impreso en la tarjeta. Aunque las imágenes son de la Circuit Playground Express, el sensor se encuentra básicamente en el mismo lugar en la Bluefruit. Se encuentra cerca de una etiqueta de A9 en la tarjeta. Responde la temperatura en Celsius.

Agregue el siguiente código a su code.py. Recuerda, si necesitas ayuda con esto, haz click aquí.

"""This example uses the temperature sensor on the Circuit Playground, located next to the image of
a thermometer on the board. It prints the temperature in both C and F to the serial console. Try
putting your finger over the sensor to see the numbers change!"""
import time
from adafruit_circuitplayground import cp

while True:
    print("Temperature C:", cp.temperature)
    print("Temperature F:", cp.temperature * 1.8 + 32)
    time.sleep(1)

Abra la consola serial para ver donde se imprime la temperatura. Trata de acercar tu dedo al símbolo de termómetro que está impreso en la tarjeta, ¡a ver si los valores cambian!

Vamos a observar el código. Importamos a time y a cp.

Dentro de nuestro ciclo, imprimimos Temperature C:, seguido del valor de temperatura, cp.temperature. Esto imprime la temperatura en Celsius.

¿Pero y que si necesitas la temperatura en Fahrenheit? Esto se logra con un poco de matemática para poderlo mostrar de esta forma. Luego de imprimir la temperatura en C, imprimimos Temperature F:, seguido de cp.temperature de nuevo, pero esta vez modificada con * 1.8 + 32, para convertirlo a Fahrenheit.

Luego tenemos un time.sleep(1) para bajar la velocidad de las lecturas, ya se si son muy rápidas, ¡se vuelven difícil de leer!

Graficando la Temperatura

¡Vamos a observar los valores en el trazador gráfico de Mu! Agregue el siguiente código a tu code.py:

"""If you're using Mu, this example will plot the temperature in C and F on the plotter! Click
"Plotter" to open it, and place your finger over the sensor to see the numbers change. The
sensor is located next to the picture of the thermometer on the CPX."""
import time
from adafruit_circuitplayground import cp

while True:
    print("Temperature C:", cp.temperature)
    print("Temperature F:", cp.temperature * 1.8 + 32)
    print((cp.temperature, cp.temperature * 1.8 + 32))
    time.sleep(0.1)

El código es casi idéntico, pero hemos agregado una línea: print((cp.temperature, cp.temperature * 1.8 + 32)).

Note que el trazador gráfico de Mu, busca por valores en forma de tupla para poderlos graficar. Las tuplas en Python vienen en paréntesis() con comas de separador. Así que si tienes dos valores, una tupla se va a ver así (1.0, 3.14) - observe los paréntesis rodeando a ambos números, y la coma entre ellos. Por eso es que hay unos paréntesis extra y una coma entre los valores de temperatura enprint((cp.temperature, cp.temperature * 1.8 +32)).

Así mismo, el trazador gráfico de Mu requiere que los valores de tuplas estén solos. Por eso es que no podemos simplemente agregarle paréntesis al mensaje anterior de print("Temperature C:", cp.temperature) . El trazador gráfico no sabe que hacer si hay información adicional ahí.

Haga click en el botón de Plotter en la parte superior de Mu para ver el trazador gráfico. Trate de respirar en su Circuit Playground para ver como las trazas suben. ¡Trata de ponerle cerca algo frío para ver como las trazas bajan!

Medidor de Temperatura

También puedes usar los valores de temperatura para crear un divertido medidor con luz, ¡usando los NeoPixeles en tu Circuit Playground! Agrega el siguiente código a tu code.py:

"""
This example use the temperature sensor on the Circuit Playground, located next to the picture of
the thermometer on the board. Try warming up the board to watch the number of NeoPixels lit up
increase, or cooling it down to see the number decrease. You can set the min and max temperatures
to make it more or less sensitive to temperature changes.
"""
import time
from adafruit_circuitplayground import cp

cp.pixels.auto_write = False
cp.pixels.brightness = 0.3

# Set these based on your ambient temperature in Celsius for best results!
minimum_temp = 24
maximum_temp = 30


def scale_range(value):
    """Scale a value from the range of minimum_temp to maximum_temp (temperature range) to 0-10
    (the number of NeoPixels). Allows remapping temperature value to pixel position."""
    return int((value - minimum_temp) / (maximum_temp - minimum_temp) * 10)


while True:
    peak = scale_range(cp.temperature)
    print(cp.temperature)
    print(int(peak))

    for i in range(10):
        if i <= peak:
            cp.pixels[i] = (0, 255, 255)
        else:
            cp.pixels[i] = (0, 0, 0)
    cp.pixels.show()
    time.sleep(0.05)

Ahora trata de sostener tu dedo cerca del símbolo de termómetro que está impreso en tu Circuit Playground y ¡observa como la cantidad de luces LED aumenta! Quita el dedo para ver como la cantidad de luces prendidas cambia.

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

Luego, definimos cp.pixels.auto_write = False. Esto significa que lo que le digamos a los LEDs no va a suceder inmediatamente. Por omisión esto está definido en True. O sea, cuando le decimos a los LEDs que se prendan, se prenden de inmediato. Si está definido en False, quiere decir que vamos a tener que incluir cp.pixels.show() luego de que le digamos que haga algo con los LEDs. Esto es necesario porque queremos prender los LEDs como reacción a los valores de temperatura.

Definimos el brillo (brightness) a 0.3, o un 30%.

Deberías poder ver cambios cuales son los cambios de temperatura por ejemplo si pones tu Circuit Playground en tu escritorio, y le acercas un dedo encima del sensor. Para mejores resultados, puedes ajustar minimum_temp y maximum_temp a valores que tengan sentido para tu ambiente. De otra forma, no vas a obtener los mejores resultados del lector de temperatura. Con la tarjeta sobre el escritorio la temperatura fue de 24 grados, y cuando le pones un dedo encima del sensor el máximo fue de unos 30. Así es como escogimos los valores que están ahorita en el código.

Luego tenemos una función utilitaria llamada scale_range. La temperatura es actualmente de 24 a 30, pero solo hay 10 NeoPixeles. Así que incluimos esta función utilitaria que escala el rango de 24-30 hacia 0-9 para que podamos ser recíprocos con los niveles de luz y la posición de los pixeles.

Nuestro ciclo comienza definiendo peak = scale_range(cp.temperature).  Luego imprimimos los valores de cp.temperature y los valores de peak.

En la siguiente sección tomamos el valor de peak y cualquier número sea igual o menor que peak, es la cantidad de LEDs que vamos a prender, o de lo contrario, lo apagamos. Así que si el pico es 4, ¡prendemos 4 LEDs!

Luego tenemos cp.pixels.show() para que los LEDs prendan. Y luego un time.sleep(0.05) para crear algo de pausa.

Puedes cambiar el número de valores en cp.pixels[i] = (0, 255, 255) para cambiar el color en el medidor de temperatura. ¡Prueba tu mismo!

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

This page (Temperatura) was last updated on Nov 06, 2020.