Feux tricolores avec bouton piéton

MéthodeMontage

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élais
13
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 digitale
20
  pinMode(Bouton, INPUT);
21
  //Déclaration des sorties digitales
22
  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 etatBouton
34
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/Arduino
2
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érie
6
it = util.Iterator(carte)
7
it.start()
8
9
# Contantes
10
PinBouton = 6
11
# Nommage des ports Leds
12
PinledVH = 8
13
PinledOH = 9
14
PinledRH = 10
15
PinledVB =11
16
PinledOB=12
17
PinledRB=13
18
# Nommage des délais
19
tempsLong = 5
20
tempsCourt = 2
21
22
# Configuration de départ-------- setup
23
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-----------loop
33
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émentCode 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élais
13
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 digitale
20
  pinMode(Bouton, INPUT);
21
  //Déclaration des sorties digitales
22
  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 etatBouton
34
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
}