Bonjour !
J'ai besoin de votre aide car je rencontre un problème qui, je l'espère, ne doit pas être compliqué à résoudre. Mais ça fait quelques années que je n'ai pas fait d'Arduino ou de C, donc je suis un peu perdu et ne trouve pas ma réponse. C'est pour un cadeau de Noël alors j'aimerais y arriver
Bref, voici mon montage. J'ai cinq bandeaux de LEDs, sur les PINs pairs 2 à 10.
Mes bandeaux de LEDs font 29 LEDs chacun, sauf un qui n'en fait que 28.
Je n'ai pour l'instant pas d'alimentation dédiée car le nombre de LEDs n'est pas immense.
J'aimerais tout simplement recréer l'animation suivante (avant de complexifier) :
Pour ce faire, l'idéal serait une boucle du type :
for(int i = NUM_LEDS_PER_STRIP-1; i >=0 ; i--) {
leds[:][i] = CRGB::Yellow;
leds[:][i-1] = CRGB::Yellow;
leds[:][i-2] = CRGB::Yellow;
}
Mais je ne sais pas comment indiquer à l'Arduino de prendre toute la ligne du tableau leds (mes deux points ne fonctionnent pas). Quand j'essaye de le faire manuellement en indiquant 5 fois mes trois lignes de codes, le programme plante (avec un seulement, il marque une pause quand les LEDs ont parcouru une première fois le bandeau, ce qui n'est pas le cas quand je n'allume qu'une LED).
Je vous joins mon code complet ci-dessous pour y voir plus clair.
Merci énormément à tous ceux qui prendront un peu de temps pour m'aider !
Bonne journée à vous
#include <FastLED.h>
#define NUM_STRIPS 5 // nombre de bandeaux
#define NUM_LEDS_PER_STRIP 29 // nombre de LEDs par bandeau
#define LED_TYPE NEOPIXEL // type de LEDs
struct CRGB leds[NUM_STRIPS][NUM_LEDS_PER_STRIP]; // initialise le tablelau (array) de LEDs
uint8_t hue = 0;
void setup() {
delay(1000); // délai de 1s en cas de pic de tension au démarrage (protège LEDs)
// ensuite, on déclare les bandeaux sur les PINs correspondants, chaque bandeau étant de type "leds" déclaré précedemment.
FastLED.addLeds<LED_TYPE, 2>(leds[0], NUM_LEDS_PER_STRIP);
FastLED.addLeds<LED_TYPE, 4>(leds[1], NUM_LEDS_PER_STRIP);
FastLED.addLeds<LED_TYPE, 6>(leds[2], NUM_LEDS_PER_STRIP);
FastLED.addLeds<LED_TYPE, 8>(leds[3], NUM_LEDS_PER_STRIP);
FastLED.addLeds<LED_TYPE, 10>(leds[4], NUM_LEDS_PER_STRIP);
FastLED.setBrightness(10); // on définit la luminosité
}
void loop() {
// This outer loop will go over each strip, one at a time
//for(int k = 0; k < NUM_STRIPS; k++) {
// This inner loop will go over each led in the current strip, one at a time
for(int i = NUM_LEDS_PER_STRIP-1; i >=0 ; i--) {
leds[0][i] = CRGB::Yellow;
leds[0][i-1] = CRGB::Yellow;
leds[0][i-2] = CRGB::Yellow;
FastLED.show();
leds[0][i+1] = CRGB::Black;
leds[0][i] = CRGB::Black;
leds[0][i-1] = CRGB::Black;
delay(100);
}
}