Le script
Introduction
L'algorithme a été écrit avec Mblock version 3.42.11.
Il est embarqué dans le robot.
Il a été conçu en plusieurs blocs. Celui-ci peut certainement être optimisé.
L'avantage qu'il présente c'est que chaque problème peut être attribué à des élèves en fonction du niveau de difficulté.
Télécharger le script
Les variables
Stocke la valeur de la distance du capteur avant sur le port 1.
|
|
Stocke la valeur de la distance du capteur avant gauche sur le port 2
|
|
Stocke la valeur de la distance du capteur arrière gauche sur le port 3
|
|
Stocke la valeur compteur qui varie en fonction de la direction prise par le Mbot
|
|
Stocke la valeur calculée de la distance, et ensuite un angle de rotation
|
|
Stocke la valeur binaire des 3 capteurs à ultrasons.
|
|
Stocke la valeur temps calculée à partir d'un angle.
|
La gestion des états
Ce premier script permet de gérer les différents états des capteurs.
Ce script permet met la variable compteur à 0 .
Ensuite le programme relève la valeur des capteurs et transforme sa valeur en tout ou rien dans une variable.
Attendre 0.1 seconde ralentit légèrement cette boucle pour éviter les bugs lors des mouvements du robot.
Si la distance du capteur avant (port1) est inférieure à 7 alors la valeur de la variable capteur 1 passe à 1 sinon elle passe à 0.
Si la distance du capteur côté gauche avant (port 2) est inférieure à 15 alors la valeur de la variable capteur 2 passe à 1 sinon elle passe à 0.
Si la distance du capteur côté gauche arrière (port 3) est inférieure à 15 alors la valeur de la variable capteur 3 passe à 1 sinon elle passe à 0.
Nous affectons à la variable ETAT le calcul des valeurs des différentes variables capteurs.
Cette valeur ETAT nous donne les différentes possibilités à traiter, en fonction de la valeur des trois capteurs.
Capteur 1 (port1) |
Capteur 2 (port2) |
Capteur 3 (port 3) |
ETAT |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 10 |
0 | 1 | 1 | 11 |
1 | 0 | 0 | 100 |
1 | 0 | 1 | 101 |
1 | 1 | 0 | 110 |
1 | 1 | 1 | 111 |
L'état 0 :
Si la variable compteur est différente de la valeur 0,
si la variable ETAT est égale à 0, Mbot avance à la vitesse de 100.
L'état 1:
Si la variable compteur est différente de la valeur 0,
Si la variable ETAT est égale à 1, Mbot avance jusqu'à ce que la distance du capteur sur le port 3 soit supérieur à 15 , c'est-à-dire jusqu'à ce que ce capteur ne détecte plus le mur.
La variable compteur est incrémentée de la valeur 1.
Appel est fait aux blocs personnalisés Tourner avec la variable interne 90 et se dégager.
Le bloc Tourner et se dégager seront traités par la suite.
Mais ici Mbot tourne à 90 à gauche et se dégage légèrement afin d'être sûr que son capteur avant gauche détecte le mur perpendiculaire à sa trajectoire initiale.
L'état 10 :
Si la variable compteur est différente de la valeur 0,
si la variable ETAT est égale à 10, Mbot avance jusqu'à ce que la distance du capteur sur le port 3 soit inférieure à 15 , c'est-à-dire que ce capteur détecte le mur
ou
s'il n'existe pas de mur, jusqu'à ce que la la durée depuis l'initialisation soit supérieure à 1 seconde.
L'état 11:
Si la variable compteur est différente de la valeur 0,
Si la variable ETAT est égale à 11, un appel au bloc personnalisé Correction de la trajectoire est fait, et Mbot avance à la vitesse de 100.
L'état 100 :
Si la variable compteur est différente de la valeur 0,
Si la variable ETAT est égale à 100, la variable compteur est incrémentée de la valeur 1.
Appel est fait aux blocs personnalisés Tourner avec la variable interne 90 et se dégager.
Le bloc Tourner et se dégager seront traités par la suite.
Mais ici Mbot tourne à 90 à gauche et se dégage légèrement.
L'état 101 :