Intro
S’arrêter devant un obstacle
Dans cette leçon, tu apprendras à utiliser les capteurs de l’Eliobot pour détecter des obstacles et arrêter Eliobot.
Étape 1
Déclaration des entrées / sorties
Nous allons commencer notre code en intégrant quelques bibliothèques. Ce sont des ensembles de codes déjà écrits nous permettant de rajouter des fonctions facilement.
La première s’appelle “board” et est spécifique à CircuitPython. C’est grâce à elle que nous allons pouvoir expliquer à notre programme comment sont connectés les éléments au microcontrôleur (le cerveau de Eliobot)
Pour l’intégrer dans notre programme on utilise la ligne suivante :
import board
Cela nous permet d’appeler les entrée / sorties de la cartes en utilisant le numéro de la broche.
board.IO4
Étape 2
Déclaration des capteurs
Pour déclarer les capteurs on va utiliser la bibliothèque « analogio ».
import analogio
Ensuite on défini chaque capteur.
obstacleInput = [analogio.AnalogIn(pin) for pin in
(board.IO4, board.IO5, board.IO6, board.IO7)]
Les capteurs d’obstacles sont classés dans un tableau et sont numérotés de 0 à 3 : 0 pour la gauche, 1 pour l’avant, 2 pour la droite, et 3 pour l’arrière. Dans la fonction, nous utilisons l’indice 1 pour le capteur de devant.
Déclaration des moteurs
Pour déclarer les moteurs on va utiliser une bibliothèque qui se nomme « pwmio ».
import pwmio
Ensuite nous définissons chaque moteur, son sens et la batterie.
AIN1 = pwmio.PWMOut(board.IO36)
AIN2 = pwmio.PWMOut(board.IO38)
BIN1 = pwmio.PWMOut(board.IO35)
BIN2 = pwmio.PWMOut(board.IO37)
vBatt_pin = analogio.AnalogIn(board.BATTERY)
Pour nous faciliter la tâche on va utiliser la bibliothèque « elio ».
from elio import Motors, ObstacleSensor
Ensuite on définit les moteurs et capteur d’obstacle.
motors = Motors(AIN1, AIN2, BIN1, BIN2, vBatt_pin)
obstacleSensor = ObstacleSensor(obstacleInput)
Étape 3
Détecter l’obstacle
Pour commencer, nous allons reprendre le programme créé dans la leçon précédente. On te le remet ci-dessous :
while True:
if obstacleSensor.get_obstacle(1):
print("Un obstacle est devant")
else:
print("Aucun obstacle")
On va utiliser les fonctions de mouvements « elio.move_forward(100) » et « elio.motor_stop() » pour faire des actions en fonction de la situation :
while True:
if obstacleSensor.get_obstacle(1):
print("Un obstacle est devant")
motors.motor_stop()
else:
print("Aucun obstacle")
motors.move_forward(100)
Étape 4
Programme final
Voici le programme final que l’on va pouvoir exécuter ▶️ :
import board
from elio import Motors, ObstacleSensor
import pwmio
import analogio
obstacleInput = [analogio.AnalogIn(pin) for pin in
(board.IO4, board.IO5, board.IO6, board.IO7)]
AIN1 = pwmio.PWMOut(board.IO36)
AIN2 = pwmio.PWMOut(board.IO38)
BIN1 = pwmio.PWMOut(board.IO35)
BIN2 = pwmio.PWMOut(board.IO37)
vBatt_pin = analogio.AnalogIn(board.BATTERY)
motors = Motors(AIN1, AIN2, BIN1, BIN2, vBatt_pin)
obstacleSensor = ObstacleSensor(obstacleInput)
while True:
if obstacleSensor.get_obstacle(1):
print("Un obstacle est devant")
motors.motor_stop()
else:
print("Aucun obstacle")
motors.move_forward(100)
Bravo !
Et voila, ton programme est fini ! Il ne te reste plus qu’à le Téléverser pour admirer le résultat