🛠 Pilote le NeoPixel embarqué (broche D13)
Objectifs
Piloter le NeoPixel d'état soudé sur la Feather nRF52840 avec la bibliothèque Adafruit_NeoPixel : couleur, luminosité, et une animation « cœur battant » non bloquante. Le NeoPixel est alimenté en 3,3 V et son data est relié à la broche que le BSP expose par PIN_NEOPIXEL ; la documentation grand public le note souvent « D13 ».
Matériel
- 1× Adafruit Feather nRF52840 Express + câble micro-USB
- Bibliothèque Adafruit NeoPixel (Gestionnaire de bibliothèques)
Code complet
// nrf52840-neopixel-d13.ino
#include <Adafruit_NeoPixel.h>
#define NEO_PIN PIN_NEOPIXEL // broche NeoPixel embarquée (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
}
Vérification attendue
Le NeoPixel respire en orange chaud en boucle continue, sans clignotement brutal. En touchant à peine la broche data (doigt), aucune réinitialisation parasite avec le code ci-dessus car aucune autre trame WS2812 n'est émise.
Erreurs fréquentes
- Confondre LED rouge et NeoPixel : la LED rouge simple n'est PAS un NeoPixel ; les pages Adafruit se contredisent sur sa broche (3 vs 13), préférez le NeoPixel comme recommandé par la doc.
neo.showdans une interruption ou pendant BLE : la trame WS2812 exige des timings serrés que la SoftDevice peut perturber ; émettez-la depuisloop.- Luminosité à 255 sur batterie : un NeoPixel pleine blanche tire plusieurs dizaines de mA.
- Ordre des couleurs inversé :
NEO_GRBest le bon ordre pour les NeoPixel embarqués récents ; en cas de rouge/vert inversés, testezNEO_RGB.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
neopixel_pulsation.pyPythonled_bouton.pyPythonentrees_num.pyPythonanalogique_lumiere.pyPythonservo_pwm.pyPythonscanner_i2c.pyPython