Corrigé situation A avec LED : un appui sur le bouton A passe le feu maître à l'orange et l'autre feu au rouge.
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
# Affichage Rouge / Orange
28
if feuRouge :
29
afficheRouge()
30
else :
31
afficheOrange()
32
33
# Gestion de l'attente
34
sleep(1000)
35
attente -= 1
36
afficheAttente(attente)
37
radio.send(str(attente))
38
39
# Alternance du feu
40
if attente == 0 :
41
attente=DUREE
42
feuRouge = not feuRouge
43
if feuRouge :
44
radio.send("VERT")
45
else:
46
radio.send("ROUGE")
Méthode : Code feu Esclave
pas de modification par rapport à la version précédente
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
# Affichage Rouge / Orange
30
if feuRouge :
31
afficheRouge()
32
else :
33
afficheOrange()