Utiliser toutes les sorties

Bonjour.
Voici mon souci:
J'ai un uno avec toutes ses sorties dispo et un scketch qui contient 4 effets lumineux.
Actuellement tous les effets sortent sur une seule sortie et ce que je voudrais c'est connaitre un moyen de faire en sorte que chaque effet ait sa propre sortie.
Exemple: effet flamme sur D2, effet strandtest sur D3 Etc.
J'ai beau chercher sur le net je ne trouve rien qui corresponde.
Merci.
Cordialement
Jacques

Never mind, wandered off into the international section somehow...

You could use the foreign language section that is appropriate or use google translate. You do it once, save us the trouble.

a7

So now, post the code you are trying out.

Without seeing some details it is difficult to advice, but what you want to do should not be difficult.

Use "Copy for Forum" in the IDE and paste it here.

a7

Bonjour.
Je n'ai pas encore de code proprement dit, je cherche une aide pour le créer.
Pour le moment j'ai plusieurs scketchs que je voudrais fusionner en un seul et pouvoir l'utiliser sur les sorties de mon UNO.
Ce que je ne trouve pas c'est comment attribuer un " void () " à une sortie définie.

Dans le " loop () " j'appelle les divers " void () " mais comment faire pour que chaque appel soit attribué à une sortie ??? c'est là que je coince.
Merci.

Effet lumineux sur quoi ,on est pas devins.
Des détails sur ce que tu as et ce que tu veux faire.

Bonjour.
En fait, je désire faire une animation de Noel et utiliser les divers sortie digitales de mon UNO, j'ai récupéré plusieurs scketchs d'effet lumière ( flamme, strandtest, rainbow ... ) .
Actuellement tous ces effets ne fonctionnent que sur 1 seule sortie à la suite l'un de l'autre.
Ce que je cherche à faire est de scinder ces portions de codes et attribuer une sortie à chacun d'entre eux.
Exemple:
Attribuer une sortie pour flamme, une autre pour strandtest Etc de manière à pouvoir décorer ma maison à divers endroits avec des effets de lumière différents.
Comment faire pour que les appels placés dans le loop soient attribués à une sortie.
Je ne sais pas trop bien me faire comprendre, ça a toujours été mon gros souci.

void loop()
{
Flamme(); // attribué à D2
Strandtest(); // attribué à D3
Rainbow(); // attribué à D4
}
void Flamme()
{
Code flamme
}
void Strandtest()
{
Code strandtest
}
void Rainbow()
{
Code Rainbow
}

Merci pour l'aide.

Ces effets sont appliqués sur quoi? C'est quoi le matériel utilisé?

De plus tu ne postes qu'un morceau de code, or si ces effets sont appliqués par exemple à des rubans de LEDs adressables (genre WS2812), tu utilises certainement une bibliothèque pour les piloter. Ca aiderait de savoir laquelle.

Donc, quand on demande de poster le code, poste le en entier, on gagnera du temps...

Les effets dont vous parlez sont généralement bloquants donc vous ne pourrez sans doute pas avoir (dans re-écriture) les effets en même temps dans différentes parties de votre maison.

Soit il vous faut un arduino par pièce / ruban soit regarder comment fonctionne l’effet pour le décomposer en petits bouts sans boucles ni délais

Mille excuses, effectivement, les sorties commandent des bandes led WS2812B.
Pour la librairie j'utilise Adafruit_NeoPixel.
Pour le code complet, je n'en ai pas encore, je n'ai que les sketchs que je voudrais fusionner.
Maintenant, si ce n'est pas possible ce n'est pas grave, j'utiliserai un NANO pour chaque effet.
Merci.

Bonsoir jacques24

Avec des LED genre WS2812, et la bibliothèque Adafruit_NeoPixel.h, tu crées un objet Adafruit_NeoPixel pour chaque effet, ainsi:

Adafruit_NeoPixel Flamme(LED_COUNT, D2, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel Strandtest(LED_COUNT, D3, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel Rainbow(LED_COUNT, D4, NEO_GRB + NEO_KHZ800);

Cordialement
jpbbricole

Merci pour la réponse mais comment attribuer chaque " void effet désiré() " à chaque sortie, comment faire le lien ?
Je suis débutant et un peu perdu.

Bonsoir jacques24

Le mieux est que tu trouves et essaies un effet désiré, que tu le mettes en ligne et je te montrerai comment faire le lien.

A+
Cordialement
jpbbricole

OK, je vais faire comme ça, ce sera plus simple.

#include <Adafruit_NeoPixel.h>
#define NUM_LEDS 16
#define Pin1 2
#define Pin2 3
#define Pin3 4
#define Pin4 5
#define Pin5 6
//#define Pin6 7
Adafruit_NeoPixel meteor(NUM_LEDS, Pin1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel flamme(NUM_LEDS, Pin2, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strobe(NUM_LEDS, Pin3, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel twinkle(NUM_LEDS, Pin4, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel guirlande(NUM_LEDS, Pin5, NEO_GRB + NEO_KHZ800);

void setup() 
{
meteor.begin();
meteor.show();
flamme.begin();
flamme.show();
strobe.begin();
strobe.show();
twinkle.begin();
twinkle.show();
guirlande.begin();
guirlande.show();
pinMode(Pin1,OUTPUT);
pinMode(Pin2,OUTPUT);
pinMode(Pin3,OUTPUT);
pinMode(Pin4,OUTPUT);
pinMode(Pin5,OUTPUT);
//pinMode(Pin6,OUTPUT);
//pinMode(Pin7,OUTPUT);
}

void loop() 
{
meteor(); 
}
void meteor()
{
  for (int i = 0; i < (LED_COUNT); i++)
  strip.setPixelColor((i + position) % LED_COUNT, getPixelColorHsv(i, 255, 0, strip.gamma8(i * (255 / LED_COUNT))));
  strip.show();
  position++;
  position %= LED_COUNT;
  delay(250);  
}

Bonsoir jacques24

Oui, en effet.
Voici un exemple de la "mécanique" à suivre:

#include <Adafruit_NeoPixel.h>

#define LED_COUNT 16
#define Pin1 2
#define Pin2 3
#define Pin3 4
#define Pin4 5
#define Pin5 6
#define Pin6 7

Adafruit_NeoPixel meteor(LED_COUNT, Pin1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel flamme(LED_COUNT, Pin2, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strobe(LED_COUNT, Pin3, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel twinkle(LED_COUNT, Pin4, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel guirlande(LED_COUNT, Pin5, NEO_GRB + NEO_KHZ800);

void setup()
{
	meteor.begin();
	meteor.show();
	meteor.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)

	flamme.begin();
	flamme.show();
	flamme.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)

	strobe.begin();
	strobe.show();
	strobe.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)

	twinkle.begin();
	twinkle.show();
	twinkle.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)

	guirlande.begin();
	guirlande.show();
	guirlande.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)

	//pinMode(Pin1,OUTPUT);
	//pinMode(Pin2,OUTPUT);
	//pinMode(Pin3,OUTPUT);
	//pinMode(Pin4,OUTPUT);
	//pinMode(Pin5,OUTPUT);
	//pinMode(Pin6,OUTPUT);
}

void loop()
{
	meteorShow();
	flammeShow();
}

void meteorShow()
{
	for (int i = 0; i < (LED_COUNT); i++)
	{
		meteor.setPixelColor(i, 0, 255, 0);
		meteor.show();
		delay(250);
	}
}

void flammeShow()
{
	for (int i = 0; i < (LED_COUNT); i++)
	{
		flamme.setPixelColor(i, 0, 0, 255);
		flamme.show();
		delay(250);
	}
}

les pinMode(Pin1,OUTPUT); ne sont pas nécessaires, ces pin sont géré par la bibliothèque.

J'ai mis des couleurs simples (meteor.setPixelColor(i, 0, 255, 0);), à toi de mettre les bonnes.

Ce n'est pas testé "en vrai".

A+
Cordialement
jpbbricole

GÉNIAL ... ça fonctionne du feu de dieu.
Un grand merci.

Ca ne va pas fonctionner : meteor est le nom de l'instance du ruban qui est attribué à l'effet météor. Tu ne peux pas créer une fonction à ce nom.

Je pense que ça doit plutôt ressembler à ça :

void loop() 
{
meteorPlay(); 
}
void meteorPlay()
{
  for (int i = 0; i < (LED_COUNT); i++)
  meteor.setPixelColor((i + position) % LED_COUNT, getPixelColorHsv(i, 255, 0, strip.gamma8(i * (255 / LED_COUNT))));
  meteor.show();
  position++;
  position %= LED_COUNT;
  delay(250);  
}

Certes cela va fonctionner pour un effet mais si @jacques24 veut faire tourner plusieurs sorties ensemble cela va être un rien plus compliqué. Il va falloir modifier toutes les fonctions pour pouvoir les balayer rapidement afin que tous les effets changent en même temps.

Bonsoir lesept

c'est pour ça que dans mon exemple j'ai mis:
meteorShow();

Cordialement
jpbbricole

Oui, j'ai répondu sans voir ton message : il n'était pas publié quand j'ai tapé le mien...
A+