Feux tricolores avec bouton piéton
Méthode : Montage

Code Arduino
1
//Déclaration variables(s)2
const int Bouton = 6;
3
int etatBouton = 0;
4
5
//Nommage des ports 6
const int ledVH=8;
7
const int ledOH=9;
8
const int ledRH=10;
9
const int ledVB=11;
10
const int ledOB=12;
11
const int ledRB=13;
12
//Nommage des délais13
const int tempsLong=6000;
14
const int tempsCourt=3000;
15
16
// Configuration de départ--------------------------------17
void setup()
18
{19
//Déclaration de l'entrée digitale20
pinMode(Bouton, INPUT);
21
//Déclaration des sorties digitales22
pinMode(ledVB, OUTPUT);
23
pinMode(ledOB, OUTPUT);
24
pinMode(ledVH, OUTPUT);
25
pinMode(ledOH, OUTPUT);
26
pinMode(ledRH, OUTPUT);
27
pinMode(ledRB, OUTPUT);
28
}
29
30
//Exécution de la boucle----------------------------------31
void loop()
32
{33
//lecture de l'état du bouton et stockage dans etatBouton34
etatBouton = digitalRead(Bouton);
35
36
//bouton appuyé37
if (etatBouton==1) {
38
digitalWrite(ledVB, 0);
39
digitalWrite(ledVH, 0);
40
41
digitalWrite(ledOB, 1);
42
digitalWrite(ledOH, 1);
43
delay(tempsCourt);
44
digitalWrite(ledOB, 0);
45
digitalWrite(ledOH, 0);
46
47
digitalWrite(ledRB, 1);
48
digitalWrite(ledRH, 1);
49
delay(tempsLong);
50
}
51
//bouton non appuyé52
else {53
digitalWrite(ledRH, 0);
54
digitalWrite(ledRB, 0);
55
digitalWrite(ledVB, 1);
56
digitalWrite(ledVH, 1);
57
}
58
59
delay(100); // Petite pause
60
}
Code Python
1
# Péparation utilisation Python/Arduino2
from pyfirmata import *
3
from time import *
4
carte = Arduino('COM3') #Port de Communication à chercher (voir Introduction)
5
# itérateur : éviter trop de flux série6
it = util.Iterator(carte)
7
it.start()
8
9
# Contantes10
PinBouton = 6
11
# Nommage des ports Leds12
PinledVH = 8
13
PinledOH = 9
14
PinledRH = 10
15
PinledVB =11
16
PinledOB=12
17
PinledRB=13
18
# Nommage des délais19
tempsLong = 5
20
tempsCourt = 2
21
22
# Configuration de départ-------- setup23
Bouton = carte.digital[PinBouton]
24
Bouton.mode = pyfirmata.INPUT
25
LedVH = carte.digital[PinledVH]
26
LedVB = carte.digital[PinledVB]
27
LedOH = carte.digital[PinledOH]
28
LedOB = carte.digital[PinledOB]
29
LedRH = carte.digital[PinledRH]
30
LedRB = carte.digital[PinledRB]
31
32
# Création de la boucle-----------loop33
while True:
34
etatBouton = Bouton.read()
35
36
if etatBouton == 1:
37
LedVB.write(0)
38
LedVH.write(0)
39
40
LedOB.write(1)
41
LedOH.write(1)
42
sleep(tempsCourt)
43
LedOB.write(0)
44
LedOH.write(0)
45
46
LedRB.write(1)
47
LedRH.write(1)
48
sleep(tempsLong)
49
50
else:51
LedVB.write(1)
52
LedVH.write(1)
53
LedRB.write(0)
54
LedRH.write(0)
Complément : Code Arduino commenté
1
//Déclaration variables(s)2
const int Bouton = 6;
3
int etatBouton = 0;
4
5
//Nommage des ports 6
const int ledVH=8;
7
const int ledOH=9;
8
const int ledRH=10;
9
const int ledVB=11;
10
const int ledOB=12;
11
const int ledRB=13;
12
//Nommage des délais13
const int tempsLong=6000;
14
const int tempsCourt=3000;
15
16
// Configuration de départ--------------------------------17
void setup()
18
{19
//Déclaration de l'entrée digitale20
pinMode(Bouton, INPUT);
21
//Déclaration des sorties digitales22
pinMode(ledVB, OUTPUT);
23
pinMode(ledOB, OUTPUT);
24
pinMode(ledVH, OUTPUT);
25
pinMode(ledOH, OUTPUT);
26
pinMode(ledRH, OUTPUT);
27
pinMode(ledRB, OUTPUT);
28
}
29
30
//Exécution de la boucle----------------------------------31
void loop()
32
{33
//lecture de l'état du bouton et stockage dans etatBouton34
etatBouton = digitalRead(Bouton);
35
36
//bouton appuyé37
if (etatBouton==1) {
38
39
digitalWrite(ledVB, 0);// feu vert Bas éteint
40
digitalWrite(ledVH, 0);// feu vert Haut éteint
41
42
digitalWrite(ledOB, 1);// feu orange Bas allumé
43
digitalWrite(ledOH, 1);// feu orange Haut allumé
44
delay(tempsCourt); // Pause
45
digitalWrite(ledOB, 0);// feu orange Bas éteint
46
digitalWrite(ledOH, 0);// feu orange Haut éteint
47
48
digitalWrite(ledRB, 1);// feu rouge Bas allumé
49
digitalWrite(ledRH, 1);// feu rouge Haut allumé
50
delay(tempsLong); // Pause
51
}
52
//bouton non appuyé53
else {54
digitalWrite(ledRH, 0); // feu rouge Haut éteint
55
digitalWrite(ledRB, 0); // feu rouge Bas éteint
56
57
digitalWrite(ledVB, 1);// feu vert Bas allumé
58
digitalWrite(ledVH, 1);// feu vert Haut allumé
59
}
60
61
delay(100); // Petite pause
62
}