Mise en situation :
Je souhaite promener mon chien mais sans avoir une laisse
si le chien mais s'il s'éloigne de plus d'une certaine distance (30 mètres) pendant plus de 10 seconde, alors le boitier au coup du chien fait un bip et produit une lumière
Le maitre entend le son ou voit la lumière et retrouve son chien.
Cahier des charges :
si la carte microbit 1 du maître émet un cycle 0 - pause de 1 s puis 1 - pause de 1 s
si la carte microbit 2 chien reçoit un 0, alors il émet un 0 et met la variable tempsCourant à jour, arrête le buzzer et éteind la led
si elle reçoit un 1, alors il émet un 1 et met la variable tempsCourant à jour, arrête le buzzer et éteind la led
si elle ne reçoit pas de signal pendant plus de 10 secondes après tempsCourant alors pilote une led et un buzzer
si la carte microbit 1 du maître ne reçoit pas de 0 ou 1, alors elle
# code microbit 1 du maître
from microbit import *
import radio
radio.on()
tempsEtat = 0
etat = 0
tempsAlarme = 0
etatAlarme = 0
message = ''
pin0.write_digital(0)
while True:
# toutes les 1s, changer d'état 0 <=> 1, afficher et emettre
if running_time()-tempsEtat > 1000:
etat = 1 - etat
if etatAlarme == 0:
display.show(str(etat))
tempsEtat = running_time()
radio.send(str(etat))
if running_time() - tempsAlarme > 5000:
etatAlarme = 1
pin0.write_digital(1)
display.show(Image.HAPPY)
# écouter les messages reçu ... désactiver l'alarme
message = radio.receive()
if message:
if etat == 1 and message == '1' or etat == 0 and message == '0':
etatAlarme = 0
tempsAlarme = running_time()
pin0.write_digital(0)
display.show(Image.HAPPY)
Code microbit 2 : chien
# code microbit du chien
from microbit import *
import radio
radio.on()
tempsEtat = 0
etat = 0
tempsAlarme = 0
etatAlarme = 0
message = ''
pin0.write_digital(0)
display.show(Image.HAPPY)
while True:
# écouter les messages reçu ... désactiver l'alarme
message = radio.receive()
if etat == 0 and message == '1' or etat == 1 and message == '0':
etat = int(message[0])
print(etat)
# redéfinir tempsAlarme
tempsAlarme = running_time()
# emettre le message
radio.send(str(etat))
# si l'alarme était active alors annuler l'alarme
if etatAlarme == 1:
pin0.write_digital(0)
etatAlarme = 0
display.show(Image.HAPPY)
# écouter les messages reçu ... désactiver l'alarme
if running_time() - tempsAlarme > 10000:
etatAlarme = 1
display.show(Image.SAD)
radio.send('A')
tempsAlarme = running_time() + 10000
pin0.write_digital(1)
Nicolas Jaeck
Nombre d'articles: 2
Voir tous les articles