allumer une led sur quatre avec ruban WS2812B

bonjour et Bonne Année

matériel : Arduino mega2560,ruban WS2812B,horloge DS1307
librairie : #include <TimeLib.h>
#include <TimeAlarms.h>
#include <Wire.h>
#include <DS1307RTC.h>
#include <FastLED.h>

je cherche comment allumer une led sur quatre et ainsi de suite jusqu’à 258 led sur un ruban de led WS2812b a une heure déterminée.
le tout avec une dizaine de phases différente (led /puissance / couleur ).
le programme que j’ai fais en premier avec 1 ligne par led ( 258 lignes fois 15 phases) ne fonctionne pas,du coup j’ai fais 2 phases et celui la fonctionne.
pouvez vous me dire comment simplifier l’écriture pour l’allumage de 1 led sur 4 en répétant l’opération sur les 258 leds.
merci

  Alarm.alarmRepeat(10, 00, 0, DebutEclairage); 
  Alarm.alarmRepeat(12, 00, 0, ArretEclairage); 
  Alarm.alarmRepeat(11, 00, 0, DebutCO2); 
  Alarm.alarmRepeat(11, 30, 0, ArretCO2); 
}


//----------------Marche eclairage-------------------------------
void DebutEclairage() {
  leds  [ 0 ] = CRGB( 255, 255, 255 );
  leds  [ 1 ] = CRGB( 0, 0, 255 );
  leds  [ 2 ] = CRGB( 255, 255, 255 );
  leds  [ 3 ] = CRGB( 255, 0, 0 );
  leds  [ 4 ] = CRGB( 255, 255, 255 );
  leds  [ 5 ] = CRGB( 255, 255, 255 );
  leds  [ 6 ] = CRGB( 0, 0, 255 );
  leds  [ 7 ] = CRGB( 255, 255, 255 );
  leds  [ 8 ] = CRGB( 255, 0, 0 );
  leds  [ 9 ] = CRGB( 255, 255, 255 );
  leds  [ 10  ] = CRGB( 255, 255, 255 );
  leds  [ 11  ] = CRGB( 0, 0, 255 );
  leds  [ 12  ] = CRGB( 255, 255, 255 );
  leds  [ 13  ] = CRGB( 255, 0, 0 );
  leds  [ 14  ] = CRGB( 255, 255, 255 );
  leds  [ 15  ] = CRGB( 255, 255, 255 );
  leds  [ 16  ] = CRGB( 0, 0, 255 );
  leds  [ 17  ] = CRGB( 255, 255, 255 );
  leds  [ 18  ] = CRGB( 255, 0, 0 );
  leds  [ 19  ] = CRGB( 255, 255, 255 );
  leds  [ 20  ] = CRGB( 255, 255, 255 );
  leds  [ 21  ] = CRGB( 0, 0, 255 );
  leds  [ 22  ] = CRGB( 255, 255, 255 );
  leds  [ 23  ] = CRGB( 255, 0, 0 );
  leds  [ 24  ] = CRGB( 255, 255, 255 );
  leds  [ 25  ] = CRGB( 255, 255, 255 );
  leds  [ 26  ] = CRGB( 0, 0, 255 );
  leds  [ 27  ] = CRGB( 255, 255, 255 );
  leds  [ 28  ] = CRGB( 255, 0, 0 );
  leds  [ 29  ] = CRGB( 255, 255, 255 );
  leds  [ 30  ] = CRGB( 255, 255, 255 );
  leds  [ 31  ] = CRGB( 0, 0, 255 );
  leds  [ 32  ] = CRGB( 255, 255, 255 );
  leds  [ 33  ] = CRGB( 255, 0, 0 );
  leds  [ 34  ] = CRGB( 255, 255, 255 );
  leds  [ 35  ] = CRGB( 255, 255, 255 );
  leds  [ 36  ] = CRGB( 0, 0, 255 );
  leds  [ 37  ] = CRGB( 255, 255, 255 );
  leds  [ 38  ] = CRGB( 255, 0, 0 );
  leds  [ 39  ] = CRGB( 255, 255, 255 );
  leds  [ 40  ] = CRGB( 255, 255, 255 );
  leds  [ 41  ] = CRGB( 0, 0, 255 );
  leds  [ 42  ] = CRGB( 255, 255, 255 );
  leds  [ 43  ] = CRGB( 255, 0, 0 );
  leds  [ 44  ] = CRGB( 255, 255, 255 );
  leds  [ 45  ] = CRGB( 255, 255, 255 );
  leds  [ 46  ] = CRGB( 0, 0, 255 );
  leds  [ 47  ] = CRGB( 255, 255, 255 );
  leds  [ 48  ] = CRGB( 255, 0, 0 );
  leds  [ 49  ] = CRGB( 255, 255, 255 );
  leds  [ 50  ] = CRGB( 255, 255, 255 );
  leds  [ 51  ] = CRGB( 0, 0, 255 );
  leds  [ 52  ] = CRGB( 255, 255, 255 );
  leds  [ 53  ] = CRGB( 255, 0, 0 );
  leds  [ 54  ] = CRGB( 255, 255, 255 );
  leds  [ 55  ] = CRGB( 255, 255, 255 );
  leds  [ 56  ] = CRGB( 0, 0, 255 );
  leds  [ 57  ] = CRGB( 255, 255, 255 );
  leds  [ 58  ] = CRGB( 255, 0, 0 );
  leds  [ 59  ] = CRGB( 255, 255, 255 );
  leds  [ 60  ] = CRGB( 255, 255, 255 );
  leds  [ 61  ] = CRGB( 0, 0, 255 );
  leds  [ 62  ] = CRGB( 255, 255, 255 );
  leds  [ 63  ] = CRGB( 255, 0, 0 );
  leds  [ 64  ] = CRGB( 255, 255, 255 );
  leds  [ 65  ] = CRGB( 255, 255, 255 );
  leds  [ 66  ] = CRGB( 0, 0, 255 );
  leds  [ 67  ] = CRGB( 255, 255, 255 );
  leds  [ 68  ] = CRGB( 255, 0, 0 );
  leds  [ 69  ] = CRGB( 255, 255, 255 );
  leds  [ 70  ] = CRGB( 255, 255, 255 );
  leds  [ 71  ] = CRGB( 0, 0, 255 );
  leds  [ 72  ] = CRGB( 255, 255, 255 );
  leds  [ 73  ] = CRGB( 255, 0, 0 );
  leds  [ 74  ] = CRGB( 255, 255, 255 );
  leds  [ 75  ] = CRGB( 255, 255, 255 );
  leds  [ 76  ] = CRGB( 0, 0, 255 );
  leds  [ 77  ] = CRGB( 255, 255, 255 );
  leds  [ 78  ] = CRGB( 255, 0, 0 );
  leds  [ 79  ] = CRGB( 255, 255, 255 );
  leds  [ 80  ] = CRGB( 255, 255, 255 );
  leds  [ 81  ] = CRGB( 0, 0, 255 );
  leds  [ 82  ] = CRGB( 255, 255, 255 );

  leds  [ 243 ] = CRGB( 255, 0, 0 );
  leds  [ 244 ] = CRGB( 255, 255, 255 );
  leds  [ 245 ] = CRGB( 255, 255, 255 );
  leds  [ 246 ] = CRGB( 0, 0, 255 );
  leds  [ 247 ] = CRGB( 255, 255, 255 );
  leds  [ 248 ] = CRGB( 255, 0, 0 );
  leds  [ 249 ] = CRGB( 255, 255, 255 );
  leds  [ 250 ] = CRGB( 255, 255, 255 );
  leds  [ 251 ] = CRGB( 0, 0, 255 );
  leds  [ 252 ] = CRGB( 255, 255, 255 );
  leds  [ 253 ] = CRGB( 255, 0, 0 );
  leds  [ 254 ] = CRGB( 255, 255, 255 );
  leds  [ 255 ] = CRGB( 255, 255, 255 );
  leds  [ 256 ] = CRGB( 0, 0, 255 );
  leds  [ 257 ] = CRGB( 255, 255, 255 );
  leds  [ 258 ] = CRGB( 255, 0, 0 );

  FastLED.show();
  Serial.println("Marche Eclairage");//affichage sur le port serie
}
//-----------------ARRET DES LEDS--------------------------------
void ArretEclairage() {

      for(int i = 0; i < NUM_LEDS; i++ ) { // On fait une boucle pour définir la couleur de chaque led
       leds[i]. setRGB( 0, 0, 0);
        }
  FastLED.show();
  Serial.println("Arret Eclairage");//affichage sur le port serie
}

}

Tu as déjà la réponse dans ton code, c’est la boucle for. Lorsque tu veux exécuter quelque chose de répétitif, tu utilises un for.

Pour cela il te faut identifier ce qui est périodique. Ça peut être pour éteindre tous les leds, une par une : c’est ce qui est fait dans ta fonction ArretEclairage.

Pour i allant de 0 jusqu’au nombre de leds (moins un puisque les indices de tableaux commencent à 0 en C) on met la valeur du tableau de leds à 0.

Pour DebutEclairage tu vois que tu as un schéma répétitif :

 leds  [ 0 ] = CRGB( 255, 255, 255 );
 leds  [ 1 ] = CRGB( 0, 0, 255 );
 leds  [ 2 ] = CRGB( 255, 255, 255 );
 leds  [ 3 ] = CRGB( 255, 0, 0 );
 leds  [ 4 ] = CRGB( 255, 255, 255 );

Ensuite ça recommence à partir de 5 puis de 10 etc.

Tu peux donc écrire une boucle for comme ceci

for (int i=0 ; i<NUM_LEDS-4; i=i+5) {
  leds  [ i ] = CRGB( 255, 255, 255 );
  leds  [ i+1 ] = CRGB( 0, 0, 255 );
  leds  [ i+2 ] = CRGB( 255, 255, 255 );
  leds  [ i+3 ] = CRGB( 255, 0, 0 );
  leds  [ i+4 ] = CRGB( 255, 255, 255 );
}

Avec cet exemple tu devrais pouvoir écrire tes fonctions toi même. Sinon tu peux aussi trouver des tutos sur internet, comme openclassrooms ou le site d’eskimon

merci beaucoup "Lesept".

cela raccourci le prg et fonctionne a merveille. Par contre ,lorsque je mets plusieurs phases ,la compil et le televerssement sont ok ,mais le programme plante. je ne sais pas pourquoi

  Alarm.alarmRepeat(15, 00, 0, Eclairage);
  Alarm.alarmRepeat(15, 05, 0, Eclairage1);
  Alarm.alarmRepeat(15, 10, 0, Eclairage2);
  Alarm.alarmRepeat(15, 15, 0, Eclairage3);
  Alarm.alarmRepeat(15, 20, 0, Eclairage4);
  Alarm.alarmRepeat(15, 25, 0, Eclairage5);
  Alarm.alarmRepeat(15, 30, 0, Eclairage4);
  Alarm.alarmRepeat(15, 35, 0, Eclairage3);
  Alarm.alarmRepeat(15, 40, 0, Eclairage2);
  Alarm.alarmRepeat(15, 45, 0, Eclairage1);
  Alarm.alarmRepeat(15, 50, 0, Eclairage0);
  Alarm.alarmRepeat(15, 15, 0, DebutCO2);
  Alarm.alarmRepeat(15, 40, 0, ArretCO2);
  Alarm.alarmRepeat(15, 50, 0, ArretEclairage);

Je ne sais pas ce que tu appelles des phases et il faut que tu donnes le code en entier pour comprendre le reste