Robot Maqueen eviteur d'obstacles - Niveau débutant

Voici un premier mini projet très simple à mettre en œuvre pour commencer à s'amuser avec le robot Maqueen. Pour commencer, vous devrez avoir lu la ressource sur l'installation de la librairie maqueen et installé le fichier maqueen.py sur votre carte micro:bit.

MéthodePrincipe de fonctionnement

Le principe est très simple : On avance tant que le capteur de distance ne détecte pas d'obstacles.

  • Si un obstacle très proche est détecté, on recule pendant 2 secondes et on tourne pendant 1 seconde

  • Si un obstacle est détecté à moins de 2 cm, on introduit de l'aléatoire avec trois comportements possibles : on recule et on tourne, on tourne ou on tourne sur place.

  • pour illustrer le fonctionnement du capteur de ligne, on émet un bip à chaque fois qu'une ligne est franchie (joint de carrelage par exemple).

Voici le programme de démonstration. Vous pouvez le modifier à loisir pour changer le comportement du robot.

1
from microbit import *
2
from maqueen import Maqueen
3
from random import randint
4
5
mq=Maqueen()
6
mq.setVitesse(50)
7
while True:
8
    mq.avance()
9
    pin12.write_digital(0) # LED rouge de devant droite
10
    pin8.write_digital(0)  # LED rouge de devant gauche
11
    d=mq.distance()
12
    if d<5 or d>2000:      # obstacle très proche
13
        mq.recule()
14
        pin12.write_digital(1)
15
        pin8.write_digital(1)
16
        sleep(2000)
17
        mq.moteurDroit(0)
18
        sleep(1000)
19
    elif d<20:             # obstacle proche
20
        mq.son_r2d2()
21
        r=randint(1,3)
22
        if r==1:
23
            mq.recule()
24
            pin12.write_digital(1)
25
            pin8.write_digital(1)
26
            sleep(2000)
27
            mq.moteurGauche(0)
28
            sleep(1000)
29
        elif r==2:
30
            mq.moteurDroit(50)
31
            mq.moteurGauche(0)
32
            sleep(1000)
33
        elif r==3:
34
            mq.moteurDroit(-50)
35
            mq.moteurGauche(50)
36
            sleep(1000)
37
38
    if pin14.read_digital() == 0 and pin13.read_digital() == 0 :
39
        # detection de franchissement de ligne
40
        mq.son_bip()