Pousser Eliobot sans le toucher

Intro

Dans cette leçon, tu vas apprendre à utiliser les capteurs de l’Eliobot pour le pousser sans le toucher.

Étape 1

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

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.

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

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

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut