Corrigé situation A sans 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
for x in range(3,5):
13
for y in range(2):
14
display.set_pixel(x,y,9)
15
for x in range(3,5):
16
for y in range(3,5):
17
display.set_pixel(x,y,0)
18
def afficheOrange():
19
for x in range(3,5):
20
for y in range(2):
21
display.set_pixel(x,y,0)
22
for x in range(3,5):
23
for y in range(3,5):
24
display.set_pixel(x,y,4)
25
def afficheAttente(attente):
26
for x in range(2):
27
for y in range(5):
28
display.set_pixel(x,y, 0 if 5*x+y >= attente else 9)
29
30
while True:
31
# Arrivee du vehicule prioritaire au feu maitre
32
if button_a.was_pressed():
33
feuRouge = False
34
attente = DUREE
35
radio.send("ROUGE")
36
37
# Affichage Rouge / Orange
38
if feuRouge :
39
afficheRouge()
40
else :
41
afficheOrange()
42
43
# Gestion de l'attente
44
sleep(1000)
45
attente -= 1
46
afficheAttente(attente)
47
radio.send(str(attente))
48
49
# Alternance du feu
50
if attente == 0 :
51
attente=DUREE
52
feuRouge = not feuRouge
53
if feuRouge :
54
radio.send("VERT")
55
else:
56
radio.send("ROUGE")
57
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
for x in range(3,5):
11
for y in range(2):
12
display.set_pixel(x,y,9)
13
for x in range(3,5):
14
for y in range(3,5):
15
display.set_pixel(x,y,0)
16
def afficheOrange():
17
for x in range(3,5):
18
for y in range(2):
19
display.set_pixel(x,y,0)
20
for x in range(3,5):
21
for y in range(3,5):
22
display.set_pixel(x,y,4)
23
def afficheAttente(attente):
24
for x in range(2):
25
for y in range(5):
26
display.set_pixel(x,y, 0 if 5*x+y >= attente else 9)
27
28
while True:
29
# Traitement des messages du maitre
30
incoming = radio.receive()
31
if incoming:
32
if incoming == "VERT" :
33
feuRouge = False
34
elif incoming == "ROUGE" :
35
feuRouge = True
36
elif len(incoming) ==1:
37
afficheAttente(int(incoming))
38
39
# Affichage Rouge / Orange
40
if feuRouge :
41
afficheRouge()
42
else :
43
afficheOrange()
44