2 Boutons Boussoirs et 4 LEDs

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

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.

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

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

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

 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 ?

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

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?

OK je vais tester merci du coup de main

Mais sinon devoir est à rendre pour vendredi mais j'ai d'autre projet à faire sur d'autre code que l'arduino donc du coup je dois les faire très vite et j'ai en plus mes partiels à réviser

Merci

NON en fait je pense que il y a un truc qui ne va pas surement ça doit venir du logiciel car je fais mes montages avec 123d.circuits.io car lorsque je met le même code mais avec mes pins et sans le délai de 300 mili-secondes la led bleu scintille bizarrement je ne vois pas pourquoi sachant que lorsque le bouton n'est plus pressé la led bleu devrai s’éteindre

Voici ce que j'ai mis :

Sachant que au dévut j'ai mis

boolean etat = false;

pinMode (ledR1, OUTPUT);
   pinMode (ledB1, OUTPUT);
   //digitalWrite (ledR1, LOW);
   digitalWrite (ledB1, HIGH);



if (digitalRead (bp1) == HIGH)   // si le bouton est appuyé
   {     
     if (etat == true)   // on allume/éteint les leds en fonction de la valeur de etat
      {
     digitalWrite (ledR1, LOW);
      digitalWrite (ledB1, HIGH);
     }
    else
    {
        digitalWrite (ledR1, HIGH);
      digitalWrite (ledB1, LOW);
     }
etat = !etat;   // on inverse la valeur de etat
   
   }

Merci

faux contact quelque part

Je vais voir infobarquee mais je ne pense pas :frowning:

En fait il n'y a aucun faux contact avec les équipements lorsque j'appuis sur le premier bouton les 2 LEDs s'allume et la LED bleu a tendance à s'éteindre mais elle ne s’éteint pas ensuite si j'appuis sur le second bouton leds 2 LEDs s'allume mais la led bleu du 1er bouton s'éteint je ne sais pas pourquoi.

Voici une photo de mon montage
http://hpics.li/12e652f

Merci de ton aide infobarquee

Moi je pense qu'il faudrait commencer à réfléchir un peu.

Regarde ce que fait ton code si le bp1 est HIGH pour plusieurs itérations de la boucle principale.

Donc du coup faudrait que j'enlève cette fonction : if (etat == true) ?
Mais dans ce cas là mon programme n'aura plus de sens
Merci

On se pose les questions avant de coder.
Combien d'entrées, combien de sorties
On décrit toutes les relations des unes avec les autres
Et on vérifie son raisonnement

Quand tout semble cohérent on code et pas l'inverse. Sinon c'est n'importe quoi et tu passes des siècles à bricoler un truc boiteux.

Tu as raison fdufnews mais :
j'ai 2 boutons, chaque bouton peut contrôler 2 leds (de couleurs différentes une rouge et une bleu) indépendantes chacune.

Imaginons que j'appuis sur le premier bouton la led rouge du premier bouton s'allume puis si j'appuis sur le second bouton la led bleu s'allume

Et de même si je commence avec le second bouton la led rouge s'allume et si j'appuis sur le premier bouton la led bleu s'allume

En fait je ne vois toujours pas comment faut-il faire ?

Merci

Imaginons que j'appuis sur le premier bouton la led rouge du premier bouton s'allume puis si j'appuis sur le second bouton la led bleu s'allume

Et si tu appuies une seconde fois sur le premier bouton qu'est-ce qu'il se passe?

En fait si le bouton 1 est sur on les 2 leds s'allument si il repasse sur off la led rouge s'éteint mais la led bleu reste allumée.

Merci

Donc ça marche mais à moitié bizarrement :frowning:

Le sens de la question c'est quel comportement attends-tu du montage dans ce cas.
Ce qu'il faut que tu comprennes c'est que tu dois prévoir tous les cas (même ceux à priori non souhaités) sinon ton code est incomplet et tu as des comportements inattendus.
Par exemple si l'appui sur le bouton est trop long cela peut être vu comme 2 appuis successifs sur le même bouton donc ce cas doit être envisagé et traité.

Si ça marche à moitié ça ne marche pas.

En fait tout simplement si j'appuis sur le bouton x1 la led rouge r1 s'allume, si j'appuis sur le bouton x2 la led r2 s'allume etc

Mais ça ne change rien si je reste appuyé sur le bouton.

Merci

Bonjour,
J'ai l'impression que l'on se trouve dans un cas de "logique séquentielle" et qu'une analyse dans ce sens doit être faite avant tout codage.
@+

Je vois toujours pas mais bon.
J'ai essayé quelque petit truc mais je n'y arrive toujours pas :frowning:

void loop (void)
 {
  
    
   while(digitalRead(bp1) == 0 && digitalRead(bp2) == 0 && digitalRead(bp3) == 0)
    delay(10);
  
    
    if(digitalRead(bp1) == 1){
    if(joueur == 0){ //le jouuer 0 à les leds bleu
      digitalWrite(ledB1,HIGH);
      digitalWrite(ledR1,LOW);
      joueur = 1;    //le prochain joueur
    }else{
      digitalWrite(ledB1,LOW);
      digitalWrite(ledR1,HIGH);
      joueur = 0;
    }
  }else if(digitalRead(bp2) == 1){
    if(joueur == 0){ //le jouuer 0 à les leds bleu
      digitalWrite(ledB2,HIGH);
      digitalWrite(ledR2,LOW);
      joueur = 1;    //le prochain joueur
    }else{
      digitalWrite(ledB2,LOW);
      digitalWrite(ledR2,HIGH);
      joueur = 0;
    }}
      else if(digitalRead(bp3) == 1){
    if(joueur == 0){ //le jouuer 0 à les leds bleu
      digitalWrite(ledB3,HIGH);
      digitalWrite(ledR3,LOW);
      joueur = 1;    //le prochain joueur
    }else{
      digitalWrite(ledB3,LOW);
      digitalWrite(ledR3,HIGH);
      joueur = 0;
    }
  }
    //on attend que les bouton soit relachés
  while(digitalRead(bp1) == 1 || digitalRead(bp2) == 1 || digitalRead(bp3) == 1)
    delay(10);
}

Je ne comprend pas pourquoi lorsque j'appuis sur un premier bouton ( n'importe lequel ) les 2 leds s'allument et si je ré-appuis dessus la led rouge s'éteint mais la led bleu reste allumée. Si j'appuis sur un second bouton il n'y a que la led rouge qui s'allume et si j'appuis sur le troisième bouton la led rouge s'allume aussi.

Merci de vos réponses