bonjour a tous,
j'essaie de réaliser un jeu de buzzer avec des leds rvb.
pour l'instant j'ai réussi tant bien que mal à :
quand j'appuie sur le bouton start : les leds passent au bleu et la led flag est allumée
quand j'appuie sur le bouton reset : les leds sont blanches et led flag est éteinte
quand j'appuie sur un des bouton joueurs : la led du joueur qui a appuyé passe au vert, les trois autres au rouge, la led flag s'éteint (donc on ne peut pas buzzer tant que je n'ai pas appuyé sur le bouton start.)
je cherche désormais a vouloir faire clignoter le led verte du joueur qui vient de buzzer pendant 2 secondes ...
mais je bloque grave
j'ai essayé de retourner le problème dans tout les sens avec la fonction millis, essayé de créer un compteur " à part pour remplacer la fonction millis
du genre :
for ( long Temps=0; Temps<3000; Temps++);
if(currentTemps - previousTemps >= interval) {
previousTemps = currentTemps;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(ledPin, ledState);
tout ca a différents endroit de mon code mais rien n'y fait...
(j'écarte la fonction delay, car ceci n'est qu'une premiere étape, et je souhaiterai déclencher des sons par la suite. si j'utilise la fonction delay, tout va se mettre en pause si j'ai bien compris)
voici mon code :
const char boutonstart = 48; // declaration des variables boutons
const char boutonreset = 49;
const char bouton1 = 50;
const char bouton2 = 51;
const char bouton3 = 52;
const char bouton4 = 53;
const char ledflag = 13; // declaration de la led interne en guise de flag
unsigned char etatboutonstart; // declaration des etats des boutons (si necessaire)
unsigned char etatboutonreset;
unsigned char etatbouton1;
unsigned char etatbouton2;
unsigned char etatbouton3;
unsigned char etatbouton4;
unsigned char etatledflag; //declaration de l'etat de la led flag
unsigned char etatpinsled_V[] = {
3, 6, 9, 12 };
int pinsled_R[] = { // declaration des bornes de led rouge
1, 4, 7, 10 };
int pinCount_R = 4;
int pinsled_B[] = { // declaration des bornes de led bleu
2, 5, 8, 11 };
int pinCount_B = 4;
int pinsled_V[] = { // declaration des bornes de led verte
3, 6, 9, 12 };
int pinCount_V = 4;
int ledpins[] = { // declaration des bornes de toutes les leds
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
int allpinCount = 12;
boolean ledstate[6][12] = { // les diffrentes configs que peuvent avoir les leds
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0 },
{0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0 },
{1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0 },
{1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0 },
{1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1 }
};
void setup() {
for (int thisPin = 0; thisPin < allpinCount; thisPin++) // declaration des pins led en tant que sortie
{
pinMode(ledpins[thisPin], OUTPUT);
}
pinMode(ledflag, OUTPUT); //declaration de la pin 13 en tant que sortie
pinMode(bouton1, INPUT_PULLUP); // declaration des pins boutons en tant qu'entrees avec pullup interne
pinMode(bouton2, INPUT_PULLUP);
pinMode(bouton3, INPUT_PULLUP);
pinMode(bouton4, INPUT_PULLUP);
pinMode(boutonstart, INPUT_PULLUP);
pinMode(boutonreset, INPUT_PULLUP);
for (int i = 0; i < allpinCount; i++) // les leds demarrent en config 1 et flag eteint
{
digitalWrite (ledpins[i], ledstate[0][i]);
digitalWrite (ledflag, 0);
}
}
void loop() {
etatbouton1 = digitalRead(bouton1);
etatbouton2 = digitalRead(bouton2);
etatbouton3 = digitalRead(bouton3);
etatbouton4 = digitalRead(bouton4);
etatboutonstart = digitalRead(boutonstart);
etatboutonreset = digitalRead(boutonreset);
etatledflag = digitalRead(ledflag);
for( int j = 0; j< pinCount_V; j++)
etatpinsled_V[j] = digitalRead(pinsled_V[j]);
if(etatboutonreset == LOW) // si on appuie sur bouton reset, on est en config 1 et flag eteint
{
for (int i = 0; i < allpinCount; i++)
digitalWrite (ledpins[i], ledstate[0][i]);
digitalWrite (ledflag, 0);
}
if(etatboutonstart == LOW) //si on appuie sur bouton start ,config 2 et flag s'allume
{
for (int i = 0; i < allpinCount; i++)
digitalWrite (ledpins[i], ledstate[1][i]);
digitalWrite(ledflag, 1 );
}
if(etatbouton1 == LOW && etatledflag == 1) //si on appuie sur bouton 1 ,config 3 et flag s'eteint
{
for (int i = 0; i < allpinCount; i++)
digitalWrite (ledpins[i], ledstate[2][i]);
digitalWrite(ledflag, 0);
}
if(etatbouton2 == LOW && etatledflag == 1) //si on appuie sur bouton 2 ,config 4 et flag s'eteint
{
for (int i = 0; i < allpinCount; i++)
digitalWrite (ledpins[i], ledstate[3][i]);
digitalWrite(ledflag, 0) ;
}
if(etatbouton3 == LOW && etatledflag == 1 ) //si on appuie sur bouton 3 ,config 5 et flag s'eteint
{
for (int i = 0; i < allpinCount; i++)
digitalWrite (ledpins[i], ledstate[4][i]);
digitalWrite(ledflag, 0) ;
}
if(etatbouton4 == LOW && etatledflag == 1) //si on appuie sur bouton 4 ,config 6 et flag s'eteint
{
for (int i = 0; i < allpinCount; i++)
digitalWrite (ledpins[i], ledstate[5][i]);
digitalWrite(ledflag, 0) ;
}
}
comment et ou attaqueriez vous le problème????
merci
Francois