Neopixel adafruit code simple ne fonctionne pas

Bonjour,

je voulais simplement faire clignoter deux LED néopixel avec la librairie Adafruit en changeant de couleur toute les 2 secondes pour test, mais cela ne fonctionne déjà pas (Arduino Mega 2560).
Le code

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

#define PIN 8
Adafruit_NeoPixel strip = Adafruit_NeoPixel(2, PIN, NEO_GRB + NEO_KHZ400);


void setup() {
 // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
  #if defined (__AVR_ATtiny85__)
    if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
  #endif
  // End of trinket special code


   strip.begin();
   strip.show(); // Initialize all pixels to 'off'
   Serial.begin(9600);
}

 void loop() {
    // put your main code here, to run repeatedly:
 strip.setPixelColor(0, 0, 10, 0);
 strip.setPixelColor(1, 20, 0, 0);
Serial.print("milli = ");
    Serial.println(millis());
  
  delay(2000);
  
strip.setPixelColor(0, 10, 0, 0);
 strip.setPixelColor(1, 0, 0, 20);
Serial.print("milli = ");
Serial.println(millis());
  delay(2000);
  strip.show();
 }

J'ai mis des compteurs millis pour voir si la boucle ne bloque pas et c'est OK
Les leds prennent immédiatement la configuration de fin de boucle et ne changent pas d'état.
Je suis dans le flou le plus total, si quelqu'un peut m'aider?

Merci

Jean-Claude

Bonjour,

Il faut faire un strip.show() après avoir fait le setPixelColor() pour les pixels que tu veux modifier (donc avant chaque delay()).

Bonjour,

OK cela marche parfaitement, un grand merci. c'est tout bon.

Mais je ne comprends pas la syntaxe car pourquoi les effacer avant de redonner un ordre qui devrait écraser le précédent sur la mémoire de la LED?

Puis quand on initialise en faisant strip.show() on devrait éteindre toute les LED (passage sur off) ce qui ne s'opère pas.

Encore merci et à bientôt car je débute et je galère souvent pour des petits rien, un grain de sable se transforme souvent en montagne.

Jean-Claude

strip.show() n'éteint pas les leds, il envoie aux leds les valeurs RGB que tu as mis en mémoire par setPixelColor().

Donc tu fais un plusieurs setPixelColor(), ça met les valeurs en mémoire, puis quand tu veux afficher ces valeus sur les leds tu fais un show().

Bonjour,

merci pour ces explications, il faut donc, dans la syntaxe faire un schow juste après un ou plusieurs setPixelColor?

Cordialement

Jean-Claude

Bonjour,

j'ai essayé cette syntaxe et cela marche super merci

Jean-claude