Feuille Tage
Feuille Tage
Feuille Tage
Raspberry Pi
Prise en main et premières réalisations
Christian Tavernier
Dunod, 2013
Arduino
Maîtrisez sa programmation
et ses cartes d’interface (shields)
2e édition
Avant-propos XI
V
2 • Environnement de développement
et langage de programmation 25
2.1 Organisation générale d’un programme 26
2.1.1 Instructions et commentaires 26
2.1.2 Inclusions et définitions 27
2.1.3 Structure d’un programme 28
2.2 Données, variables et constantes 29
2.2.1 Les données numériques 30
2.2.2 Les données logiques et diverses 31
2.2.3 Les tableaux ou données indexées 32
2.2.4 Les données caractères et chaînes de caractères 32
2.2.5 Les conversions de types 35
2.2.6 Visibilité des variables 35
2.2.7 Gestion de la taille des variables 37
2.2.8 Constantes particulières 37
2.3 Fonctions arithmétiques et mathématiques 39
2.3.1 Opérateurs arithmétiques 39
2.3.2 Opérateurs arithmétiques composés 40
2.3.3 Fonctions mathématiques 41
2.3.4 Fonctions trigonométriques 42
2.4 Opérateurs de comparaison et opérateurs logiques 42
2.4.1 Opérateurs de comparaison 43
2.4.2 Opérateurs logiques booléens 43
2.4.3 Opérateurs logiques au niveau bit 44
2.5 Les structures de contrôle 46
2.5.1 Les prises de décision 46
2.5.2 Les boucles 50
2.5.3 Les sauts 51
2.6 Gestion du temps et des entrées/sorties 53
2.6.1 Gestion du temps 53
2.6.2 Entrées/sorties numériques 55
2.6.3 Entrées analogiques 57
2.6.4 Sorties analogiques 58
2.7 Entrées/sorties particulières 60
2.8 Fonctions diverses 62
2.8.1 Génération de nombres aléatoires 62
VI
3.1.3 Bonnes et mauvaises cartes prototypes 73
3.1.4 Un shield qui n’en est pas un 76
3.2 Un shield idéal pour la formation 77
3.3 Un shield vide mais fort utile 79
3.4 Un shield pour y voir clair 81
VII
VIII
Webographie 207
Index 209
© Dunod – La photocopie non autorisée est un délit.
IX
L’Arduino, ou plutôt les Arduino devrions-nous écrire car ils ont fait des petits,
connaissent aujourd’hui un succès planétaire, pourtant, il ne s’agit au départ que
d’une simple carte électronique de petit format supportant un microcontrôleur,
entouré du minimum de composants nécessaires à son fonctionnement de base.
Rien de très original jusque-là nous direz-vous, et surtout rien qui puisse expliquer
ce succès.
En fait, cette carte supporte également, sur sa périphérie, une rangée de connecteurs
dans lesquels peuvent venir s’enficher directement des cartes d’interface, appelées
les « shields ». Ces cartes d’interface sont aujourd’hui très nombreuses et couvrent
quasiment tous les besoins des applications courantes.
Mais ce n’est pas tout. L’Arduino est également équipé d’un connecteur USB
permettant de le raccorder à un micro-ordinateur, PC ou Mac peu importe, utilisé
pour écrire le programme destiné à le piloter, mais également pour programmer le
microcontrôleur qui équipe l’Arduino sans aucune intervention matérielle de votre
part.
Cerise sur le gâteau, le projet Arduino dans son ensemble, c’est-à-dire les cartes
mais aussi les logiciels associés, sont « open source » c’est-à-dire sont publics, libres
de droits et donc utilisables par tous sans devoir verser de quelconques royalties ou
droits d’auteur.
En d’autres termes, l’Arduino permet à tout un chacun de réaliser à moindre coût
des applications à base de microcontrôleur quasiment sans nécessiter de connais-
sances en électronique, sans avoir besoin de sortir le fer à souder et sans devoir
investir dans des outillages spécialisés tels qu’outils de développement ou program-
mateurs par exemple.
© Dunod – La photocopie non autorisée est un délit.
C’est en grande partie à cette conjonction de facteurs que l’Arduino doit son succès,
et nous allons voir, dans la suite de cet ouvrage, qu’il n’est pas usurpé.
À partir du chapitre 4, et jusqu’à la fin de cet ouvrage, vous allez pouvoir découvrir
un certain nombre de schémas d’applications ou d’interfaces mettant en œuvre
l’Arduino. Compte tenu de la relative universalité des entrées/sorties de ce dernier,
nous avons adopté, les conventions suivantes.
Si, sur un schéma, ne figure aucune indication de nom ou de numéro de ligne
d
’entrée/sortie, cela signifie que n’importe quelle entrée/sortie numérique de
XI
l’Arduino peut être utilisée, sans restriction. Sur l’Arduino Uno, cela signifie
donc que l’on peut utiliser les entrées/sorties 2 à 13 incluses et sur l’Arduino Mega
2560 que l’on peut utiliser les entrées/sorties 2 à 53 incluses.
Si un numéro de ligne est indiqué, cela signifie :
– soit que le choix de la ligne est imposé parce qu’elle supporte une interface spéci-
fique (Rx, Tx, SDA, SCL, /SS, MISO, MOSI, SCK, PWM) mais cela est alors
clairement indiqué dans le texte associé ;
– soit que c’est cette ligne qui a été utilisée dans le programme associé au schéma.
Lorsque l’on doit utiliser une entrée analogique, celle-ci est toujours explicitement
désignée sur les schémas afin que vous ne puissiez pas la confondre avec une entrée/
sortie numérique, sous la forme AX où X est le numéro de l’entrée choisie. X peut
varier de 0 à 5 pour l’Arduino Uno et de 0 à 15 pour l’Arduino Mega 2560.
Les entrées analogiques sont toutes échangeables entre elles sans restriction. Ainsi,
un schéma utilisant par exemple A0, fonctionnera tout aussi bien si vous utilisez
A1. Il faudra juste éventuellement penser à modifier le programme associé en
conséquence.
■■ Compléments en ligne
Ce répertoire contient les fiches techniques au format pdf de tous les circuits inté-
grés et composants particuliers utilisés sur les schémas présentés dans cet ouvrage.
Vous pouvez vous y reporter pour connaître précisément leurs caractéristiques
électriques et les limites à ne pas dépasser, ou bien encore pour découvrir leurs
registres internes et la signification de leurs contenus, notamment pour ce qui est
des circuits disposant d’une interface SPI, I2C ou bien encore bus un fil. Chaque
fichier porte le nom du composant ou de la famille de composants qu’il concerne.
□□ Répertoire schémas cartes
Ce répertoire contient les schémas de toutes les versions de cartes Arduino ainsi que
les schémas des différents shields présentés ou utilisés dans l’ouvrage. Ces schémas
sont directement issus de la documentation de leurs fabricants respectifs et sont
disponibles sous forme de fichiers au format pdf. Les noms donnés aux fichiers sont
sans ambiguïté quant aux schémas qu’ils contiennent.
□□ Répertoire bibliothèques
Par précaution, vous trouverez dans ce répertoire les bibliothèques utilisées dans
certains programmes de l’ouvrage ; bibliothèques qui sont proposées sur des sites
autres que le site officiel consacré à l’Arduino et dont la pérennité ne peut donc
être assurée.
XII
□□ Répertoire programmes
Comme son nom l’indique, ce répertoire contient les listings de tous les programmes
présentés dans l’ouvrage. Ils sont tous au format ino, prêts à être compilés, et
peuvent donc être copiés directement dans la fenêtre de l’éditeur de l’outil de
développement de l’Arduino.
Ces programmes sont directement issus du PC de l’auteur ayant servi à leur déve-
loppement et sont donc parfaitement conformes aux versions qui sont présentées
dans cet ouvrage.
Les noms de fichiers correspondent aux repères donnés aux listings dans l’ouvrage A
(L61.pde pour le listing 6.1 par exemple).
■■ Avertissement relatif aux versions d’Arduino
L’Arduino est un produit qui évolue très vite, trop même diront certains, et, même
si cet ouvrage est régulièrement mis à jour, de nouvelles versions d’Arduino auront
peut-être été commercialisées entre la dernière mise à jour de ce livre et son achat
par vos soins.
Afin que vous puissiez néanmoins utiliser avec profit nos exemples de schémas et
de programmes, nous avons donc fait le choix d’utiliser pour vous les présenter
l’Arduino Uno à partir de la Révision 3. Toutes les versions ultérieures d’Arduino
Uno sont en effet « upward compatible » de cette version, comme disent nos amis
anglo-saxons, c’est-à-dire que, même si les versions ultérieures comportent des
fonctions ou des possibilités supplémentaires, elles restent totalement compatibles
des versions précédentes.
Sachez aussi que, vu le succès rencontré par l’Arduino, d’autres versions que l’Ar-
duino « de base » ou Arduino Uno sont aujourd’hui commercialisées. On trouve
ainsi sur le marché l’Arduino Leonardo, l’Arduino Due et l’Arduino Tre ou Galileo
est même en cours de commercialisation au moment où ces lignes sont écrites.
Ces versions d’Arduino sont des évolutions du modèle de base, visant à lui offrir
plus de puissance et plus de ressources internes ou d’entrées/sorties mais tout ce
que vous aurez appris dans cet ouvrage avec l’Arduino Uno sera évidemment utili-
sable avec ces nouvelles versions.
L’outil de développement de l’Arduino est lui aussi pris de la même frénésie d’évo-
lution et son numéro de version ne cesse d’augmenter au fil du temps mais, là aussi,
les programmes développés avec les versions précédentes peuvent être exploités
sans aucun problème avec les versions actuelles.
XIII
L’avant-propos de cet ouvrage a déjà un peu levé le voile : l’Arduino est une carte de
circuit imprimé supportant un microcontrôleur et la circuiterie minimum néces-
saire pour lui permettre de fonctionner, associée à une interface USB permettant
de le programmer.
Nous allons détailler cela tout au long de ce chapitre et voir tout à la fois, ce qu’il y
a réellement sur une carte Arduino, et le matériel nécessaire au développement de
notre première application.
1
La figure 1.1 présente ainsi le contenu, très simplifié, mais largement suffisant pour
l’instant, d’un microcontrôleur. On y constate que tous les éléments contenus
dans le boîtier sont reliés entre eux par ce qui s’appelle un bus, qui est en fait
un ensemble de connexions véhiculant les adresses, les données et les signaux de
contrôle échangés entre ces différents sous-ensembles.
Pour ce qui est de ces sous-ensembles internes, leur nombre et leurs types sont
variables et dépendent du microcontrôleur choisi. L’unité centrale est évidemment
toujours présente puisque c’est elle le cerveau du microcontrôleur. La mémoire
également puisqu’elle est indispensable pour contenir le programme que va exécuter
le circuit, mais son type et sa taille varient énormément d’un circuit à un autre ;
nous en reparlerons lorsque nous évoquerons les différentes versions d’Arduino.
Pour ce qui est des sous-ensembles d’interface, leur nombre et leurs types varient
là aussi selon le microcontrôleur choisi, mais l’on rencontre quasiment toujours
aujourd’hui un ou plusieurs timers ou compteurs, des entrées/sorties parallèles, des
entrées/sorties séries et des convertisseurs analogiques/numériques et numériques/
analogiques. Si ces termes vous sont totalement ou partiellement inconnus, ne vous
inquiétez pas, nous y reviendrons dans la suite de cet ouvrage.
Compte tenu de l’intégration de tous ces éléments dans un seul et unique boîtier
de circuit intégré, il ne faut que très peu de composants électroniques externes
autour d’un microcontrôleur pour le faire fonctionner. Nous allons en dresser la
liste rapidement.
1.1.1 L’alimentation
L’alimentation est évidemment le premier élément indispensable. Tous les micro-
contrôleurs actuels fonctionnent sous une tension unique qui varie, selon les types
de circuits, de 1,8 à 6 volts environ, avec une prédilection encore aujourd’hui pour
la tension de 5 volts.
Cette tension est en effet celle qui est utilisée par tous les circuits logiques de la
famille dite TTL ; circuits qui ont été les premiers circuits logiques très largement
utilisés et qui sont encore aujourd’hui très présents dans la majorité des appareils
électroniques, même si on se dirige peu à peu vers des versions fonctionnant sous
une tension de 3,3 volts.
De ce fait, lorsque l’on parle encore aujourd’hui de circuits logiques TTL ou
compatibles TTL, cela sous-entend une alimentation sous 5 volts et, comme nous
le verrons dans la suite de cet ouvrage, cela a également des implications sur les
niveaux électriques admis en entrée et générés en sortie par ces circuits.
Quoi qu’il en soit, et quelle que soit sa valeur, la tension qui alimente notre micro-
contrôleur doit être stabilisée afin d’assurer un fonctionnement correct de celui-ci.
1.1.2 L’horloge
Le deuxième élément essentiel au fonctionnement d’un microcontrôleur est
l’horloge. Un microcontrôleur est en effet un circuit logique séquentiel, c’est-à-dire
qu’il fonctionne au rythme d’un signal rectangulaire, appelé horloge, qui cadence
générer des signaux à une fréquence stable et précise.
1.1.4 La programmation
Un microcontrôleur, nous l’avons dit, exécute un programme Ce programme est
contenu dans une de ses mémoires, qui peut être de la mémoire morte ou ROM,
© Dunod – La photocopie non autorisée est un délit.
3