Corrigé situation B avec LED : le véhicule prioritaire arrive au feu esclave.
Méthode : Code feu Maître
1
from microbit import *
2
import radio
3
4
radio.config(group=2)
5
radio.on()
6
7
DUREE = 10 # 10 secondes
8
attente = DUREE
9
feuRouge = True
10
11
def afficheRouge():
12
pin1.write_digital(1)
13
pin0.write_digital(0)
14
def afficheOrange():
15
pin1.write_digital(0)
16
pin0.write_digital(1)
17
def afficheAttente(attente):
18
display.show(str(attente))
19
20
while True:
21
# Arrivee du vehicule prioritaire au feu maitre
22
if button_a.was_pressed():
23
feuRouge = False
24
attente = DUREE
25
radio.send("ROUGE")
26
27
# Traitement des messages en provenance de l'esclave
28
incoming = radio.receive()
29
# Arrivee du vehicule priopritaire au feu esclave
30
if incoming == "PRIO" :
31
feuRouge = True
32
attente = DUREE
33
radio.send("VERT")
34
35
# Affichage Rouge / Orange
36
if feuRouge :
37
afficheRouge()
38
else :
39
afficheOrange()
40
41
# Gestion de l'attente
42
sleep(1000)
43
attente -= 1
44
afficheAttente(attente)
45
radio.send(str(attente))
46
47
# Alternance du feu
48
if attente == 0 :
49
attente=DUREE
50
feuRouge = not feuRouge
51
if feuRouge :
52
radio.send("VERT")
53
else:
54
radio.send("ROUGE")
Méthode : Code feu Esclave
1
from microbit import *
2
import radio
3
4
radio.config(group=2)
5
radio.on()
6
7
feuRouge = True
8
9
def afficheRouge():
10
pin1.write_digital(1)
11
pin0.write_digital(0)
12
def afficheOrange():
13
pin1.write_digital(0)
14
pin0.write_digital(1)
15
def afficheAttente(attente):
16
display.show(str(attente))
17
18
while True:
19
# Traitement des messages du maitre
20
incoming = radio.receive()
21
if incoming:
22
if incoming == "VERT" :
23
feuRouge = False
24
elif incoming == "ROUGE" :
25
feuRouge = True
26
elif len(incoming) ==1:
27
afficheAttente(int(incoming))
28
29
# Arrivee vehicule prioritaire
30
if button_a.was_pressed():
31
radio.send("PRIO")
32
33
# Affichage Rouge / Orange
34
if feuRouge :
35
afficheRouge()
36
else :
37
afficheOrange()