Intro
Pousser Eliobot sans le toucher
Dans cette leçon, tu vas apprendre à utiliser les capteurs de l’Eliobot pour le pousser sans le toucher.
É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 nous définissons 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")
motors.motor_stop()
else:
print("Aucun obstacle")
motors.move_forward(100)
Ici pour pousser Eliobot on doit le faire reculer quand on détecte un obstacle devant et avancer si un obstacle est derrière.
while True:
if obstacleSensor.get_obstacle(1):
print("Un obstacle est devant")
motors.move_backward(100)
elif obstacleSensor.get_obstacle(3)
print("Un obstacle est derrière")
motors.move_forward(100)
else:
print("Aucun obstacle")
motors.motor_stop()
On ajoute une deuxième condition pour regarder le capteur arrière et si aucun capteur ne détecte d’obstacle on arrête les moteur.
É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
import time
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.move_backward(100)
elif obstacleSensor.get_obstacle(3)
print("Un obstacle est derrière")
motors.move_forward(100)
else:
print("Aucun obstacle")
motors.motor_stop()
Bravo !
Et voila, ton programme est fini ! Il ne te reste plus qu’à le Téléverser pour admirer le résultat