Arduino
Maîtrisez sa programmation et ses cartes d'interface (shields)
Christian Tavernier
Dunod
Avant-proposXI
1 ¤ Qu'est-ce que l'Arduino ?1
1.1 Qu'est-ce qu'un microcontrôleur ?
1
1.1.1 L'alimentation2
1.1.2 L'horloge2
1.1.3 Le circuit de reset3
1.1.4 La programmation3
1.2 Les différentes versions d'Arduino
4
1.3 L'Arduino Uno
5
1.3.1 Dimensions et organisation5
1.3.2 Alimentation6
1.3.3 Horloge6
1.3.4 Reset6
1.3.5 Les mémoires7
1.3.6 Les entrées/sorties8
1.3.7 Différentes entre Arduino Uno Révision 1, 2 et 310
1.3.8 Schémas des Arduino Uno10
1.4 L'Arduino Mega 2560
11
1.4.1 Les mémoires12
1.4.2 Les entrées/sorties12
1.4.3 Schéma de l'Arduino 256013
1.5 Langage machine et langage évolué
14
1.5.1 À l'origine : le langage machine14
1.5.2 Les langages évolués15
1.5.3 L'environnement de développement de l'Arduino16
1.5.4 Le langage évolué de l'Arduino18
1.6 L'environnement de développement
18
1.6.1 Installation de l'environnement de développement19
1.6.2 Première configuration de l'environnement de développement20
1.6.3 Utilisation de l'environnement de développement21
1.6.4 Un premier programme juste pour « le fun »23
2 ¤ Environnement de développement et langage de programmation25
2.1 Organisation générale d'un programme
26
2.1.1 Instructions et commentaires26
2.1.2 Inclusions et définitions27
2.1.3 Structure d'un programme28
2.2 Données, variables et constantes
29
2.2.1 Les données numériques30
2.2.2 Les données logiques et diverses31
2.2.3 Les tableaux ou données indexées32
2.2.4 Les données caractères et chaînes de caractères32
2.2.5 Les conversions de types35
2.2.6 Visibilité des variables35
2.2.7 Gestion de la taille des variables37
2.2.8 Constantes particulières37
2.3 Fonctions arithmétiques et mathématiques
39
2.3.1 Opérateurs arithmétiques39
2.3.2 Opérateurs arithmétiques composés40
2.3.3 Fonctions mathématiques41
2.3.4 Fonctions trigonométriques42
2.4 Opérateurs de comparaison et opérateurs logiques
42
2.4.1 Opérateurs de comparaison43
2.4.2 Opérateurs logiques booléens43
2.4.3 Opérateurs logiques au niveau bit44
2.5 Les structures de contrôle
46
2.5.1 Les prises de décision46
2.5.2 Les boucles50
2.5.3 Les sauts51
2.6 Gestion du temps et des entrées/sorties
53
2.6.1 Gestion du temps53
2.6.2 Entrées/sorties numériques55
2.6.3 Entrées analogiques57
2.6.4 Sorties analogiques58
2.7 Entrées/sorties particulières
60
2.8 Fonctions diverses
62
2.8.1 Génération de nombres aléatoires62
2.8.2 Manipulation de bits63
2.8.3 Gestion des interruptions65
2.9 Gestion du port série
67
3 ¤ Les cartes d'interface ou shields de base71
3.1 Les shields prototypes
71
3.1.1 Le minimum vital72
3.1.2 Les éléments optionnels73
3.1.3 Bonnes et mauvaises cartes prototypes73
3.1.4 Un shield qui n'en est pas un76
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
4 ¤ Entrée/sorties numériques parallèles : poussoirs, claviers, LED, relais et afficheurs85
4.1 Les entrées numériques parallèles
86
4.1.1 Poussoirs, commutateurs, capteurs de type tout ou rien86
4.1.2 Comment vaincre les rebondissements ?88
4.1.3 Claviers en matrices90
4.1.4 Plusieurs touches avec une seule entrée94
4.1.5 Entrées haute tension et opto-isolées97
4.2 Les sorties numériques parallèles
98
4.2.1 Commandes de LED et de relais99
4.2.2 Commande directe de charges alimentées en continu102
4.2.3 Commande directe de charges reliées au secteur103
4.2.4 Commande directe d'afficheurs à LED104
4.2.5 Commande directe d'afficheurs à LED multiplexés106
4.2.6 Commande d'afficheurs à LED avec des circuits spécialisés109
4.2.7 Utilisation d'afficheurs à cristaux liquides (LCD)109
5 ¤ Entrées/sorties analogiques : capteurs, potentiomètres, gradateurs et moteurs117
5.1 Les entrées analogiques
117
5.1.1 Utilisation de capteurs analogiques résistifs118
5.1.2 Où il est question d'hystérésis120
5.1.3 Utilisation de capteurs délivrant une tension analogique121
5.1.4 Utilisation de capteurs délivrant « n'importe quoi »124
5.2 Les sorties analogiques PWM
126
5.2.1 Gradateur de tension ou de puissance PWM126
5.2.2 Tension continue à partir d'un signal PWM129
5.3 La commande des moteurs
130
5.3.1 Les servos de radiocommande130
5.3.2 Les moteurs pas à pas137
5.3.3 Les moteurs à courant continu142
6 ¤ Les interfaces séries synchrones et asynchrones, I2C, SPI, bus « un fil »147
6.1 Les liaisons séries asynchrones
147
6.1.1 Interface matérielle ou logicielle147
6.1.2 L'interface RS 232150
6.1.3 Des signaux de contrôle parfois inutiles153
6.2 Les liaisons séries synchrones
154
6.2.1 Le registre à décalage154
6.2.2 Commande de LED ou d'afficheurs avec un registre à décalage156
6.3 Le bus I2C
158
6.3.1 Généralités159
6.3.2 Protocole du bus I2C159
6.3.3 La bibliothèque Wire de l'Arduino162
6.3.4 Exemple d'utilisation du bus I2C165
6.4 L'interface ou bus SPI
170
6.4.1 Principe d'une liaison de type SPI170
6.4.2 La bibliothèque SPI de l'Arduino172
6.4.3 Exemple d'utilisation d'une liaison SPI173
6.5 Le bus « un fil » de Dallas (Maxim)
177
6.5.1 Principe du bus un fil177
6.5.2 La bibliothèque OneWire de Jim Studt179
6.5.3 Exemple d'utilisation du bus un fil182
7 ¤ Pour aller plus loin185
7.1 Les shields évolués
185
7.1.1 Programmation des shields évolués186
7.1.2 Reliez votre Arduino à Internet186
7.2 Les autres Arduino originaux
192
7.2.1 L'Arduino Mini192
7.2.2 L'Arduino Nano194
7.2.3 L'Arduino Fio195
7.2.4 L'Arduino Pro196
7.2.5 L'Arduino Pro Mini198
7.2.6 L'Arduino LilyPad199
7.3 Les « Arduino like »
200
7.3.1 Le Eleven, anciennement TwentyTen de Freetronics201
7.3.2 Le Freeduino202
7.3.3 Le Boarduino203
7.4 Les « gros » Arduino
204
7.4.1 L'Arduino Leonardo204
7.4.2 Les Arduino Due, Yun et Galileo206
Webographie207
Index209