Go Down

Topic: 2 Boutons Boussoirs et 4 LEDs (Read 5646 times) previous topic - next topic

2325

Dec 22, 2014, 11:42 am Last Edit: Dec 22, 2014, 11:44 am by 2325
Bonjour tout le monde

J'ai un petit soucis svp
Imaginons que j'ai 2 boutons poussoirs et sur chacun d'eux il y a 2 LEDs de différente couleur branchées avec le bouton poussoir. Avec chaque bouton il y a une led rouge et une led bleu

Du coup je voulais savoir comment faut-il faire pour : lorsque j'appuis sur le 2 ème bouton la LED rouge s'allume et si j'appuis sur le 1er bouton la bleu s'allume. Et vice versa

Du coup les lumières s'alternent quelque soit le bouton appuyé.

Merci beaucoup

Bonne journée

B@tto

Salut,

Bin rien de bien spécial ...

Code: [Select]
if(digitalRead(bouton1)==LOW) digitalWrite(LED1,HIGH);
else digitalWrite(LED1,LOW);

if(digitalRead(bouton2)==LOW) digitalWrite(LED2,HIGH);
else digitalWrite(LED2,LOW);
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

infobarquee

bonjour,
on t'a donné un exemple dans l'autre post.
a toi d'essayer d'imaginer comment faire.
tu mets tout sur papier, et tu code en fonction ;)
après si tu as un soucis, on pourra t'aider, mais on ne fera pas tout à ta place, même si dans quelques jours, ca sera noël.
AUCUNE AIDE PAR MP

XavierMiller

@Batto, l'idée est de faire un morpion : 3x3 boutons, 3x3x2 leds. Il faut donc qu'à chaque fois que n'importe quel bouton non allumé est actionné, la couleur de la LED à activer soit alternée ;)

2325

En fait je sais pas si j'ai bien expliqué mon problème mais je ne panse pas

Bah en fait imaginons que j'ai 3 boutons et 2 leds sur chaque bouton comme précedent
Au départ toutes les leds sont éteintes.

Si j'appuis sur le bouton numéro 3 la led rouge s'allume
Ensuite si j'appuis sur le bouton 1 la led bleu s'allume
Et si j'appuis sur le bouton 2 la led bleu s'allume

Et ça dans n'importe quel ordre

Merci de ton aide B@tto

2325

Oui je le sais infobarquee mais je n'arrive toujours pas c'est pour ça

Merci

2325

XavierMiller à tout à fait raison mais je n'y arrive pas

:(

infobarquee

En fait je sais pas si j'ai bien expliqué mon problème mais je ne panse pas

Bah en fait imaginons que j'ai 3 boutons et 2 leds sur chaque bouton comme précedent
Au départ toutes les leds sont éteintes.

Si j'appuis sur le bouton numéro 3 la led rouge s'allume
Ensuite si j'appuis sur le bouton 1 la led bleu s'allume
Et si j'appuis sur le bouton 2 la led bleu s'allume

Et ça dans n'importe quel ordre

Merci de ton aide B@tto
soit tu fais comme tu l'explique au dessus et tu te sers du code boolean dans ton autre post.

soit tu ne sais pas expliquer comme il faut.

dans le premier cas, tu as 3 boolean, un pour chaque bouton.
dans le setup, tu mets tout sur LOW, led éteinte
ensuite, il suffit d'appuyer sur un bouton pour activer telle ou telle led.
AUCUNE AIDE PAR MP

2325

En fait ce qui me dérange c'est que à chaque bouton poussoir il y a deux leds et elles sont sur des différentes pins et je dois les faire communiquer avec leur propre bouton poussoir.

Donc du coup c'est ça qui me pose soucis

XavierMiller

Une autre option que boolean, est de compter les phases de jeu : impair : couleur 1, pair : couleur 2.
"Faire communiquer", ce n'est pas le bouton poussoir ou la LED qui va le faire, mais l'arduino ;)

B@tto

#10
Dec 22, 2014, 02:00 pm Last Edit: Dec 22, 2014, 02:01 pm by B@tto
Dans
En fait je sais pas si j'ai bien expliqué mon problème mais je ne panse pas

Bah en fait imaginons que j'ai 3 boutons et 2 leds sur chaque bouton comme précedent
Au départ toutes les leds sont éteintes.

Si j'appuis sur le bouton numéro 3 la led rouge s'allume
Ensuite si j'appuis sur le bouton 1 la led bleu s'allume
Et si j'appuis sur le bouton 2 la led bleu s'allume

Et ça dans n'importe quel ordre

Merci de ton aide B@tto
Dans ce cas c'est juste une question de condition :

Code: [Select]
if(digitalRead(bouton1)==LOW && digitalRead(bouton2)==HIGH && digitalRead(bouton3)==HIGH)) digitalWrite(LED1,HIGH);
else if(digitalRead(bouton2)==LOW  && digitalRead(bouton2)==LOW && digitalRead(bouton3)==HIGH)) digitalWrite(LED2,HIGH);
else if(digitalRead(bouton2)==HIGH  && digitalRead(bouton2)==LOW && digitalRead(bouton3)==HIGH)) digitalWrite(LED3,HIGH);

....
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

2325

Sans vouloir t'offenser B@atto ce n'est pas ça du tout ;)

En fait je pense suivre l'idée de XavierMiller car je pense  que se serait la meilleur possibilité pour moi

Merci à tous
Je vous tiens au courant pour vous dire comment j'ai fais

Bonne journée.

2325

En fin de compte voilà ce que j'ai fais

Code: [Select]

if (digitalRead(bp1) == HIGH  )
{
     if ( (i % 2) == 0)
     {
     // nbre pair
     digitalWrite(ledR1, HIGH);
     digitalWrite(ledB1, LOW);
   
     }
     else
     {
     digitalWrite(ledR1, LOW);
     digitalWrite(ledB1, HIGH);
     }
    i=i+1;
   }
   
   if (digitalRead(bp2) == HIGH  )
{
     if ( (i % 2) == 0)
     {
     // nbre pair
     digitalWrite(ledR2, HIGH);
     digitalWrite(ledB2, LOW);
   
     }
     else
     {
     // nbre impaire
     digitalWrite(ledR2, LOW);
     digitalWrite(ledB2, HIGH);
     }
    i=i+1;
   }


J'ai un soucis là dedans : au début j'ai déclarer que i=0;   
Lorsque j'allume un interrupteur les 2 leds s'allument et lorsque je l'éteint il n'y a que la led bleu ( la deuxième ) qui reste allumé alors que l'autre s'éteint
Sachant que j'incrémente i à chaque fois je ne vois pas où est le problème

Merci de votre réponse

2325

J'ai essayé aussi de tout mettre dans une boucle for mais sans plus :(

Code: [Select]

 for (int i = 0; i < 9; i ++)
{
   if (digitalRead(bp1) == HIGH  )
{
     if ( (i % 2) == 0)
     {
     // nbre pair
     digitalWrite(ledR1, HIGH);
     digitalWrite(ledB1, LOW);
     }
     else
     {
     // nbre impaire 
     digitalWrite(ledR1, LOW);
     digitalWrite(ledB1, HIGH);
     }
   
   }
   
   if (digitalRead(bp2) == HIGH  )
{
     if ( (i % 2) == 0)
     {
     // nbre pair
     digitalWrite(ledR2, HIGH);
     digitalWrite(ledB2, LOW);
     }
     else
     {
     // nbre impaire
     digitalWrite(ledR2, LOW);
     digitalWrite(ledB2, HIGH);
     }
     
   }
     
}


Du coup comment faire svp ?

infobarquee

En fait ce qui me dérange c'est que à chaque bouton poussoir il y a deux leds et elles sont sur des différentes pins et je dois les faire communiquer avec leur propre bouton poussoir.

Donc du coup c'est ça qui me pose soucis
je vois pas le soucis.
tu prends le code dans l'autre post et tu double les boolean et le reste.

c'est a rendre pour quand ton devoir?
AUCUNE AIDE PAR MP

Go Up