Corrigé situation B  avec LED : le véhicule prioritaire arrive au feu esclave.

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