2 roues motrices
2 roues motrices
4 roues motrices
4 roues motrices
D'un côté, nous avons le capteur Ultra-Sons. Dans la nature, c'est l'outil secret de la chauve-souris : elle crie dans le noir et attend que l'écho revienne pour "voir" les obstacles. Le capteur fait exactement la même chose ! Il possède deux yeux : l'un est un haut-parleur qui envoie un son super aigu (inaudible pour nous), et l'autre est un micro qui guette le retour du son. C'est un véritable géomètre : il mesure le temps que met le son à faire l'aller-retour. Plus le temps est long, plus l'objet est loin. Il nous transmet donc une distance précise en centimètres, une information numérique. C'est le même système que vous retrouvez sur les pare-chocs des voitures modernes pour aider vos parents à se garer sans toucher les autres véhicules !
De l'autre côté, nous avons le capteur Infrarouge. Lui, c'est l'œil du serpent ou du prédateur nocturne. Il n'écoute pas, il regarde. Il projette une lumière invisible pour l'humain et vérifie si cette lumière rebondit. Mais attention, contrairement aux ultra-sons, il n'est pas là pour faire de la grande précision : c'est un détecteur de présence. Il nous envoie une information logique (ou binaire) : c'est soit "VRAI" (je vois quelque chose), soit "FAUX" (je ne vois rien). C'est ce petit composant que vous utilisez tous les jours sans le savoir dans votre télécommande pour changer de chaîne, ou dans les robinets automatiques des centres commerciaux qui font couler l'eau dès que vous approchez vos mains.
Pour avancer, on utilise un composant appelé le motoréducteur.
Imaginez un moteur électrique classique, comme celui d'un petit ventilateur. Il tourne extrêmement vite, mais il est "faible" : si vous posez le robot par terre, le moteur va peiner, chauffer, et le robot ne bougera pas d'un millimètre. C'est là qu'intervient le réducteur, une petite boîte remplie d'engrenages fixée juste devant le moteur.
Dans la nature, c'est l'équivalent de la mâchoire d'un crocodile. Le moteur apporte la vitesse, et les engrenages transforment cette vitesse en force (ce qu'on appelle le couple). C'est exactement le même principe que les vitesses sur votre vélo : quand vous attaquez une côte raide, vous changez de vitesse pour pédaler plus vite mais avec moins d'effort, afin de faire monter le vélo.
Il reçoit une commande de votre programme (souvent une puissance de 0 à 100 %) et il la transforme en un mouvement de rotation puissant et maîtrisé.
Votre robot est assemblé, mais son cerveau est vide. Pour l'instant, il ne sait pas qu'il a 4 roues. Votre mission est de lui apprendre à faire un aller-retour simple. Mais attention : vous allez devoir commander chaque moteur un par un.
Votre mission :
Faire avancer le robot pendant 3 secondes.
Le laisser se reposer pendant 1 seconde.
Le faire reculer pendant 3 secondes.
L'arrêter définitivement.
Regardez votre robot de dessus. Pour avancer droit, les 4 moteurs doivent tourner dans le même sens.
Côté Gauche : Moteurs M1A et M1B.
Côté Droit : Moteurs M2A et M2B.
Astuce de mécanicien : Sur Vittascience ou Makecode, une vitesse positive (ex: 150) fait tourner le moteur vers l'avant. Une vitesse négative (ex: -150) le fait tourner vers l'arrière.
Attention si vous lui dites Moteur M1A vitesse 150, il va l'allumer et passer immédiatement à la ligne suivante. Si vous ne lui dites pas d'attendre, il fera tout en un millième de seconde !
Pour qu'il avance pendant 3 secondes, vous devez utiliser le bloc pause (ms).
Rappel : 1 seconde = 1000 millisecondes.
Un moteur qui tourne ne s'arrête jamais tout seul, même après une pause ! La pause bloque juste le programme, elle n'éteint pas les moteurs.
N'oubliez pas : Pour chaque étape de repos, vous devez utiliser le bloc Motor Stop All.
Action désirée Ce qu'il faut faire dans le code
Avancer Régler les 4 moteurs (M1A, M1B, M2A, M2B) à 150.
Durer Ajouter une pause de 3000 ms juste après.
S'arrêter Utiliser le bloc Motor Stop All.
Reculer Régler les 4 moteurs à -150.
Bravo ! Votre robot bouge. Mais regardez votre programme P1 : il est très long. Si on voulait faire avancer le robot 10 fois, le code deviendrait illisible, comme un plat de spaghettis emmêlés.
Dans le monde des ingénieurs, on utilise des Sous-Programmes (ou Fonctions). C'est comme créer une nouvelle commande personnalisée que le robot va apprendre par cœur.
Au lieu de répéter à chaque fois quels moteurs doivent tourner, nous allons créer deux blocs :
Un bloc AVANCER : qui contient les réglages des 4 moteurs en vitesse positive.
Un bloc RECULER : qui contient les réglages en vitesse négative.
Mission : Créez ces deux fonctions. Désormais, pour faire bouger le robot, vous n'aurez qu'à "appeler" le nom de la fonction. C'est plus court, non ?
Pour l'instant, votre robot avance, mais il ne sait pas "combien de temps". On doit rajouter une pause à chaque fois.
Imaginez maintenant que vous donniez un ordre plus précis : "Avance pendant X millisecondes". Ce X est ce qu'on appelle un Paramètre. C'est une étiquette que l'on donne à la fonction pour qu'elle s'adapte.
Votre défi :
Créez une fonction appelée AVANCER_duree avec un paramètre nommé duree_ms.
À l'intérieur de cette fonction :
Appelez votre fonction AVANCER.
Mettez un bloc pause qui utilise la valeur de l'étiquette duree_ms.
Ajoutez un bloc Motor Stop All pour que le robot s'arrête pile à la fin du temps.
Grâce à ce travail, votre boucle "Toujours" doit maintenant ressembler à une simple liste de courses, facile à lire pour n'importe qui :
Appel AVANCER_duree (3000)
Pause (1000)
Appel RECULER_duree (2000)
Pause (1000)
Avant (Version 1)
Répétitif : On écrit 4 lignes pour chaque mouvement.
Risque d'erreur : Si on change de moteur, il faut corriger partout.
Difficile à lire : On ne voit que des chiffres.
Après (Version 2)
Efficace : On n'écrit les réglages moteurs qu'une seule fois.
Maintenance facile : On change la fonction, tout le code se met à jour.
Lisible : On lit des mots simples (Avancer, Reculer).
Vous participez à une compétition de robots. Votre robot doit explorer une arène circulaire. Il doit rester à l'intérieur de la piste (fond blanc, bordure noire) et réagir s'il détecte un adversaire ou un obstacle.
Votre robot doit avoir un comportement "autonome" :
Avancer indéfiniment par défaut.
S'arrêter et reculer s'il détecte le bord de la piste (ligne noire).
S'arrêter et reculer s'il détecte un obstacle à moins de 15 cm.
Changer de direction de manière aléatoire après avoir reculé pour repartir vers le centre.
Avant de coder, complétez votre logique. Nous allons réutiliser les fonctions du programme précédent, mais nous allons en ajouter une nouvelle : DEMI_TOUR_aleatoire.
Astuce : Pour tourner aléatoirement, utilisez le bloc :
[choisir un nombre aléatoire entre 1 et 2]
Si le nombre est 1 tourner à gauche.
Si le nombre est 2 tourner à droite.
Mission A : La détection du bord (Capteur Infrarouge)
Le capteur IR est placé sous le robot.
Si le capteur détecte NOIR, cela signifie que le robot va sortir de la piste !
Action : Appeler RECULER_duree(2000) puis DEMI_TOUR_aleatoire.
Mission B : Le radar de combat (Capteur Ultra-Sons)
Le robot doit "voir" devant lui.
Si la distance mesurée par l'ultra-son est inférieure à 15 cm.
Action : Appeler Motor Stop All, puis DEMI_TOUR_aleatoire.
Mission C : La boucle principale
Dans le bloc Toujours, vous devez organiser vos tests.
SI (Bord noir détecté) ALORS ...
SINON SI (Obstacle détecté) ALORS ...
SINON (Tout va bien) ALORS AVANCER (vitesse 150).
Comprendre et modifier un programme
Concevoir, écrire, tester et mettre au point un programme
La programmation d’une nouvelle fonctionnalité
La programmation des OST
Algorithmique et programmation :
conditions
boucles
variables
événements
Entrées :
capteurs (distance, ligne, obstacle)
Sorties :
moteurs
LED
Structuration simple d’un programme
Tests et validation du comportement