Code Arduino Bande LED

Bonjour à tous,

j'essaie désespérément d'allumer des bandes LED entièrement, bande par bande.
j'ai trouvé un programme sur internet mais, la première bande led s'allume une led à la fois rapidement.
J'aimerais trouvé une solution pour allumer d'un coup une bande LED puis les autres au fur et à mesure (9 au total)

voici pour le moment le programme que j'ai reussi à faire:

#include <FastLED.h>

#define NUM_LEDS5 150
#define DATA_PIN5 5
#define NUM_LEDS6 150
#define DATA_PIN6 6
#define BRIGHTNESS 50

CRGB leds[NUM_LEDS5];

void setup() { 
    FastLED.addLeds<NEOPIXEL, DATA_PIN5>(leds, NUM_LEDS5);
    FastLED.setBrightness(  BRIGHTNESS );
}

void loop() { 

 for (int i = 0; i < NUM_LEDS5; i++){
  leds[i] = CRGB(150,150,150);
  FastLED.show();
}

delay(2000);
FastLED.addLeds<NEOPIXEL, DATA_PIN6>(leds, NUM_LEDS6);

{

}
}

en vous remerciant pour vos conseils et aides par avance !

déplace la ligne FastLED.show(); en dehors de ta boucle de parcours des LED de la bande en broche 5.

Pour commencer duplique le tableau de led, pour avoir un tableau par bande.
Du coup tu ajoute toutes tes bandes dans le setup.

en suite duplique dans un premier tant les for pour définir les tableaux associés pour chaque bande de led au fur et à mesure, avec un delay entre chaque for.

Ce n'est pas très optimisé, mais cela commencera à ressembler à ce que tu veux faire.

Bonjour jo0o34

Si tu veux 9 bandes de LED de 150, séparées, il faut déclarer 9 x FastLed et ceci en les mettant en tableau, c'est beaucoup plus facile à programmer.

Cordialement
jpbbricole

Merci pour votre aide, mais j'ai essayé différent code, mais toujours rien. Je suis nul ^^
Je vais devoir trouver une autre solution.
En vous remerciant !

Je ne vois pas le rapport avec le fait que tu sois nul.
Tu as essayé d'appliquer ce que je t'ai indiqué à ton code?
Si oui, peut tu montrer ton code modifier et décrire ce qu'il ce passe.

Bien qu''au début cela peut paraitre un peu compliqué, mais il n'en n'est rien, il faut juste passer un peu de temps à ce former.

Voici mon code actuel si jai bien compris les instructions.
Mais le delay ne fonctionne pas, tout s'allume en meme temps...
Merci pour ton aide

#include <FastLED.h>

#define NUM_LEDS5 150
#define NUM_LEDS6 150
#define DATA_PIN5 5
#define DATA_PIN6 6
#define BRIGHTNESS 50

CRGB leds[NUM_LEDS5];

void setup() { 
    FastLED.addLeds<NEOPIXEL, DATA_PIN5>(leds, NUM_LEDS5);
    FastLED.addLeds<NEOPIXEL, DATA_PIN6>(leds, NUM_LEDS6);
    FastLED.setBrightness(  BRIGHTNESS );
}

void loop() { 

 for (int i = 0; i < NUM_LEDS5; i++){
 leds[i] = CRGB(150,150,150);
 delay(2000);
 for (int i = 0; i < NUM_LEDS6; i++){
 leds[i] = CRGB(150,150,150);

}
FastLED.show();

{
}
}
}

Oui, car il y a plusieurs problèmes, il me semble.
Déjà ton code n'est pas indenté correctement et comme je suis sur mon téléphone, c'est pas très pratique.
Il y a beaucoup d'accolade à la fin de ton code, dont certaines ne servent à rien il me semble?

La déclaration de tes bandeaux, ne me semble pas correcte.
Tu déclare un tableau avec le nombre de LED du premier bandeau, mais tu veux l'utiliser pour les deux bandeaux.
Il serait plus simple d'utiliser deux tableaux distinct.

Dans tes deux boucles imbriquées tu utilise les mêmes indices et comme en plus tu utilises le même tableau, les valeurs insérées dans la première boucles seront forcément écrasées.

Il faut voir la programmation comme l'utilisation d'un langage humain simplifié.
Avec ce langage tu décris à la machine ce que tu veux qu'elle fasse.
Si tu essaye de décrire en français se que ton programme doit faire cela donne quoi?

Moi je traduirais un peu comme ça, prendre un sac de billes lumineuses, pour chaque bille fait la chose suivante, Éclairé la bille en cours + attends 2s + remet toutes les billes dans le sac+ pour chaque bille du sac allume la bille en cours.

Au final ce n'est pas du tout ce que tu voulais dire :grin:

Bonjour jo0o34

Tu as un peu "tricoté" tes boucles et tu n'as déclaré qu'une bande de LED:

CRGB leds[NUM_LEDS5];

J'ai corrigé ton programme, je te laisses voir les modifications. Il rempli, par alternance de 2 secondes, chaque bande:

#include <FastLED.h>

#define NUM_LEDS5 150
#define NUM_LEDS6 150
#define DATA_PIN5 5
#define DATA_PIN6 6
#define BRIGHTNESS 50

//------------------------------------- Déclaration de 2 rampes
CRGB leds5[NUM_LEDS5];
CRGB leds6[NUM_LEDS6];

void setup() 
{
	FastLED.addLeds<NEOPIXEL, DATA_PIN5>(leds5, NUM_LEDS5);
	FastLED.addLeds<NEOPIXEL, DATA_PIN6>(leds6, NUM_LEDS6);

	FastLED.setBrightness(  BRIGHTNESS );
}

void loop() 
{
	//--------------------------------- Remplissage de la rampe leds5
	for (int i = 0; i < NUM_LEDS5; i++)
	{
		leds5[i] = CRGB(150, 0, 0);
	}
	FastLED.show();

	delay(2000);
	FastLED.clear();
	FastLED.show();

	//--------------------------------- Remplissage de la rampe leds6
	for (int i = 0; i < NUM_LEDS6; i++)
	{
		leds6[i] = CRGB(0, 0, 150);
	}
	FastLED.show();

	delay(2000);
	FastLED.clear();
	FastLED.show();
}

Ce n'est pas encore la version en tableau. Je vais te faire un exemple.

A+
Cordialement
jpbbricole

Super ! un grand merci ! Cela fonctionne ! me reste plus qu'a faire cela pour 9 bandes LED !
MERCI !

Bonjour jo0o34

Je te fais le même exemple mais avec les bandes en tableau, tu verra, ça simplifie le code.

A+°
Cordialement
jpbbricole

Bonsoir jo0o34

Voilà la version avec tableau de bandes, j'ai mis un maximum d'informations.

#include <FastLED.h>

#define NUM_LEDS 150
#define BRIGHTNESS 50

const int bandeDataPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12};     // Pin de connexion des bandes
const int bandesNombre = sizeof(bandeDataPin) / sizeof(bandeDataPin[0]);     // Calcul du nombre de bandes

const int bandeLedsNombre[] = {150, 150, 150, 150, 150, 150, 150, 150, 150};     // Nombre de leds par bande

// Couleur de la bande https://github.com/FastLED/FastLED/blob/master/src/pixeltypes.h
const long bandeLedsCouleur[] = {CRGB::Red, CRGB::RoyalBlue, CRGB::RosyBrown, CRGB::Green, CRGB::SteelBlue, 
                                 CRGB::WhiteSmoke, CRGB::Yellow, CRGB::SlateGrey, CRGB::YellowGreen};

//------------------------------------- Déclaration du tableau des bandes
CRGB leds[bandesNombre][NUM_LEDS];

void setup() 
{
	// Initialisation des bandes
	FastLED.addLeds<NEOPIXEL, 4>(leds[0], bandeLedsNombre[0]);
	FastLED.addLeds<NEOPIXEL, 5>(leds[1], bandeLedsNombre[1]);
	FastLED.addLeds<NEOPIXEL, 6>(leds[2], bandeLedsNombre[2]);
	FastLED.addLeds<NEOPIXEL, 7>(leds[3], bandeLedsNombre[3]);
	FastLED.addLeds<NEOPIXEL, 8>(leds[4], bandeLedsNombre[4]);
	FastLED.addLeds<NEOPIXEL, 9>(leds[5], bandeLedsNombre[5]);
	FastLED.addLeds<NEOPIXEL, 10>(leds[6], bandeLedsNombre[6]);
	FastLED.addLeds<NEOPIXEL, 11>(leds[7], bandeLedsNombre[7]);
	FastLED.addLeds<NEOPIXEL, 12>(leds[8], bandeLedsNombre[8]);

	FastLED.setBrightness(  BRIGHTNESS );     // Luminosité générale
	FastLED.clear();     // Tout effacer
	FastLED.show();     // Tout afficher
	delay(1000);
}

void loop() 
{
	//--------------------------------- Remplissage des bandes
	for (int b = 0; b < bandesNombre; b ++)
	{
		fill_solid(leds[b], bandeLedsNombre[b], bandeLedsCouleur[b]);
		FastLED.show();
		delay(1000);
	}

	delay(4000);
	FastLED.clear();
	FastLED.show();
	delay(2000);
}

Essaies et poses les bonne questions, si nécessaire. :wink:

PS: Pour la partie // Initialisation des bandes , j'ai dû faire "à la main", FastLED refusant obstinément mon tableau bandeDataPin[] comme argument?

A+
Cordialement
jpbbricole

Mille merci j'y vois plus clair ! cela m'a bien aidé ! Je vais tester tous ca.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.