Dans le cadre d'un projet qui consiste (en gros) à répondre à un QCM à l'aide d'un bouton poussoir, d'incrémenter un nombre en fonction des réponses choisies, et d'afficher le résultat en direct, je suis bloqué par mais faibles connaissances.

En effet mon code actuel me permet d'afficher mon résultat mais seulement si je reste appuyé sur le bouton. Afin d'avoir le résultat total après avoir répondu à 4 questions, il faudrait donc que je reste appuyé sur 4 boutons en même temps (pas du tout pratique...).

J'aurais donc besoin de votre aide pour améliorer mon code et créer une sorte de mémoire de l'état du bouton pour juste avoir à appuyer chaque bouton une seule fois.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
const int L1 = 30; 
const int L2 = 31; 
const int L3 = 32;
const int L4 = 33;
const int L5 = 34;
const int L6 = 35;
const int L7 = 36;
const int L8 = 37;
//////Question a : 4 réponses possibles///////
const int a1 = 9;
const int a2 = 8;
const int a3 = 7;
const int a4 = 6;
//////Question b : 4 réponses possibles///////
const int b1 = 5;
const int b2 = 4;
const int b3 = 3;
const int b4 = 2;
int nombre_points = 0; // nombre incrémenté 
int points_q1; //nombre de points à la question 1
int points_q2; //nombre de points à la question 2
byte etat1; // etat du bouton Question a : réponse 1
byte etat2; // etat du bouton Question a : réponse 2
byte etat3; // ...
byte etat4; // ...
byte etat5; // etat du bouton Question b : réponse 1
byte etat6; // etat du bouton Question b : réponse 2
byte etat7; // ...
byte etat8; // ...
//////////////////////////////////////////////////////Fonction Setup/////////////////////////////////////////////
void setup()
{
 *for (int n=2; n<=9; n++){
 * *pinMode(n, INPUT);}
 *for (int n=30; n<=37;n++) {
 * *pinMode(n, OUTPUT);}
} 
/////////////////////////////Déclaration des différents segments à allumer pour afficher les chiffres////////////
void zero(){ 
 *digitalWrite(L1,LOW);
 *digitalWrite(L2,HIGH);
 *digitalWrite(L3,HIGH);
 *digitalWrite(L4,HIGH); 
 *digitalWrite(L5,LOW);
 *digitalWrite(L6,HIGH); 
 *digitalWrite(L7,HIGH);
 *digitalWrite(L8,HIGH);}
void un(){
 *digitalWrite(L1,LOW);
 *digitalWrite(L2,LOW);
 *digitalWrite(L3,LOW);
 *digitalWrite(L4,HIGH); 
 *digitalWrite(L5,LOW);
 *digitalWrite(L6,HIGH); 
 *digitalWrite(L7,LOW);
 *digitalWrite(L8,LOW);}
void deux(){
 *digitalWrite(L1,HIGH);
 *digitalWrite(L2,LOW);
 *digitalWrite(L3,HIGH);
 *digitalWrite(L4,HIGH);
 *digitalWrite(L5,LOW);
 *digitalWrite(L6,LOW);
 *digitalWrite(L7,HIGH);
 *digitalWrite(L8,HIGH);}
void trois(){ *
 *digitalWrite(L1,HIGH);
 *digitalWrite(L2,LOW);
 *digitalWrite(L3,HIGH);
 *digitalWrite(L4,HIGH);
 *digitalWrite(L5, LOW);
 *digitalWrite(L6,HIGH);
 *digitalWrite(L7,HIGH);
 *digitalWrite(L8,LOW);}
void quatre(){
 *digitalWrite(L1,HIGH);
 *digitalWrite(L2,HIGH);
 *digitalWrite(L3, LOW);
 *digitalWrite(L4,HIGH);
 *digitalWrite(L5, LOW);
 *digitalWrite(L6,HIGH);
 *digitalWrite(L7, LOW);
 *digitalWrite(L8, LOW);}
void cinq(){
 *digitalWrite(L1,HIGH);
 *digitalWrite(L2,HIGH);
 *digitalWrite(L3,HIGH);
 *digitalWrite(L4, LOW);
 *digitalWrite(L5,HIGH);
 *digitalWrite(L6,HIGH);
 *digitalWrite(L7,HIGH);
 *digitalWrite(L8, LOW);}
void six(){
 *digitalWrite(L1,HIGH);
 *digitalWrite(L2,HIGH);
 *digitalWrite(L3,HIGH);
 *digitalWrite(L4,LOW);
 *digitalWrite(L5,LOW);
 *digitalWrite(L6,HIGH);
 *digitalWrite(L7,HIGH);
 *digitalWrite(L8,HIGH);}
void sept(){
 *digitalWrite(L1,LOW);
 *digitalWrite(L2,LOW);
 *digitalWrite(L3,HIGH);
 *digitalWrite(L4,HIGH);
 *digitalWrite(L5,HIGH);
 *digitalWrite(L6,HIGH);
 *digitalWrite(L7,LOW);
 *digitalWrite(L8,LOW);}
void huit(){
 *digitalWrite(L1,HIGH);
 *digitalWrite(L2,HIGH);
 *digitalWrite(L3,HIGH);
 *digitalWrite(L4,HIGH);
 *digitalWrite(L5,HIGH);
 *digitalWrite(L6,HIGH);
 *digitalWrite(L7,HIGH);
 *digitalWrite(L8,HIGH);}
/////////////////////////////////////////////////////Fonction boucle principale loop//////////////////////////////////
void loop() {
 *int etat1 = digitalRead(a1);
 *int etat2 = digitalRead(a2);
 *int etat3 = digitalRead(a3);
 *int etat4 = digitalRead(a4);
 *int etat5 = digitalRead(b1);
 *int etat6 = digitalRead(b2);
 *int etat7 = digitalRead(b3);
 *int etat8 = digitalRead(b4);
 *///Nombre de points à incrémenter en fonction du bouton appuyé
 *if (etat1==HIGH) {
 * * *points_q1=1;}
 *else if (etat2==HIGH) {
 * * *points_q1 = 2;}
 *else if (etat3==HIGH) {
 * * *points_q1 = 3;}
 *else if (etat4==HIGH) {
 * * *points_q1 = *4;}
 *else points_q1 = 0;
 *
 *if (etat5==HIGH) {
 * * *points_q2 = 1;}
 *else if (etat6==HIGH) {
 * * *points_q2 = 2;}
 *else if (etat7==HIGH) {
 * * *points_q2 = 3;}
 *else if (etat8==HIGH) {
 * * *points_q2 = 4;}
 *else points_q2 = 0;
 
 *nombre_points = points_q1 + points_q2 ;
/////////////////////////////////Affichages en fonction du résultat de nombre_points/////////////////////////////////:
 *if (nombre_points == 0){
 * *zero();} * * * * * * *// chiffre 0
 *if (nombre_points == 1){
 * *un();} * * * * * * * *// chiffre 1
 *if (nombre_points == 2){
 * *deux();} * * * * * * *// chiffre 2
 *if (nombre_points == 3){
 * *trois();} * * * * * * // chiffre 3
 *if (nombre_points == 4){
 * *quatre();} * * * * * *// chiffre 4
 *if (nombre_points == 5){
 * *cinq();} * * * * * * *// chiffre 5
 *if (nombre_points == 6){
 * *six();} * * * * * * * // chiffre 6
 *if (nombre_points == 7){
 * *sept();} * * * * * * *// chiffre 7
 *if (nombre_points == 8){
 * *huit();} * * * * * * *// chiffre 8
}