Exploiter le télémètre pour simuler le fonctionnement d'un radar de recul

Objectif

On utilise la mesure de la distance qui sépare le dispositif d'un obstacle pour moduler l'émission d'un signal sonore : plus l'obstacle est proche, plus les bips sont émis de façon rapprochée.

Il est possible de proposer une variante avec avertissement lumineux : une DEL clignotant de plus en plus rapidement, une échelle de DEL vert, jaune et rouge s'allumant progressivement, etc...

MéthodeMontage et programme proposé

Le montage regroupe le capteur de distance et un buzzer du même type que celui utilisé dans la section Produire un son avec une carte mico:bit. Pour des raisons pratiques, on exploitera ici la fonction music.pitch qui permet de générer simplement un son de fréquence et durée choisie.

Dans le programme ci-dessous, on a défini une fonction bip prenant deux paramètres: la fréquence du son joué et la durée entre chaque bip (qui est la même que la durée du son).

1
"""radar de recul"""
2
3
from microbit import *
4
from machine import time_pulse_us  #gestion des µs
5
import music
6
7
distance = 0    # mise à zero de la variable distance
8
9
        
10
def bip(freq,duree):
11
    music.pitch(freq,duree)
12
    sleep (duree)
13
    
14
    
15
while True:
16
            """creation de la salve de 10 µs avec 2µs à 0 au depart sur le pin2"""
17
        pin2.write_digital(0)
18
        sleep(0.002)            # mise en attente sur 2 µs
19
        pin2.write_digital(1)
20
        sleep(0.010)            # pour le sleep duree affichée en ms
21
        pin2.write_digital(0)
22
        
23
        """mesure de t, calcul de la distance, et affichage"""
24
        pin2.read_digital()             # configuration de pin2 en INPUT
25
        duree_aller_retour = time_pulse_us(pin2, 1)  # attend que pin2 passe à 1 puis renvoie la durée de parcours de la salve en µs
26
        distance = duree_aller_retour / 58  # D (cm)=duree x 340 / 2 / 100
27
        distance = int(distance)
28
    
29
        if distance <= 10 : 
30
            music.pitch(440)
31
        elif distance <= 15:
32
            bip(440,50)
33
        elif distance <= 20:
34
            bip(440,100)
35
        elif distance <=30:
36
            bip (440,200)
37
        elif distance <= 40:
38
            bip(440,400)
39
        else :
40
            bip(0,0)