Bonjour. On entend souvent parler du mot, Arduino, dans le monde des micro contrôleurs et en particulier en rapport avec les enseignes et afficheurs à LED. De quoi s'agit-il? Nous allons voir trois significations du mot, Arduino, puis nous allons voir comment nous pouvons l'utiliser pour programmer des enseignes, en comprenant la structure du programme, comment est-ce qu'on utilise les entrées et sorties et comment est-ce qu'on gère le temps. Il est indiscutable que l'Arduino a participé à rendre populaires les micro contrôleurs depuis une bonne dizaine d'années. Mais qu'est-ce qui se cache derrière ce nom, Arduino? D'une part, il s'agit d'une carte à micro contrôleurs, d'autre part il s'agit d'un environnement de développement et finalement il s'agit aussi d'une librairie pour micro contrôleurs, une sorte de langage. Voilà la photo d'une carte Arduino. C'est la plus connue, c'est l'Arduino UNO. On y trouve bien évidemment un micro contrôleur, en l'occurence un, AVR, du fabricant Atmel, l'ATmega328. On y trouve un connecteur normalisé avec deux rangées de connecteurs, ici et là . À noter que cette disposition des broches, qui permet donc d'accéder aux broches du micro contrôleur, est devenue un standard de fait, utilisé par beaucoup d'autres cartes. On y trouve également une liaison série, qui va permettre de se connecter à un PC, via un circuit d'interface qui se trouve ici, donc communication entre le PC et le micro contrôleur. Il y a également un connecteur d'alimentation qui permet d'avoir une alimentation externe, avec un régulateur qui permet d'avoir une tension stabilisée, sur la carte et sur le microcontrôleur. Il s'agit de matériel libre, c'est-à -dire que les plans sont publics, et par conséquent beaucoup de fabricants produisent des cartes de ce type-là , à des prix défiant toute concurrence. On trouve également de nombreux, shields, c'est-à -dire des cartes filles qui vont se poser par-dessus l'Arduino, et qu'on pourra empiler pour obtenir une fonctionnalité souhaitée. La deuxième signification du mot, Arduino, c'est le logiciel, Arduino, dont voilà une copie d'écran. Il s'agit avant tout d'un éditeur mais il y a aussi la fonction de la compilation, cachée derrière cette touche, et la fonction d'envoi du programme à l'Arduino, la fonction, Upload. Il s'agit d'un programme écrit en Java. Il utilise le compilateur libre du GCC. Il tourne sur tous les systèmes d'exploitation disponibles sur les PC, et il s'agit d'un logiciel libre, open source. Il y a également des versions pour d'autres micro contrôleurs, par exemple, le programme Energia qui est similaire au programme Arduino, mais qui s'adapte au processeur MSP430 de Texas Instrument. Parfois, on entend dire qu'un programme a été écrit en Arduino. Alors il ne s'agit pas, à proprement parler, d'un langage de programmation, mais plus exactement de librairie. La librairie Arduino est un ensemble de procédures qui ont été écrites en C, ou plus exactement, en C++. Elles s'inspirent fortement de l'environnement qui s'appelle, Wiring, qui a été développé un petit peu avant la sortie de l'Arduino. Le but de ces librairies, c'est de cacher la complexité du micro contrôleur et rendre facile son usage. Cela permet aussi d'apporter une certaine compatibilité entre différents micro contrôleurs, puisqu'il existe des versions d'Arduino pour plusieurs micro contrôleurs qui utilisent, évidemment, les mêmes procédures, la même terminologie. Nous allons voir maintenant la structure générale d'un programme Arduino, les entrées-sorties et la gestion du temps. Pour écrire un programme en Arduino, il n'y a pas besoin de procédure, main. Il faut simplement écrire deux procédures qui s'appellent, setup et loop. Et on comprend que ces deux procédures s'exécutent, l'une, setup, au début du programme, l'autre, loop, en permanence à la suite. Voilà donc un programme Arduino correct, mais qui ne fait rien, avec une procédure, setup, qui est vide et une procédure, loop, qui est vide. On pourrait donc imaginer que l'organigramme d'un programme Arduino se présente de cette manière, après le, Reset, on exécute, setup, puis on exécute, loop, en permanence. On tourne dans cette boucle. Pour être plus précis, les instructions vont être ajoutées par l'environnement Arduino, avant, setup et avant, loop. Et ce sont ces procédures qui vont par exemple permettre d'utiliser des procédures de gestion du temps de l'Arduino que nous verrons tout à l'heure. L'utilisation des entrées et sorties se fait par l'intermédiaire de trois procédures, pinMode, digitalWrite, et, digitalRead ; pinMode, permet de préciser l'usage, le mode d'utilisation d'une broche, par exemple une entrée ou une sortie ; digitalWrite, permet d'écrire une valeur, un zéro ou un, 1, dans une pin donnée ; digitalRead, qui agit sur une broche particulière va nous rendre une valeur qui sera égale à zéro ou à , 1. À noter que pin désigne un numéro de broche. Ces numéros ont été choisis un peu arbitrairement en fonction des connecteurs de la carte Arduino. Ce sont des numéros, 2, 3, 4, 5. Sur d'autres environnements comme le MSP430, on utilise généralement des numéros symboliques avec les numéros des ports. Voici un exemple qui utilise ces trois procédures. Dans le, setup, nous allons donner le mode d'une broche qui sera en sortie, d'une autre qui sera en entrée. On aura une diode lumineuse, ici, et un bouton poussoir, ici. Et dans la procédure, loop, on va simplement lire le bouton poussoir, puis écrire la valeur lue, sur la diode lumineuse. On aura ainsi le bouton poussoir qui fera changer d'état la diode lumineuse. Pour pouvoir programmer de petites enseignes à LED, il nous manque encore la gestion du temps. La simple procédure, delay, qui permet d'attendre un certain nombre de millisecondes va nous suffire. Voilà un programme qui est le classique en Arduino, le Blink, c'est-à -dire faire clignoter une LED. Le mode de la broche pour la LED c'est, sortie, et en permanence, on va écrire une valeur sur la LED, attendre une demi-seconde, écrire une autre valeur sur la LED, attendre une demi-seconde. Le tout va donc prendre une seconde, on aura un clignotement à un hertz, qui produira ce type de signaux. Nous avons tout ce qu'il nous faut pour programmer des animations sur de petites enseignes à LED. Choisir le mode de nos broches, en particulier les sorties pour les LED, écrire des valeurs et attendre un certain temps. Nous avons donc vu les trois significations du mot, Arduino, d'une part une carte à microcontrôleur, d'autre part un environnement de programmation pour ces cartes sur PC, et finalement la librairie Arduino qui nous permet, grâce à , setup, et, loop, pour les structures de contrôle d'écrire des programmes utilisant la gestion des entrées-sorties, digitalRead, digitalWrite et pinMode, et la gestion du temps avec les, delay. Nous pourrons ainsi écrire de petits programmes pour piloter des enseignes à LED.