neopixel_arcenciel.py

Adafruit Feather nRF52840 Express · Archivo : neopixel_arcenciel.py · Lenguaje : Python · Uso : Arc-en-ciel tournant sur NeoPixel

La lámpara ambiental universal: una rueda de colores calculada por fase (sin tabla) barre rojo-verde-azul en el NeoPixel embarcado. Base visual de todo proyecto: hora, temperatura o estado de red se vuelven color.

Hardware

Una Adafruit Feather nRF52840 Express (nRF52840, BLE 5) con NeoPixel, LED rojo, 2 MB de flash QSPI para CircuitPython y conector LiPo. Solo la Feather. Para una tira: poner el número de píxeles en N y cablear DATA a un pin con 5 V y masa común.

Cableado

Ninguno para el pixel embarcado. Tira externa: DATA→D5 por resistencia de 330 Ω, VCC a VOUT (USB), GND común, condensador de 1000 µF en la alimentación de la tira.

Funcionamiento

La función couleur parte la fase 0-1 en tres segmentos e interpola los canales RGB; el bucle avanza la fase 0,01 cada 30 ms: un ciclo completo en ~3 segundos.

Ejecución

CircuitPython (build feather_nrf52840_express) vía bootloader UF2 (doble reset); editar code.py en la unidad CIRCUITPY.

Variantes

Mapear una magnitud (temperatura → azul-rojo), animar N píxeles desfasados para una persiana, o sincronizar el color con una notificación BLE.

neopixel_arcenciel.py

# Arc-en-ciel tournant sur le NeoPixel embarqué.
# Roue des couleurs : (r, v, b) calculée par phase, sans table.
import time
import board
import neopixel

pixel = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.3)

def couleur(phase):
    # phase 0.0 -> 1.0 : rouge -> vert -> bleu -> rouge
    p = phase % 1.0
    if p < 1/3:
        return (int(765 * p * 3), int(765 * (1 - p * 3)), 0)
    if p < 2/3:
        q = (p - 1/3) * 3
        return (0, int(765 * (1 - q)), int(765 * q))
    r = (p - 2/3) * 3
    return (int(765 * r), 0, int(765 * (1 - r)))

phase = 0.0
while True:
    phase += 0.01
    # neopixel attend 0-255 par canal : on divise 0-765 par 3
    r, v, b = couleur(phase)
    pixel[0] = (r // 3, v // 3, b // 3)
    time.sleep(0.03)

← Volver a la ficha