Bonjour @ tous,
J'ai en vu d'un projet qui va utiliser un Ruban LED WS2812B et un sep32 DEVKIT V1 (que j'ai déjà).
Pour commencer dans la simplicité j'ai voulu utiliser un exemple simple de code arduino existant (\arduino\libraries\Adafruit_NeoPixel\examples\simple) qui fonctionne avec une carte Arduino Nano . J'ai fait le test avec en utilisant une alim 5V + condo 470µF pour les leds et la carte est alimentée (pour l'instant par le port USB). J'ai également raccordé les négatifs ensemble.
Du coup j'ai remplacé la carte UNO par l'esp32 et chargé le programme en modifiant le type de carte et le port utilisé.
C'est là que les soucis commencent:
Le code est bien chargé car les leds s'allument les unes après les autres mais par moment j'ai des changements de couleurs au lui de toutes rester vertes alors qu'avec la carte UNO je n'ai pas ce soucis.
J'ai essayé avec plusieurs sorties GPIO2, GPIO4, etc... et même résultat.
Les questions que je me pose:
Faut-il déclarer quelque chose de spécial sur la sortie?
Est-ce parce que les sorties (si je ne me trompe pas) sont en 3V? Du coup, y a-t-il une solution?
Ou y a-t-il un autre problème que je ne vois pas?
Si quelqu'un aurait une idée du problème et surtout la solution, je suis preneur.
Merci par avance de vos réponses.
Je met le code, même si je sais qu'il est facile de le retrouver.
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 6 // On Trinket or Gemma, suggest changing this to 1
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 16 // Popular NeoPixel ring size
// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Time (in milliseconds) to pause between pixels
void setup() {
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
// Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}
void loop() {
pixels.clear(); // Set all pixel colors to 'off'
// The first NeoPixel in a strand is #0, second is 1, all the way up
// to the count of pixels minus one.
for(int i=0; i<NUMPIXELS; i++) { // For each pixel...
// pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
// Here we're using a moderately bright green color:
pixels.setPixelColor(i, pixels.Color(0, 150, 0));
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
}
}