~~NOTOC~~
=======le robot mBot (Programmation)=======
Le **robot mBot** contient différents capteurs et actionneurs, il est basé sur une **carte Arduino**. Il peut être programmé facilement par différents moyens dont l'application [[cours:mBlock]]. Il convient parfaitement à la découverte de la robotique et des systèmes embarqués.
**Compétence(s)**
* CT 1.2 Mesurer des grandeurs de manière directe ou indirecte.
* CT 4.2 Appliquer les principes élémentaires de l’algorithmique et du codage à la résolution d’un problème simple.
* CT 5.5 Modifier ou paramétrer le fonctionnement d’un objet communicant.
**J’ai acquis la(les) compétence(s) si :**
* J'ai réussi à faire réagir mBot en fonction des instructions données
* J'ai réussi à analyser l'environnement pour résoudre les problèmes posés
Il est nécessaire, pour cette activité, de maîtriser la compétence : "Utiliser l'application [[cours:mBlock]]
Pour programmer, connecter et télécharger les programmes dans les appareils", la connexion se fera en "USB" et en mode "Téléversement" pour faciliter les essais.
Il faut aussi **prévoir un espace suffisant et dégagé pour les essais, placer le robot sur le dos lors de sa programmation** (démarrage des moteurs), **débrancher le câble avant de le retourner et le surveiller pour lui éviter toutes chute de la table ou autre accident**.
Bien lire la totalité de l'activité avant de la commencer.
{{ :cours:boucletest.png?300|}}Pour pouvoir répéter facilement les tests et éviter tous problèmes en fin de téléchargement, nous allons utiliser :
* une boucle "Répéter indéfiniment"
* une condition "Si bouton carte pressé"
pour lancer le test.
=====Activité 1 : Les actionneurs=====
====Test simple====
Je vais tester les actionneurs (leds, buzzer et moteur). \\
Algorithme à utiliser :
* Répéter indéfiniment
* Si le bouton carte est appuyé
* Allumer les LED en rouge
* Émettre 4 notes différentes et courtes. (pulsation 0.25s).
* Avancer 1 seconde (à 50% de sa puissance).
* Tourner 0.5 seconde (à 50% de sa puissance).
* Émettre 3 notes différentes longues. (pulsation 0.5s).
* Allumer les LED en vert.
Tester le programme (penser à débrancher le câble) et appeler le professeur pour le valider.
{{:cours:cp.png?20 |}}++++Coup de pouce |
* Les actionneurs pour communiquer avec l'utilisateur sont dans la catégorie violette "Montrer".
* Les actionneurs pour agir sur la chaîne d'énergie sont dans la catégorie bleue foncé "Action"
* Je se dois faire plusieurs fois la même chose, j'utilise les boucles dans la catégorie orange "Contrôles"
++++
====Amélioration de l'utilisation====
{{ :cours:mbot_dist.jpg?300|}}
Pour des déplacements précis, l'idéal serait plutôt de les définir par une distance (en cm) ou un angle (en °) plutôt que d'utiliser des secondes.
Je cherche donc une proportionnalité entre la distance (C_DIST) et le temps et entre l'angle (C_ANGLE) et le temps.
{{:cours:cp.png?20 |}}++++Coup de pouce |
* Vous avez appris les calculs de proportionnalités en mathématique.
* Vous disposez d'une règle graduée et d'un rapporteur.
* Mesurer la distance parcourue et la rotation obtenue en fonction de différentes durée (la précision obtenue sera fonction de la durée initiale et de la précision de la mesure).
* Déterminer le temps nécessaire pour parcourir 1 cm ou tourner de 1°. Ce seront les valeurs C_DIST (nb de secondes pour 1 cm) et C_ANGL (nb de secondes pour 1 °) que nous utiliserons ensuite.
++++
====Application concrète====
Nous pouvons maintenant écrire facilement un programme permettant de tracer des figures géométriques fermées en indiquant un nombre de cotés et la longueur de ceux-ci (Polygone régulier).
J'écris l'algorithme sur une feuille, je le relis en contrôlant le fonctionnement. Je le traduis en programme. Je le teste.
{{:cours:cp.png?20 |}}++++Coup de pouce |
===Recherches utiles===
{{ cours:polygones.jpg?600 |}}
En géométrie j’ai appris que l’angle (a) des polygones réguliers est fonction du nombre (n) de coté. Soit a = 360° / n. (exemple : un carré a 4 cotés qui ont donc un angle de 360° / 4 = 90°.
===Eléments de l'algorithme===
* A l'initialisation, je défini le nombre de coté et leur longueur en cm dans 2 variables.
* Je calcule l'angle dans une troisième.
* Dans le programme je convertis les distances et angles en seconde grâce aux coefficients trouvés précédemment.
* Je compte le nombre de cotés après les avoir tracé et tourné.
++++
Pour rester le programme, dessiner différentes figures de différentes tailles.
Le robot peut tourner suivant 3 modes :
| {{:cours:prog_dif_rot.png?380|}} | {{:cours:differentes_rotations.jpg?400|}} |
Nous choisissons de préférence la rotation sur place qui est plus simple à mettre en œuvre.
=====Activité 2 : Les capteurs=====
Dans un premier temps, utiliser une variable pour visualiser la(es) valeur(s) renvoyée(s) par le capteur. Noter dans votre classeur les résultats trouvés afin de pouvoir les utiliser durant d'autres activités.
===Bouton poussoir===
Il s'agit d'une information logique n'ayant que 2 états)
Le bouton fourni une information **appuyé ou pas**.
* Utiliser le bouton poussoir avant de faire changer les couleurs des DELs.
===Détecteur de lumière===
Il s'agit d'une information analogique pouvant prendre "n'importe" qu'elle valeur.
Le détecteur fourni une **valeur de lumière comprise entre 0 et 1023**.
* Faire générer des "bip" à mBot si la lumière détectée est < 500 faire, sinon il reste silencieux.
===Module ultra son===
Il s'agit d'une information analogique pouvant prendre "n'importe" qu'elle valeur.
{{ :cours:mbot_capteurs_u.jpg?200|}}
L'émetteur envoi un signal ultra son qui se réfléchit sur les obstacles comme l'écho. Le récepteur détecte le retour du signal. Le module calcule le temps entre l'émission et la réception, le divise par 2 (aller/retour) et le multiplie par la vitesse du son (340m/s) pour déterminer la **distance de l'obstacle**. Attention, le signal émis forme un cône (la largeur de détection augmente avec la distance).
* Faire avancer mBot face à sa boîte et s'arrêter à 10 cm d'elle.
===Module ligne noire===
Il s'agit de 2 informations logiques (noir ou blanc) qui peuvent être combinés (2 éléments binaires) pour donner une information analogique (nombre de 0 à 3).
{{ :cours:mbot_capteurs_i.jpg?200|}}
Le module possède 2 émetteurs infra rouge tournés ver le sol et 2 récepteurs qui récupèrent le signal s'il s'est réfléchi sur une surface blanche (le noir absorbe la lumière). En fonction de la valeur retournée par le module, on connait la position de mBot vis à vis de la ligne noire (0 = dessus, 1 = bord droit, 2 = bord gauche, 3 = ailleurs).
* Demander à mBot de suivre la ligne noire du circuit fourni et s'il détecte un obstacle de s'arrêter à 5 cm de celui-ci.
=====Activité 3 : Le parcours mixte=====
{{ :cours:mbot_parcours-1.png?200|}}
Programmer mBot pour qu'il aille du Départ à l'Arrivée du parcours joint. Il doit émettre 3 bips long au démarrage (bouton poussoir) et 2 courts à l'arrivée. Il est allumé en vert à l'arrêt et en rouge lorsqu'il avance. Il doit être capable de s'arrêter à 5 cm d'un obstacle qui tomberait sur le parcours. La zone d'évolution est bordée par des barrières (obstacle).
===Coups de pouce===
* Il faut suivre la ligne
* Si un obstacle à 5 cm on s'arrête
* Si on perd la ligne blanche on continue tout droit sauf si obstacle à mois de 14 cm ou on tourne.