Chronomètre - Afficheur 7 segments

Esquisse
sam, 04/16/2016 - 22:21
Bonjour,
Je suis débutant en Arduino et je souhaite réaliser un chronomètre a partir d'un afficheur 7 segments 4 digits, et 2 boutons (start/stop et reset).
Je suis bloqué, je ne sais pas quoi mettre dans les fonctions que j'ai provisoirement appelées : TRUC1, TRUC2, TRUC3 et TRUC4.
Merci de votre aide.
Voici le code :
long A = 2;
long B = 3;
long C = 4;
long D = 5;
long E = 6;
long F = 7;
long G = 8;
long DP = 9;
long d1 = 10;
long d2 = 11;
long d3 = 12;
long d4 = 13;
int bouton1 = 0;
int bouton2 = 0;
void TRUC1()
{
// JE NE SAIS PAS QUOI METTRE ICI
}
void TRUC2()
{
// JE NE SAIS PAS QUOI METTRE ICI
}
void TRUC2()
{
// JE NE SAIS PAS QUOI METTRE ICI
}
void TRUC3()
{
// JE NE SAIS PAS QUOI METTRE ICI
}
void digit4()
{
digitalWrite(d1, LOW);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
}
void digit2()
{
digitalWrite(d1, HIGH);
digitalWrite(d2, LOW);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
}
void digit3()
{
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, LOW);
digitalWrite(d4, HIGH);
}
void digit4()
{
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, LOW);
}
void zero()
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
digitalWrite(DP, LOW);
}
void un()
{
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(DP, LOW);
}
void deux()
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
digitalWrite(DP, LOW);
}
void trois()
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
digitalWrite(DP, LOW);
}
void quatre()
{
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(DP, LOW);
}
void cinq()
{
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(DP, LOW);
}
void six()
{
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(DP, LOW);
}
void sept()
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(DP, LOW);
}
void huit()
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(DP, LOW);
}
void neuf()
{
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(DP, LOW);
}
void setup()
{
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(DP, OUTPUT);
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
}
void loop()
{
bouton1 = digitalRead(A1);
bouton2 = digitalRead(A2);
digit1();
zero();
digit2();
zero();
digit3();
zero();
digit4();
zero();
if(bouton1 == HIGH)
{
digit1();
TRUC();
delay(5);
digit2();
TRUC();
delay(5);
digit3();
TRUC();
delay(5);
digit4();
TRUC();
delay(5);
}
else if(bouton2 == HIGH)
{
digit1();
zero();
digit2();
zero();
digit3();
zero();
digit4();
zero();
}
}
Alex
jeu, 04/21/2016 - 13:23
Est-ce que tu pourrais commencer par nous définir TRUC1(), TRUC2() etc?
Esquisse
mer, 04/27/2016 - 00:59
En fait, je voudrais insérer dans ces fonctions une variable x par exemple qui prendrait +1 toutes les secondes. Cependant, je ne veux pas que le programme soit coupé par un délais de 1 seconde, ce qui n'est pas possible en utilisant delay(1000); Comment faire ?
Alex
mar, 05/03/2016 - 14:28
Si je comprends bien ton besoin ça n'est pas possible car ton application requiert du multithread.
Esquisse
mar, 05/03/2016 - 18:28
Il existe la fonction millis() Je pense qu'il est possible de l'utiliser pour qu'une variable prenne 1 chaque seconde sans interrompre le programme en entier mais je ne sais pas du tout comment l'utiliser. Auriez-vous un exemple de programme avec ce cas ?