Bonjour tous,
votre avis sur ce prog sur lequel je voudrais rajouter une LDR afin d'avoir un fonctionnement automatique ?
Cordialement.
Bonjour tous,
votre avis sur ce prog sur lequel je voudrais rajouter une LDR afin d'avoir un fonctionnement automatique ?
Cordialement.
Pour automatiser quoi? Le programme tourne déjà tout seul.
je me suis sans doute mal exprimé.....
mais comme je voulais voir la possibilité de rajouter une LDR c'était pour faire tourner le prog quand la luminosité est basse (nuit) comme indiqué dans le titre c'est une animation.
Merci
Tu peux commencer par mettre tout le code contenu dans la fonction loop, dans un IF.
La condition du if serait dépendant de la valeur de ta LDR.
As tu déjà essayé de visualiser les valeurs retourné par la LDR en fonction de la luminosité?
Bonjour koko11073
Tu crée une variable globale comme
int ledAllumee = HIGH; // High, condition de nuit
Où les LED sont allumées, tu remplaces
digitalWrite(pin, HIGH);
par
digitalWrite(pin, ledAllumee);
Dans loop() tu lis ta LDR sur A6 ou A7, si la valeur est plus petite que le seuil de jour, ledAllumee = HIGH, autrement ledAllumee = LOW.
Ce n'est pas essayé en vrai
¨
Valable seulement sur un Arduino Nano (A6 et A7)
Cordialement
jpbbricole
bonjour jpbbricole,
merci de ton aide !
j'ai tenté de tester ton prog mais aucun résultat positif.... a mon avis je n'ai pas intégré tes infos au bon endroit ou pas compris.....
je suis bien avec un arduino nano équipé de A6 et A7.
Cordialement
Bonjour koko11073
Je comprends, mon "étude" de ton cas était un peu succincte ![]()
J'ai repris le programme que tu indiques dans le post #1 ce qui m'a permis d'y voir un peu plus clair ![]()
Pour ce faire, j'ai pris une LDR type 5549

connectée ainsi (Résistance 10k)

sauf, dans le sketch sur A6 (const int ldrPort = A6;)
La mesure sur ldrPort va de 0 à 1023.
Dès que la luminosité va < 500 (if (ldrLuminosite < 500) // S'il fait nuit) on joue le show lumineux autrement, on éteint tout. A toi d'étalonner cette valeur de 500.
Quand on passe de nuit à jour, le show lumineux en cours se termine avant que tout soit éteint (clearall();)(.
else // Autrement, il fait jour donc tout éteindre
{
Serial.println("Etaindre luminosite = " + String(ldrLuminosite));
clearall();
}
Ton programme adapté:
/* Arduino LED Patterns/Show Light with 18 LED */
//Setting Up the Pins for LEDs
const int ldrPort = A6;
int ldrLuminosite = 0; // Mesure de luminosité
void setup()
{
Serial.begin(115200);
for (int pin = 2; pin <= 19; pin++)
{
pinMode(pin,OUTPUT);
}
}
//Main Loop - Switches different LED Patterns
void loop()
{
ldrLuminosite = analogRead(ldrPort);
if (ldrLuminosite < 500) // S'il fait nuit
{
Serial.println("Allumer luminosite = " + String(ldrLuminosite));
int pickme = random(1,20); // picks a random pattern of LED patterns
switch(pickme)
{
case 1:
onrun(random(20,50));
break;
case 2:
alternate(random(80,100));
break;
case 3:
offrun(random(20,50));
break;
case 4:
stack(random(30,50));
break;
case 5:
chaser(random(80,100));
break;
case 6:
fadealter(random(80,100));
break;
}
}
else // Autrement, il fait jour donc tout éteindre
{
Serial.println("Etaindre luminosite = " + String(ldrLuminosite));
clearall();
}
}
void clearall()
{
for (int pin = 2; pin <= 19; pin++)
{
digitalWrite(pin,LOW);
}
}
void fillall()
{
for (int pin = 2; pin <= 19; pin++)
{
digitalWrite(pin, HIGH);
}
}
//One ON LED Run and all other OFF
void onrun(int delaytime)
{
for(int pin = 2; pin <= 19; pin++)
{
clearall();
digitalWrite(pin, HIGH);
delay(delaytime);
}
for(int pin = 18; pin >= 2; pin--)
{
clearall();
digitalWrite(pin, HIGH);
delay(delaytime);
}
}
//One OFF LED Run and all other OFF
void offrun(int delaytime)
{
for(int pin = 2; pin <= 19; pin++)
{
fillall();
digitalWrite(pin, LOW);
delay(delaytime);
}
for(int pin = 18; pin >= 2; pin--)
{
fillall();
digitalWrite(pin, LOW);
delay(delaytime);
}
}
//Flashing all LEDs ON and OFF
void flash(int delaytime)
{
for(int i = 1; i <=20; i++)
{
clearall();
delay(delaytime);
fillall();
delay(delaytime);
}
}
//Flashing LED in Fade manner
void fadeflash(int delaytime)
{
clearall();
int newdelay = delaytime / 5;
for(int fade = 0; fade <= 255; fade += 5)
{
for(int pin = 2; pin <= 19; pin++)
{
analogWrite(pin, fade);
}
delay(newdelay);
}
for(int fade = 255; fade >= 0; fade -= 5)
{
for(int pin = 2; pin <= 19; pin++)
{
analogWrite(pin, fade);
}
delay(newdelay);
}
}
//Alternatively Fade & Brightens
void fadealter(int delaytime)
{
clearall();
int newdelay = delaytime / 5;
for(int fade = 0; fade <= 255; fade += 5)
{
for(int i = 2; i <= 18; i+=2)
{
analogWrite(i, fade);
}
for (int j = 3; j <= 19; j += 2)
{
analogWrite(j, 255-fade);
}
delay(newdelay);
}
for(int fade = 255; fade >= 0; fade -= 5)
{
for(int i = 2; i <= 18; i+=2)
{
analogWrite(i, fade);
}
for (int j = 3; j <= 19; j += 2)
{
analogWrite(j, 255-fade);
}
delay(newdelay);
}
}
//Alternate Flash - Similar to Flash but alternate LEDs
void alternate(int delaytime)
{
for (int n = 1; n <= 5; n++)
{
clearall();
for (int i = 2; i <= 18; i += 2)
{
digitalWrite(i, HIGH);
}
delay(delaytime);
clearall();
for (int j = 3; j <= 19; j += 2)
{
digitalWrite(j, HIGH);
}
delay(delaytime);
}
}
//Putting all LEDs one by one in a stack
void stack(int delaytime)
{
int stack = 0;
while(stack < 18)
{
for(int pos = 2; pos <= (19 - stack); pos++)
{
clearall();
digitalWrite(pos, HIGH);
drawstack(stack);
delay(delaytime);
}
stack++;
}
}
//Subfunction of the stack function
void drawstack(int stack)
{
for(int n = 19; n > (19 - stack); n--)
{
if(n >= 2)
{
digitalWrite(n, HIGH);
}
}
}
//One LED chases another LED front and back
void chaser(int delaytime)
{
int div = 40;
int flashtime = delaytime / div;
int A = random(2,7);
int B = random(7,12);
int Av = 1;
int Bv = 1;
if(random(0,2))
{
Av *= -1;
}
if(random(0,2))
{
Bv *= -1;
}
for(int time = 1; time < 100; time++)
{
if(abs(A-B) == 1 && (Av*Bv) == -1)
{
for(int f = 1; f < round(div/4); f++)
{
clearall();
delay(flashtime);
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
delay(flashtime);
}
Av *= -1;
Bv *= -1;
A += Av;
B += Bv;
}
else
{
clearall();
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
A += Av;
B += Bv;
delay(delaytime);
}
if(A < 2)
{
A = 3;
Av *= -1;
}
if(B > 19)
{
B = 18;
Bv *= -1;
}
if(A >= B)
{
A = B-1;
}
}
}
A ta disposition pour toutes questions complémentaires.
Cordialement
jpbbricole
Bonsoir jpbbricole,
Merci pour ton retour et ton aide précieuse. ![]()
J'essaie de tester cela demain et te ferais bien sur un retour du topo.
Cordialement.
Bonjour jpbbricole,
j'ai pris le temps ce matin de tester le topo avec ton prog,
et bien ..... c'est parfait !!!! tout fonctionne à merveille ainsi.
![]()
j'ai testé différentes valeur pour ldrLuminosite < 500 pour adapter a ma LDR que j'avais sous la main et bien noté les nuances.
Que dire de plus ..... sinon un très garnd Merci pour ton coup de main et aussi pour nos échanges c'est très sympa de ta part !! ![]()
cordialement
Bonjour koko11073
Prends du plaisir avec ton montage.
En espérant que ma façon de t'aider t'a permis d'apprendre quelque chose ![]()
Bonne continuation
Cordialement
jpbbricole
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.