La programmation est généralement la dernière étape concernant la fabrication d'un robot. Si vous avez suivi les leçons, vous avez à présent choisi les actionneurs, l'électronique, les capteurs et autres, et vous avez assemblé le robot et, avec de la chance, il ressemble à quelque chose qui correspond à ce que vous aviez initialement décidé de construire. Sans programmation, le robot n'est qu'un presse-papiers coûteux bien que très agréable à regarder. Il faudrait bien plus d'une leçon pour vous apprendre à programmer un robot donc, à la place, cette leçon vous aidera dans la façon de commencer et sur où (et quoi) apprendre. L'exemple pratique va utiliser « Proccessing », un langage de programmation amateur populaire destiné à être utilisé avec le microcontrôleur Arduino choisi au cours des précédentes leçons. Nous allons également supposer que vous allez programmer un microcontrôleur plutôt qu'un logiciel pour un ordinateur à part entière.
Il existe de nombreux langages de programmation pouvant être utilisés pour programmer des microcontrôleurs ; les plus courants sont :
Dans la leçon 4, vous avez choisi un microcontrôleur basé sur les fonctionnalités dont vous aviez besoin (nombre d' E/S, communauté d'utilisateur, fonctions spéciales, etc.). Souvent, un microcontrôleur est conçu pour être programmé dans un langage spécifique. Par exemple :
Si vous avez choisi un microcontrôleur amateur d'un fabricant connu ou populaire, il existe probablement une grande documentation disponible afin que vous puissiez apprendre à programmer dans leur langage de programmation choisi. Si vous choisissez plutôt un microcontrôleur d'un petit fabricant, moins connu (par exemple, car il a de nombreuses fonctionnalités que vous pensez être utiles pour votre projet), il est important de savoir en quel langage de programmation le contrôleur est conçu (C dans de nombreux cas) et quels sont les outils de développement disponibles (généralement du fabricant de puces).
Le premier programme, que vous devrez probablement écrire est « Hello World » (dénommé ainsi pour des raisons historiques). C'est l'un des programmes les plus simples pouvant être réalisé dans un ordinateur, et il est destiné à imprimer une ligne de texte (par exemple « Hello World ») sur l'écran de l'ordinateur ou l'écran LCD. Dans le cas d'un microcontrôleur, un autre programme très basique que vous pouvez concevoir a un effet sur le monde extérieur (plutôt que simplement des calculs internes) est fait basculer une broche d'E/S. Connecter une DEL et une broche d'E/S, puis définir la broche d'E/S sur MARCHE et ARRÊT fera clignoter la DEL. Bien que le simple fait d'allumer une DEL puisse sembler élémentaire, la fonction peut s'intégrer à certains programmes complexes (vous pouvez l'utiliser pour éclairer des DEL en multi-segments, pour afficher du texte et des chiffres, utiliser des relais, des servomoteurs et bien plus). Étape 1 : Assurez-vous d'avoir tous les composants nécessaires pour programmer le microcontrôleur Tous les microcontrôleurs ne sont pas livrés avec tout ce dont vous avez besoin pour les programmer, et la plupart des microcontrôleurs ont besoin d'être connectés à un ordinateur via la prise USB. Si votre microcontrôleur n'a pas de connecteur USB ou DB9, vous aurez alors besoin d'un adaptateur USB/série séparé, et de le câbler correctement. Heureusement, de nombreux microcontrôleurs amateurs sont programmables, soit via un port RS-232, soit USB, et comprennent le connecteur USB intégré qui est utilisé non seulement pour la communication dans les deux sens, mais aussi pour alimenter la carte microcontrôleur. Étape 2 : Connectez le microcontrôleur à l'ordinateur et vérifiez à quel port COM il est connecté. Tous les microcontrôleurs ne seront pas reconnus par l'ordinateur et vous devriez lire le guide « Mise en route » dans le manuel pour savoir exactement ce qu'il faut faire pour que votre ordinateur le reconnaisse et soit en mesure de communiquer avec lui. Vous aurez souvent besoin de télécharger des « pilotes » (spécifiques à chaque système d'exploitation) pour permettre à votre ordinateur de comprendre comment communiquer avec le microcontrôleur et/ou la puce convertisseur USB/série. Étape 3 : consultez le guide d'utilisation de produit pour obtenir du code exemple et la méthode/protocole de communication Ne réinventez pas la roue si vous n'avez pas à le faire. La plupart des fabricants offrent un peu de code (ou pseudo-code) expliquant comment faire fonctionner leur produit. Le code exemple peut ne pas être dans le langage de programmation de votre choix, mais ne désespérez pas ; faites une recherche sur Internet pour voir si d'autres personnes ont créé le code nécessaire.
Nous avons choisi un microcontrôleur Arduino comme « cerveau » de notre robot. Pour commencer, nous pouvons jeter un œil aux Didacticiels : l'Arduino en 5 Minutes. Ces didacticiels vous aideront à utiliser et à comprendre la fonctionnalité de base du langage de programmation Arduino. Une fois que vous avez terminé ces didacticiels, jetez un œil à l'exemple ci-dessous. Pour le robot que nous fabriquons, nous allons créer un code pour le faire se déplacer (gauche, droite, avant, arrière), déplacer les deux servomoteurs (panoramique/inclinaison) et communiquer avec le capteur de distance. Nous avons choisi Arduino en raison de la grande communauté d'utilisateurs, de l'abondance des exemples de code et de la facilité d'intégration avec d'autres produits. Capteur de distance Heureusement, dans le code Arduino, il existe un exemple pour obtenir des valeurs à partir d'un capteur analogique. Pour cela, nous allons à Fichier -> Exemples -> Analogique -> AnalogInOutSerial (ainsi nous pouvons voir les valeurs) Panoramique/inclinaison : Encore une fois, nous avons la chance d'avoir des exemples de code pour faire fonctionner des servomoteurs depuis un Arduino. Fichier -> Exemples -> Servomoteurs -> Balayage Notez que les textes après deux barres obliques // sont des commentaires et ne font pas partie du code compilé
#include <Servo.h> // Ceci charge le script d'asservissement, ce qui vous permet d'utiliser les fonctions spécifiques ci-dessous Servo myservo; // crée l'objet servomoteur pour contrôler un servomoteur int pos = 0; // variable pour stocker la position du servomoteur void setup() // nécessaire dans tous les codes Arduino { myservo.attach(9); // relie le servomoteur de la broche 9 à l'objet servomoteur } void loop() // nécessaire dans tous les codes Arduino { for(pos = 0; pos < 180; pos += 1) // la variable 'pos' va de 0 à 180° par pas de 1° { myservo.write(pos); // dit au servomoteur d'aller à la position dans le retard de variable 'pos' delay(15); // attends 15 ms avant que le servomoteur atteigne la position } for(pos = 180; pos>=1; pos-=1) // la variable 'pos' va de 180 à 0° { myservo.write(pos); // dit au servomoteur d'aller à la position dans le retard de variable 'pos' delay(15); // attend 15 ms à chaque degré } }
Contrôleur de moteur C'est là que ça devient un peu plus difficile, car aucun exemple de code n'est disponible spécifiquement pour l'Arduino. Le contrôleur est connecté à la broche Tx (série) de l'Arduino et attend un « Octet de départ » spécifique avant d'engager toute action. Le manuel indique le protocole de communication requis ; une chaîne avec structure spécifique :
Pour ce faire, nous créons un caractère sous forme d'octets dans le caractère :
unsigned char buff[6]; buff[0]=0x80; //octet de départ spécifique au contrôleur de moteur Pololu buff[1]=0; //octet de type périphérique spécifique à ce contrôleur Pololu buff[2]=1; //numéro du moteur et octet de direction ; motor one =00,01 buff[3]=127; //vitesse du moteur « 0 à 128 » (ex : 100 est 64 en hexadécimal) Serial.write(buff);
Par conséquent, lorsque cela est envoyé par la broche série, ce sera envoyé dans le bon ordre. Associer tout le code fait que le robot va de l'avant et balaye le servomoteur lors de la lecture des valeurs de distance. Vous pouvez découvrir tout le robot et le manuel utilisateur.