Programmation du robot

Pour ceux qui veulent juste faire fonctionner leur robot voici le programme. Pour les autres toutes les explications sont en dessous.

Télécharger le programme prêt à téléverser

Les sous-programmes

Les sous-programmes aussi appelés blocs personnalisés sous mBlock sont des « morceaux » de programmes qui regroupent toutes les étapes nécessaires pour une fonction.

  • Initialisation

L’initialisation sert à définir l’état des entrées et sorties dès le démarrage du programme. Ici on fixe les sorties de 6 à 11 à une valeur 0 pour que les moteurs soient à l’arrêt. On en profite aussi pour initialiser le servomoteur du capteur à ultrason à 90° pour qu’il « regarde » vers l’avant.

  • Commande des moteurs

Les sous-programmes de commandes des moteurs sont assez simples. Les sorties 6/7/8 sont pour le moteur de droite et les 9/10/11 pour le moteur de gauche.

Les sorties 6 et 11 définissent la vitesse des moteurs. On peut normalement régler la valeur de 0 (arrêt) à 255 (pleine vitesse) mais les moteurs ne veulent pas tourner en dessous de la valeur 100 car ils ne sont pas assez alimentés.

Les sorties 7 et 9 sont pour la marche avant.

Les sorties 8 et 10 sont pour la marche arrière.

Pour s’arrêter il faut tout mettre à zéro.

Pour tourner à droite on met le moteur de droite en arrière et le moteur de gauche en avant.

Pour tourner à gauche on met le moteur de gauche en arrière et le moteur de droite en avant.

Pour avancer on met les deux moteurs en avant.

Sur l’exemple vous pouvez voir que les deux moteurs ne sont pas réglés à la même vitesse. C’est pour que le robot aille droit en marche avant. Cela et du au fait que les moteurs ne sont pas tout à fait identiques et par conséquent pour une même alimentation ils ne tournent pas tout à fait à la même vitesse. Si en marche avant votre robot va sur la droite, augmentez la vitesse du moteur droit et si il va sur la gauche augmentez le vitesse du moteur gauche.

  • Mesures des distances

Pour mesurer les distances on utilise le capteur à ultrason monté sur son support qui peut pivoter à droite (angle 0) ou à gauche (angle 180).

Le capteur donne quelques fois des fausses distances donc les mesures sont faites deux fois à 0.2 secondes d’intervalle et stockées dans des variables nommées DistanceA1 et DistanceA2 pour les distances avant, DistanceG1 et DistanceG2 pour la gauche et DistanceD1 et DistanceD2 pour la droite.

Avant de mesurer les distances de droite et de gauche on oriente le servomoteur à 0° ou 180° en attendant 0.4 secondes avant la mesure pour laisser le temps au servomoteur d’atteindre l’angle désiré.

Après les mesures à droite ou à gauche on remet le servomoteur à un angle de 90° pour pouvoir faire les mesures avant quand on roule.

Programme principal

Le programme principal commence par Arduino générer le code afin qu’il soit autonome.

On appelle ensuite le sous programme Init pour initialiser le robot.

On lance la fonction répéter indéfiniment pour lancer une boucle infinie.

Les étapes du programme sont les suivantes:

  • Lecture de la distance avant
  • Test:si les deux mesures avant sont supérieures à 20cm ou inférieures à 1cm (cela élimine les distances trop grandes pour le capteur qui donne une distance égale à zéro dans ce cas) alors on lance le sous programme Avance.
  • Sinon on lance le sous-programme Stop pour s’arrêter et on lance consécutivement les sous-programmes Distance0 et Distance180 pour lire les distances gauche et droite
  • Comparaison des mesures de distances gauches et droites
  • Si la distance droite est inférieure à la gauche on lance le sous-programme Gauche pour tourner à gauche pendant 0.2 secondes
  • Sinon on lance le sous-programme Droite pour tourner à droite pendant 0.2 secondes
  • Après avoir tourné à gauche ou à droite on relance une nouvelle boucle

Sauvegardez et transférez le programme dans votre Arduino (voir tuto mBlock).

Voila votre robot est monté, câblé et programmé. Bon amusement.

Une réflexion sur « Programmation du robot »

Laisser un commentaire

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