Go Down

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

2325

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

Code: [Select]

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

fdufnews

Maintenant que tu as appris à coder, il faut apprendre à mettre au point.

Si tu envoyais sur le port série l'état des boutons et l'état de la variable joueur peut-être que tu comprendrais ce qui se passe

infobarquee


void loop (void) ?????

mets tout ton code histoire qu'on comprenne mieux, car la, je me perd dans ton code.
AUCUNE AIDE PAR MP

2325

OK merci je vais remettre mon code :

Code: [Select]


// Première Case
   int ledR1 = 0;
   int ledB1 = 1;
   int bp1 = 0;
// Première Case


// Deuxième Case
int ledR2=2;
int ledB2=3;
int bp2=2;
// Deuxième Case


// Troisième Case
int ledR3=4;
int ledB3=5;
int bp3=4;
// Troisième Case



int joueur = 0;

void setup (void)
   {
 
 
  // Première Case/////////////////////////////////////
   pinMode (ledR1, OUTPUT);
   pinMode (ledB1, OUTPUT);
   pinMode(bp1, INPUT);
   //digitalWrite (ledR1, LOW);
   //digitalWrite (ledB1, HIGH);

 
  // Deuxième Case/////////////////////////////////////
   pinMode (ledR2, OUTPUT);
   pinMode (ledB2, OUTPUT);
   pinMode(bp2, INPUT);
   //digitalWrite (ledR2, LOW);
   //digitalWrite (ledB2, LOW);
 
 
  // Troisième Case/////////////////////////////////////
   pinMode (ledR3, OUTPUT);
   pinMode (ledB3, OUTPUT);
   pinMode(bp3, INPUT);
   //digitalWrite (ledR2, LOW);
   //digitalWrite (ledB2, LOW);
 
 
}
 

void loop ()
 {
 
   
   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;
    }
  }
  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;
    }
  }
   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);
}




Merci pour tout

fdufnews

OK merci je vais remettre mon code :
Bonne idée. On comprends mieux pourquoi le code ne tourne pas rond.

Code: [Select]
// Première Case
   int ledR1 = 0;
   int ledB1 = 1;
   int bp1 = 0;
// Première Case

Si sur la même broche tu mets une LED et un bouton poussoir ce n'est pas très étonnant que le comportement soit imprévisible.
En plus on évite d'utiliser les broches 0 et 1 qui correspondent au port série car cela empêche d'utiliser Serial pour la mise au point et en plus cela peut planter le téléchargement du code dans l'arduino.

infobarquee

c'est sur qu'avec le code entier on comprend de suite le pourquoi ;)
AUCUNE AIDE PAR MP

2325

fdufnews       100000000000000 MMMEEERRRCCCIIIISSSSSS

Tu as ENFIN trouvé j'ai fais une erreur de....  euhhh je ne sais pas comment le dire mais merci quand même

infobarquee    Merci de ton aide aussi

Et 1000 mercis à tous ceux qui mon aidés

ps: je déteste les erreurs de ce genre et je suis désolé j'aurais du poster tout le code en entier

Sujet résolu

Bonne vacances à tous

:)

Go Up