[AIDE] jeu de reflexe- detection appui

Bonjour

Je suis en train de faire un jeu sur arduino. Ma seule contrainte : utiliser un panneau de led de 32*16.
Du coup mon jeu est le suivant : des equations s'affichent succesivement. Le premier joueur a appuyé sur son bouton gagne si l'équation est vraie, si elle est fausse et qu'un joueur a appuyé, il perd. Si au bout de quelques secondes aucuns joueur n'a appuyé, l'équation suivante apparait

Je n'arrive pas a detecter l'appuie sur un bouton...

Voici mon code

int jeuEquation()             //fonction du jeu Equation
{
  int s1 = 0, s2 = 0, t, r;       
  while(!s1 && !s2)             //tant que aucun des boutons n'est appuyé. Si 1/2 est appuyé, on sort du while
  {
    t=random(0,14);                                             //choix random de l'equation (parmis les 15)
    afficherEquation(EQ[t][0],EQ[t][1],EQ[t][2],EQ[t][3]);      //affichage de l'equation t
    unsigned long temps = millis();
    r=random(3,10);       //on attend un temps random (entre 1 seconde et 4s) pour afficher l'équation suivante
    while(millis()-temps < 400*r)
    {
    s1=digitalRead(J1);                                         //on lit le bouton J1              
    s2=digitalRead(J2);                                         //on lit le bouton J1
    }
    //on desactive toutes les led
    afficherChiffre(1,-1);
    afficherChiffre(2,-1);
    afficherChiffre(3,-1);
    afficherChiffre(4,-1);
    afficherChiffre(5,-1);
    afficherChiffre(6,-1);
    afficherSigne(-1);
  }
  if(s1 && !s2)                                         //si c'est le joueur 1 qui a appuyé
  {
    if(EQ[t][4])                                //on verifie si l'équation etait vraie
    {
      return 1;
      Serial.println("J1 gagne");
      
    }
    else
    {
      return 2;
      Serial.println("J2 gagne");
    }
  }
  else if(!s1 && !s2)
  {
    if(EQ[t][4])
    {
      return 2;
      Serial.println("J2 gagne");
    }
    else
    {
      return 1;
      Serial.println("J1 gagne");
    }
  }
 }

Merci d'avance pour votre aide
Victor.

Bonjour,
Une piste pour toi

/* ************************************************************************ */
/* Bouton poussoir appuyé                                                   */
/* ************************************************************************ */
uint8_t appuiBoutonPoussoir(uint8_t pin, uint8_t mode){
/*Mode = 0 pour BP entre entrée et masse (res entre entrée et alimentation)
  Mode = 1 pour BP entre entrée et alimentation (res entre entrée et masse)
  renvoi 0 si non appuyé et 1 si appuyé
            Mode 0            Mode 1
             Vcc               Vcc    
             ┌┴┐                │
             │ │                o │B
             └┬┘                o │P
         I/O ─┤            I/O ─┤
              │                ┌┴┐
              o │B             │ │
              o │P             └┬┘
              ┴                 ┴
             Gnd               Gnd
*/
	uint8_t dummy = 0;
	uint8_t appui = 0;
	if(mode == 0){											//mode 0
		if(digitalRead(pin) == 0){						//BP appuyé
			dummy = 0;
			delay(DEBOUNCE);
			if(digitalRead(pin) == dummy){
				appui = 1;
			}
		}
	} else {													//mode 1
		if(digitalRead(pin) == 1){						//BP appuyé
			dummy = 1;
			delay(DEBOUNCE);
			if(digitalRead(pin) == dummy){
				appui = 1;
			}
		}
	}
	return appui;
}

victorberson94:
Dans le cadre de mon cursus scolaire, je dois faire un jeu en arduino.

Ce serait pas mal de le préciser....

Salut icare, merci de ta réponse

Dans ton delay, tu met "DEBOUNCE", qu'est ce que c'est?
Et mettre de delay ne risque pas d'empecher les joueurs de cliquer? le but etant que le programme soit réactif et impartial vis a vis des deux joueurs

Merci

Re,

victorberson94:
Dans ton delay, tu met "DEBOUNCE", qu'est ce que c'est?

DEBOUNCE est une durée.

#define DEBOUNCE 100 //anti-rebondissement BP

victorberson94:
Et mettre de delay ne risque pas d'empecher les joueurs de cliquer? le but etant que le programme soit réactif et impartial vis a vis des deux joueurs

Essaie en supprimant le délais et tu comprendras pourquoi. :wink:
Fait une recherche sur la toile pour voir à quoi sert le debounce.