🛠 Pilote le NeoPixel embarqué (broche D13)
Objetivos
Controlar el NeoPixel de estado soldado en la Feather nRF52840 con la biblioteca Adafruit_NeoPixel: color, brillo y una animación de «latido de corazón» no bloqueante. El NeoPixel se alimenta a 3,3 V y su línea de datos está conectada al pin que el BSP expone mediante PIN_NEOPIXEL; la documentación general suele indicarlo como «D13». > SIN VERIFICAR: el alias «D13» del NeoPixel no está confirmado en la documentación de Adafruit recuperada (que incluso señala una contradicción sobre el pin del LED rojo) — utilice la constante BSP PIN_NEOPIXEL, garantizada como correcta por el core.
Material
- 1× Adafruit Feather nRF52840 Express + cable micro-USB
- Biblioteca Adafruit NeoPixel (Gestor de bibliotecas)
Código completo
// nrf52840-neopixel-d13.ino
#include <Adafruit_NeoPixel.h>
#define NEO_PIN PIN_NEOPIXEL // broche NeoPixel embarquee (alias courant D13)
Adafruit_NeoPixel neo(1, NEO_PIN, NEO_GRB + NEO_KHZ800);
uint32_t t0 = 0;
void setup {
neo.begin;
neo.setBrightness(40); // 40/255 : evite d'aveugler et menage la batterie
}
void loop {
uint32_t t = millis % 1600; // periode 1,6 s
float phase = t / 1600.0f * 2.0f * PI;
uint8_t pulse = (uint8_t)(60 + 195 * pow(sin(phase), 6)); // battement
neo.setPixelColor(0, neo.Color(pulse, pulse / 6, 0));
neo.show;
if (millis - t0 > 20) t0 = millis; // cadence ~50 fps sans delay
}
Verificación esperada
El NeoPixel «respira» en naranja cálido en un bucle continuo, sin parpadeos bruscos. Al tocar apenas el pin de datos (con el dedo), no se produce ningún reinicio parásito con el código anterior, ya que no se emite ninguna otra trama WS2812.
Errores frecuentes
- Confundir el LED rojo y el NeoPixel: el LED rojo simple NO es un NeoPixel; las páginas de Adafruit se contradicen sobre su pin (3 vs 13), prefiera el NeoPixel como recomienda la documentación.
neo.showen una interrupción o durante BLE: la trama WS2812 requiere tiempos muy estrictos que la SoftDevice puede perturbar; emítala desdeloop.- Brillo a 255 con batería: un NeoPixel en blanco completo consume varias decenas de mA.
- Orden de colores invertido:
NEO_GRBes el orden correcto para los NeoPixel integrados recientes; si los colores rojo/verde están invertidos, pruebe conNEO_RGB.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
neopixel_pulsation.pyPythonled_bouton.pyPythonentrees_num.pyPythonanalogique_lumiere.pyPythonservo_pwm.pyPythonscanner_i2c.pyPython