Blink : le « Hello world » de l’Arduino

« Hello world » parle très vite aux personnes qui ont déjà tenté au moins une fois de se frotter au domaine du développement. Il s’agit de l’exercice le plus basique, qui permet de faire afficher l’expression « Hello world » sur un écran. Cet exercice permet un premier contact avec l’univers de la programmation.

Hello world sur Arduino

Concernant l’Arduino, c’est légèrement différent. En effet, les broches de cette petite cartes sont soit digitales, et donc sortent des 0 et des 1, soit analogiques, et sortent donc des valeurs numériques issues de calculs ou de mesures. Bref, pas question de leur faire afficher un texte. Certes, cela reste possible, en utilisant le port série (la prise USB), ou en connectant un écran LCD à certaines broches digitales, ce qui nécessite déjà un certain câblage, un certain code, et par conséquent une certaine connaissance du fonctionnement et de la programmation d’un Arduino. C’est donc un exercice qui, bien que simple à appréhender, arrive un peu plus tard dans l’apprentissage.

Un exercice simple

Afin de limiter au maximum les opérations pour une première présentation du codage sur Arduino, on aura recours à un exercice simple, qui consiste à faire clignoter une LED. Cet exercice permet de se familiariser avec la structure du code. On le complétera en jouant sur les différentes valeurs afin d’obtenir différents résultats.

Nous aurons ici simplement besoin de la carte Arduino Uno. Nous ferons clignoter sa LED intégrée, qui est reliée à la broche digitale 13, comme sur la plupart des autres cartes.

By Rajib Ghosh [CC BY-SA 4.0 ], from Wikimedia Commons

Arduino IDE

Comme nous l’avons vu dans un précédent article, nous aurons besoin du logiciel Arduino IDE. Ce logiciel va installer les pilotes Arduino sur votre ordinateur, d’une part, et permet de taper, compiler et téléverser votre programme vers la carte.

Une fois le logiciel téléchargé et installé, nous branchons notre Arduino à l’aide d’un câble USB A-B (le même que celui d’une imprimante) sur l’ordinateur. Le logiciel devrait reconnaître le port USB et le type de carte utilisés automatiquement. Nous allons pouvoir entrer notre code et en profiter pour le détailler ici :

/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Blink
*/

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Détaillons maintenant le code. Avant toute chose, une petite précision sur les commentaires. Ce sont des informations textuelles utilisées pour renseigner l’utilisateur d’un code sur l’utilisation de telle ou telle fonction, afin souvent de donner un complément d’information. Les commentaires sont ignorés par l’Arduino lors de l’exécution du code. Il existe deux types de commentaires :

  • Les commentaires situés entre les balises /* et */, indiquent un commentaire sur plusieurs lignes, avec un retour chariot entre deux lignes.
  • Les commentaires situés après deux slash // qui se terminent sur un retour chariot, qui sont donc sur une ligne.

Nous avons donc un premier paragraphe en commentaire qui nous renseigne sur le but du sketch (ou croquis, nom utilisé pour un programme Arduino), son créateur, ou toute autre information utile le concernant. Ensuite viennent d’autres lignes, incluant des commandes et/ou des commentaires.

Nous passons donc sur les premiers commentaires pour arriver au premier bloc :

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

Le setup est la fonction d’initialisation, elle s’effectue au démarrage de l’Arduino ou lors d’un appui sur le bouton Reset. Elle permet de donner au microcontrôleur certaines informations et de charger certaines bibliothèques lorsque c’est nécessaire. Traduction rapide :

  • pinmode : mettre la broche suivante en mode…
  • LED_BUILTIN : LED intégrée, qui correspond à la broche 13
  • OUTPUT : en sortie

Nous disons donc ici qu’il faut utiliser la LED intégrée en sortie. Passons maintenant à la suite du code :

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

La fonction loop s’exécute après le démarrage et, comme son nom l’indique, tourne en boucle jusqu’à l’extinction ou le redémarrage de l’Arduino. Voyons ici ce qu’il raconte :

  • digitalWrite(LED_BUILTIN, HIGH); : allume la LED. High représente une valeur de voltage élevée. Un courant est donc envoyé a la LED, qui s’allume.
  • delay(1000); : délai de 1000 millisecondes, donc une seconde, avant l’action suivante.
  • digitalWrite(LED_BUILTIN, LOW); : éteint la LED. Low représente une valeur de voltage nulle (pour rappel, nous sommes ici sur une sortie digitale, qui ne connaît donc que deux états, allumée ou éteinte).
  • delay(1000); : à nouveau un délai d’une seconde
  • Fin de la boucle, qui reprend au début. Ainsi, notre LED s’allume et s’éteint toutes les secondes.

Outre sa vocation pédagogique, ce sketch est aussi un moyen de vérifier facilement si la carte Arduino fonctionne correctement.

Une fois le code entré (ou le plus souvent copié-collé) sur l’Arduino IDE, il ne reste qu’à cliquer sur le bouton Téléverser. Le code sera compilé (traduit pour que le microcontrôleur puisse le comprendre), puis, s’il est correctement écrit, il sera envoyé à l’Arduino. Attention toutefois, un code compilé sans erreur ne signifie pas qu’il fonctionnera comme attendu, simplement qu’il sera compris par le microcontrôleur.

Aller plus loin

Maintenant que vous avez compris le fonctionnement de ce sketch, vous pouvez aller plus loin en modifiant les valeurs de temps, ou en ajoutant des séquences de clignotement, comme un bout de code morse, par exemple. Vous pouvez aussi remplacer la LED intégrée par une LED standard couplée à une résistance de 1 K ohm. Attention toutefois à respecter la polarité de la LED, la patte courte allant sur la broche GND de l’Arduino. La résistance s’insère entre la broche 13 et la patte la plus longue de la LED. Pour plus de facilité, utilisez une platine d’essai.

Une platine d’essai, utile pour vos prototypages. By Cz-David [CC BY-SA 3.0 or GFDL], from Wikimedia Commons

Source

Arduino.cc