I.
Arduino
I.1. Introduction
Arduino est une plate-forme électronique open source basée sur du matériel et des logiciels
faciles à utiliser. Les cartes Arduino sont capables de lire les entrées - la lumière sur un
capteur, un doigt sur un bouton ou un message Twitter - et de les transformer en une sortie -
en activant un moteur, en allumant une LED, en publiant quelque chose en ligne. Vous
pouvez dire à votre carte quoi faire en envoyant un ensemble d'instructions au
microcontrôleur sur la carte. Pour ce faire, vous utilisez le langage de programmation
Arduino (basé sur Wiring ) et le logiciel Arduino (IDE) , basé sur Processing. [7]
I.2. Les différentes cartes Arduino
I.3. Le logiciel Arduino IDE
I.3.1. L’interface du logiciel
Le cadre numéro 1 : ce sont les options de configuration du logiciel
Le cadre numéro 2 : il contient les boutons qui vont servir lors de la programmation
des cartes
Le cadre numéro 3 : ce bloc va contenir le programme à créer
Le cadre numéro 4 : c’est le débogueur, il affiche les erreurs que contiennent le
programme. [9]
I.3.2. Approche et utilisation du logiciel
Le menu fichier
C’est principalement ce menu qui est le plus utilisé lorsqu’on programme une carte
Arduino. Il dispose d’un certain nombre de choses très utiles.
Nouveau : permet de créer un nouveau fichier
Ouvrir : permet d’ouvrir un fichier existant
Carnet de croquis : ce menu regroupe tous les fichiers enregistrés dans le dossier par
défaut du logiciel
Exemples : toute une liste se déroule pour afficher les noms d’exemples de
programmes existants
Fermer : permet de fermer un fichier ouvert
Enregistrer : permet d’enregistrer le fichier en cours
Enregistrer sous : demande où enregistrer le fichier en cours
Téléverser : permet d’envoyer le programme sur la carte Arduino
Téléverser avec un programmateur : même chose que ci-dessus, mais avec
l’utilisation d’un programmateur
Mise en page : permet de faire la mise en page de l’interface de programmation
Imprimer : permet d’enregistrer le fichier en format PDF
Préférence : permet de régler quelques paramètres du logiciel
Quitter : permet de fermer tous les fichiers ouverts. [9]
Les boutons
Bouton 1 : ce bouton permet de vérifier le programme, il actionne un module qui
cherche les erreurs dans le programme
Bouton 2 : charge (téléverse) le programme dans la carte Arduino
Bouton 3 : crée un nouveau fichier
Bouton 4 : ouvre un fichier
Bouton 5 : enregistre le fichier
Bouton 6 : ouvre le moniteur série. [9]
I.4. Programmation des cartes Arduino
I.4.1. Langage de programmation
Un langage de programmation est un langage permettant à un être humain d’écrire un
ensemble d’instructions (code source) qui seront directement converties en langage
machine grâce à un compilateur (c’est la compilation). L’exécution d’un programme
Arduino s’effectue de manière séquentielle, c’est-à-dire que les instructions sont exécutées
les unes à la suite des autres. [10]
I.4.2. Structure d’un programme Arduino
Un programme ou sketch Arduino comporte trois parties :
1. La partie déclaration des variables
2. La partie initialisation et configuration des entrées/sorties : la fonction setup
3. La partie principale qui s’exécute en boucle : la fonction loup [10]
I.4.3. Coloration syntaxique
Lorsqu’un code est écrit dans l'interface de programmation, certains mots apparaissent en
différentes couleurs qui clarifient le statut des différents éléments.
En orange, apparaissent les mots-clés reconnus par le langage Arduino comme
des fonctions existantes. Lorsqu'on sélectionne un mot coloré en orange et qu'on effectue un
clic avec le bouton droit de la souris, l'on a la possibilité de choisir « Find in reference » :
cette commande ouvre directement la documentation de la fonction sélectionnée.
En bleu, apparaissent les mots-clés reconnus par le langage Arduino comme des constantes.
En gris, apparaissent les commentaires qui ne seront pas exécutés dans le programme. Il est
utile de bien commenter son code pour s'y retrouver facilement ou pour le transmettre à
d'autres personnes. L'on peut déclarer un commentaire de deux manières différentes :
Dans une ligne de code, tout ce qui se trouve après « // » sera un commentaire ;
L’on peut encadrer des commentaires sur plusieurs lignes entre « /* » et « */ ».
I.4.4. La syntaxe du langage Arduino
La ponctuation
Le code est structuré par une ponctuation stricte : [10]
Toute ligne de code se termine par un point-virgule « ; » ;
Le contenu d'une fonction est délimité par des accolades « { » et « } » ;
Les paramètres d'une fonction sont contenus par des parenthèses « ( » et « ) ».
Les variables [10]
Une variable est un espace réservé dans la mémoire vive (RAM) du microcontrôleur. Elle est
caractérisée par un nom qui permet d'y accéder facilement.
Il existe différents types de variables identifiés par un mot-clé dont les principaux sont :
Nombres entiers (int) ;
Nombres à virgule flottante (float) ;
Texte (String) ;
Valeurs logiques (boolean).
Dans un sketch Arduino, il est nécessaire de déclarer les variables pour leur réserver un
espace mémoire adéquat. On déclare une variable en spécifiant son type, son nom, puis en lui
assignant une valeur initiale (optionnel).
Exemple :
Les structures de contrôle [11]
Les structures de contrôle sont des blocs d'instructions qui s'exécutent en fonction du respect
d'un certain nombre de conditions.
if
Sa syntaxe est la suivante :
Si plusieurs instructions doivent être exécutées, elles doivent être réunies dans un bloc
encadré par une paire d’accolades.
Si la condition formulée est évaluée comme vraie, alors l’instruction ou les instructions
suivantes sont exécutées.
if-else
L’instruction if-else est une extension de l’instruction if. Si la condition formulée est évaluée
comme fausse, alors l’option est choisie.
switch-case
La structure switch-case sert principalement quand une variable entière est susceptible de
prendre un certain nombre de valeurs connues a priori. Une instruction if pourrait suffire mais
la variante switch-case est considérée ici comme plus élégante.
Les nombres suivis d’un deux-points sont comparés à la valeur de la variante et, lorsqu’il y a
égalité, les instructions qui suivent sont exécutées. L’instruction break entraîne une
interruption dans l’exécution de la structure et donc la sortie de cette structure. La ligne
default est optionnelle et finit par être atteinte quand aucune des lignes précédentes n’est
vérifiée. Elle est en tout point comparable à l’alternative else dans une construction if-else.
Les boucles [11]
Les boucles servent en programmation à exécuter en permanence certaines instructions. La
fonction loop en est un exemple. Il est évidemment possible de programmer ses propres
boucles.
for
La boucle for est toujours utilisée quand on sait, au moment d’entrer dans la boucle, combien
de fois elle doit s’exécuter.
Les points indiqués dans l’en-tête de la boucle ont la signification suivante :
Initialisation : définition de la valeur initiale pour la variable de contrôle de la
boucle ;
Condition : nombre d’itérations (nombre de répétitions) ;
Incrémentation : adaptation des variables indiqués dans l’initialisation.
while
Contrairement à la boucle for, seule une condition est formulée dans l’en-tête de la boucle
while. Cela implique, par exemple, que la valeur de la variante figurant dans la condition doit
être modifiée dans le corps de la boucle, faute de quoi vous aurez une boucle sans fin.
Ce type de boucle est utilisé principalement quand on ne sait pas exactement au début de la
boucle combien de fois elle doit s’exécuter.
Break
Les boucles for et while, qui s’exécutent tant que la condition formulée le permet, disposent
également de ce qu’on peut appeler une « issue de secours ». L’instruction permet en effet de
quitter prématurément une boucle, le sketch reprenant alors aussitôt après celle-ci.
Les constantes [11]
Les constantes sont des expressions prédéfinies dans le langage Arduino. Elles sont utilisées
pour rendre les programmes plus faciles à lire. On distingue :
INPUT
Cette constante est utilisée pour programmer les broches numériques quand il s’agit d’établir
le sens de circulation des données. Si une broche numérique doit servir d’entrée, cette
constante est transmise comme deuxième argument à l’instruction pinMode. La ligne de
code suivante configure la broche 13 comme entrée :
OUTPUT
La constante OUTPUT sert également pour programmer les broches numériques quand il
s’agit de définir une broche numérique comme sortie. La ligne suivante de code configure la
broche 13 comme sortie :
HIGH
La constante HIGH est utilisée pour mettre une sortie numérique au niveau HIGH. La ligne
d’instruction suivante met la broche 8 au niveau HIGH :
LOW
Cette constante est employée pour mettre une sortie numérique au niveau LOW. La ligne
d’instruction suivante met la broche 8 au niveau LOW :
true
La constante true sert par exemple dans des conditions gouvernant des structures de
contrôle :
Si la variable booléenne a prend la valeur true, l’instruction qui suit l’instruction if est
exécutée.
false
Cette constante est également utilisée dans des conditions gouvernant des structures de
contrôle :
Si la variable booléenne a prend la valeur false, l’instruction qui suit l’instruction if est
exécutée.
Les fonctions [11]
1) Fonctions concernant les broches numériques
PinMode
Avec l’instruction PinMode, on peut programmer une broche numérique pour qu’elle serve
soit d’entrée soit de sortie.
digitalWrite
L’instruction digitalWrite permet d’une part d’influer sur le niveau de sortie d’une broche
numérique programmée comme sortie avec OUTPUT. Les constantes HIGH et LOW sont
utilisées. Elle active d’autre part la résistance pull-up interne sur une broche numérique
programmée comme entrée avec INPUT.
digitalRead
L’instruction digitalRead permet de connaître l’état (HIGH ou LOW) d’une broche
numérique. La ligne suivante lit la valeur de la broche appelée inputPin et sauvegarde le
résultat dans la variable digValue :
2) Fonctions concernant les broches analogiques
analogRead
L’instruction analogRead permet d’interroger une entrée analogique, une valeur comprise
entre 0 et 1023 est alors délivrée en retour. Ce domaine de valeurs est basé sur la résolution
de 10 bits du convertisseur analogique/numérique.
La ligne suivante lit la valeur analogique de la broche appelée inputPin et la sauvegarde dans
la variable anValue :
analogWrite
L’instruction analogWrite permet d’agir sur une sortie numérique en utilisant la MLI
(modulation de largeur d’impulsions).
3) Fonctions concernant la durée
Certaines fonctions comportent un composant temporel.
delay
L’instruction delay sert à interrompre du sketch pendant le temps indiqué, la valeur transmise
étant interprétée comme des millisecondes. La ligne suivante provoque une attente de trois
secondes :
delayMicroseconds
Si l’instruction delay est trop imprécise du fait que la valeur est interprétée comme une
indication en millisecondes, l’instruction delayMicroseconds peut être utilisée. L’exécution
du sketch est alors interrompue pendant le temps indiqué, la valeur étant interprété comme
des microsecondes. La ligne suivante provoque une attente de cent microsecondes :
millis
L’instruction millis renvoie une valeur indiquant, en millisecondes, le temps écoulé depuis le
début du sketch.
4) Directives de prétraitement
Les directives de prétraitement obligent le compilateur à se comporter d’une manière
particulière.
#include
La directive include ordonne au compilateur d’intégrer la bibliothèque indiquée dans le
sketch en cours. S’agissant d’une directive, la ligne ne se termine pas par un point-virgule.
Exemple :
#define
La directive define permet de donner un nom à des constantes. Le compilateur remplace le
nom par la définition indiquée partout dans le sketch lors de la compilation. S’agissant d’une
directive, la ligne ne se termine pas par un point-virgule.
Exemple :
II. Généralité sur les composants Arduino
III.
III.1. Utilisation de la LED avec Arduino
III.1.1. Faire clignoter une LED avec Arduino
Matériels
o Une carte Arduino ;
o Une breadboard ;
o Une LED ;
o Une résistance de 220 Ω ;
o Des fils de connexion.
Montage
Code avec « delay » Code sans « delay »
III.1.2. Faire clignoter deux LED avec Arduino
Matériels
o Une carte Arduino ;
o Une breadboard ;
o Deux (2) LED ;
o Deux (2) résistances de 220 Ω ;
o Des fils de connexion.
Montage
Code source
III.1.3. Contrôle d’une LED avec un bouton-poussoir
Matériels
o Une carte Arduino ;
o Une breadboard ;
o Une LED ;
o Un bouton-poussoir ;
o Des fils de connexion.
Montage
Code source
III.1.4. Contrôle d’une LED avec deux (2) boutons
Matériels
o Une carte Arduino ;
o Une breadboard ;
o Une LED ;
o Une résistance de 220 Ω ;
o Deux (2) bouton-poussoir ;
o Des fils de connexion.
Montage
Code source
III.1.5. Allumer/Eteindre une LED progressivement
Matériels
o Une carte Arduino ;
o Une breadboard ;
o Une LED ;
o Une résistance de 220 Ω ;
o Des fils de connexion.
Montage
Code source Code avec la boucle « for »
III.1.6. Allumer/Eteindre deux (2) LED progressivement
Matériels
o Une carte Arduino ;
o Une breadboard ;
o Deux (2) LED ;
o Deux (2) résistances de 220 Ω ;
o Des fils de connexion.
Montage
Code source
III.1.7. Allumer/Eteindre de LED à la suite
Matériels
o Une carte Arduino ;
o LEDS et résistances de 220Ω ;
o Une breadboard ;
o Des fils de connexion.
Montage
Code source
III.1.8. Allumer/Eteindre une LED avec Arduino à partir du clavier d’un ordinateur
Matériels
o Une carte Arduino ;
o Une LED ;
o Une résistance de 220 Ω ;
o Une breadboard ;
o Des fils de connexion.
Montage
Code source
III.2. Branchement et utilisation d’un buzzer avec Arduino
Matériels
o