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éthodeCode 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éthodeCode 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