978-2-86661-190-3_valens_arduino_extrait+tdm+index
TRANSCRIPT
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
1/30
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
2/30
Clemens V ALENS
(www.polyvalens.com)
Maîtrisez les microcontrôleurs
à l’aide d’Arduino
www.elektor.fr/arduino
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
http://www.polyvalens.com/http://www.elektor.fr/arduinohttp://www.polyvalens.com/http://www.elektor.fr/arduino
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
3/30
Sommaire
1. Démarrage rapide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1 Installation du logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Installation du matériel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Windows (XP ou plus récent) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Carte sans puce FTDI (Uno, Mega 2560 ou plus récente) . . . . . . . . . . 10Carte avec puce FTDI (Duemilanove, Nano, Diecimila…) . . . . . . . . . 11Comment trouver le numéro de port de la carte sous Windows . . . . . . 121.2.2 Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Carte sans puce FTDI (Uno, Mega 2560 ou plus récente) . . . . . . . . . . 13Carte avec puce FTDI (Duemilanove, Nano, Diecimila…) . . . . . . . . . 14
1.2.3 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.3 Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1 On frappe à la porte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2 Mais on va où ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
3. Connaître son adversaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
3.1 Un peu d’histoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
3.2 Ils sont mimi, mais qu’est-ce qu’il y a dedans ? . . . . . . . . . . . . . . . . . . .23.2.1 Le processeur (CPU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.2.2 L’oscillateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.2.3 Les mémoires mortes, vivantes et zombies . . . . . . . . . . . . . . . . . . . . . . 243.2.4 Les interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.2.5 Entrées-sorties (E/S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2.6 Convertisseur analogique-numérique (CAN) . . . . . . . . . . . . . . . . . . . . 263.2.7 Convertisseur numérique-analogique (CNA) . . . . . . . . . . . . . . . . . . . . 273.2.8 Modules de communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.9 Gestion de temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2.10 Autres périphériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
4/30
iv
3.3 Les outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3.1 La programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3.2 Charger le programme dans le micro . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.3 Déboguer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4. Prototypage rapide à l’italienne . . . . . . . . . . . . . . . . . . . . . . 37
4.1 Le Parrain 1, 2 et 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.2 Pâtes, fromage et sauce tomate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.3 L’ingrédient de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4 La cuisine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.4.1 Menu Fichier (File ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474.4.2 Menu Édition (Edit ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.4.3 Menu Croquis (Sketch ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.4.4 Menu Outils (Tools ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.4.5 Menu Aide ( Help ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.4.6 Les onglets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.5 Le service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.5.1 Plan de table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.5.2 Le maître d’hôtel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5. Mon premier délit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.1 La clé à molette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.2 Repérer les lieux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605.3 Préparer le coup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.4 Des types avec des problèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625.5 Les faits divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.6 Prendre « perpette » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645.7 L’incarcération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665.8 If-else ou la liberté conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665.9 La réinsertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
5/30
v
6. Les signaux numériques : tout ou rien . . . . . . . . . . . . . .71
6.1 Trois surprises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76.2 Toujours des surprises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76.3 Le clavier matriciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76.4 Charlie à la rescousse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76.5 Les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86.6 Boucles f’Or et les trois (t)ours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
6.6.1 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.6.2 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.6.3 do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.7 Plus de touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86.8 S.O.S. Fantômes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86.9 Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86.10 Mini-afficheur à LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96.11 Le défilé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96.12 Petite arnaque entre amis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96.13 De nouveaux amis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106.14 C’est nul, pas zéro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106.15 La pomme de Blanche Neige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106.16 Le trognon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116.17 Une astuce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
7. Les signaux analogiques : ni noir ni blanc . . . . . . . . .115
7.1 Le passage au numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117.1.1 Des types reconvertis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187.1.2 Le gros du budget passe dans les frais de représentation . . . . . . . . . . 1197.1.3 Un truc à savoir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1207.1.4 Les références du CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
7.2 Retour à l’analogique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
6/30
vi
7.3 Regarde, maman, sans les mains ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1247.3.1 Pilote de moteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1257.3.2 Obtenir une réponse indicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
7.3.3 Le si composé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1337.3.4 Le régulateur PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1347.3.5 Filtre numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1387.3.6 Duo de choc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1387.3.7 Le coin des matheux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1437.3.8 Avant-première . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
7.4 Récréation : le Misophone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1457.5 Un peu de C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
7.6 Les No d’Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1517.7 Regarde, maman, sans Arduino ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
8. La communication : un art et une science . . . . . . . . . 157
8.1 Visualisons nos données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1598.1.1 Raccorder un afficheur alphanumérique à cristaux liquides . . . . . . . . 159
8.2 L’action de communiquer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1628.2.1 Asynchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1628.2.2 Synchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
8.3 RS-232 ou port série ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1648.3.1 Quelques subtilités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1678.3.2 Enchaînons les caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1688.3.3 Briser les chaînes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1738.3.4 Décodeur NMEA 0183A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1758.3.5 Mutatis mutandis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
8.3.6 Faites demi-tour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808.3.7 Perluète cacahouète . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1868.4 Liaisons à deux fils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
8.4.1 I²C, TWI et Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1888.4.2 Capteur de pression atmosphérique . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
8.5 Liaisons à trois ou quatre fils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1968.5.1 Pilote amélioré pour afficheur graphique . . . . . . . . . . . . . . . . . . . . . . 1988.5.2 Capteur d’humidité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
8.6 Tous ensemble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2098.7 Quand Arduino n’est pas là . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2138.8 Les pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2148.9 Savais-tu ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
7/30
vii
9. Le temps est compté . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
9.1 Ici radio Francfort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229.1.1 DCF77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
9.2 Réaliser un collier de secondes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229.3 Décoder un chapelet de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
9.3.1 Décodeur DCF77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2309.4 millis et micros, deux petites fonctions . . . . . . . . . . . . . . . . . . . . . . . . .239.5 C’est qui, Émilie ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
9.5.1 Deux types de MLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
9.6 Le Maître du Temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239.6.1 Émetteur DCF77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2399.7 Peut mieux faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249.8 Attendre un heureux événement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
9.8.1 Trier tes télécommandes infrarouges . . . . . . . . . . . . . . . . . . . . . . . . . 2519.9 Arrêter ou continuer, break ou continue . . . . . . . . . . . . . . . . . . . . . . . .259.10 L’art de la division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
9.11 L’union structurée des types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .259.11.1 struct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2569.11.2 union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2569.11.3 typedef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
9.12 C’est une image ? Ce sont des données ? C’est Superfichier ! . . . . . . .259.12.1 Le format de fichier SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
9.13 Ce que disent les manipulateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269.13.1 Le protocole NEC-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
9.14 To goto or not to goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269.15 Jeux de trains télécommandés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
9.15.1 La composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2729.15.2 Respecter les horaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2759.15.3 Ça passe ou ça casse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
9.16 Profession : émeutier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279.17 Résumons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
9.17.1 Mode normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2849.17.2 Mode CTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2849.17.3 Mode capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
9.18 Que la force soit avec toi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
8/30
viii
10. Les interruptions : la boîte de Pandore . . . . . . . . . . . . 287
10.1 Ma première interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28810.1.1 Temporisateur 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28810.1.2 Produire un signal de 1 kHz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
10.2 Le loup déguisé en mouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29110.2.1 Les vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
10.3 Comme une lettre à la Poste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29610.4 Partir dans le décor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29710.5 On sonne à la porte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
10.5.1 Réalisons une bascule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30110.6 L’interruption de trop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30210.6.1 La pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
10.7 Mais c’est qui qui sonne à la porte ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 30410.7.1 Les interruptions multiplexées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
10.8 Vive le codeur rotatif ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30710.9 RAZ à toutes les sauces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
10.9.1 POR, BOR, BOD et RAZ de l’AVR . . . . . . . . . . . . . . . . . . . . . . . . . . 31410.10 Inversons les rôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
10.10.1 Une nuisance sonore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31510.11 La Cucaracha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
10.11.1 Le protocole 1-Wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32210.12 Feu ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
10.12.1 SMBus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Liste des programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Liste des figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Liste des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
9/30
3. Connaître son adversaire
24
3.2.2 L’oscillateurUn programme est une séquence d’instructions à exécuter l’une après l’autre(oublions ici l’exécution en parallèle). Cela implique un cadencement et c’estl’horloge du processeur qui en est chargée. Elle a besoin d’un oscillateur, qui sematérialise souvent sous forme d’un quartz et de deux petits condensateurs à proxi-mité du circuit intégré. Quand on n’attache pas d’importance à la précision del’horloge, ces trois composants peuvent être remplacés par un résonateur, voire unréseau RC. Il est aussi possible de cadencer le micro par un oscillateur externe,celui d’un autre micro par exemple.
En réalité, ces composants externes ne forment que le sommet visible de l’iceberg,l’oscillateur consiste en bien plus de transistors qu’on ne l’imagine (essaie de créerun oscillateur avec uniquement un quartz et deux condensateurs, tu verras bien quece n’est pas facile). D’ailleurs, de nombreux micros fonctionnent parfaitementsans ces composants externes puisqu’ils disposent de tout ce qu’il faut en interne,sur la puce. La fréquence n’est pas forcément précise mais une horloge embarquéepermet d’économiser de l’espace sur la platine et quelques composants ; c’est tou-
jours bon à prendre quand on produit plusieurs (centaines de) milliers d’exem-plaires d’un montage.
Pour obtenir des fréquences de l’horloge élevées, les constructeurs équipent leursmicros d’un module à boucle à phase asservie (la traduction correcte de l’anglaisPhase Locked Loop ou PLL), ainsi les micros cadencés à 60 ou 80 MHz, voireplus, sont devenus monnaie courante.
3.2.3 Les mémoires mortes, vivantes et zombiesEn règle générale, le microcontrôleur ne se contente pas d’une seule mémoire. Eneffet, il dispose d’une mémoire zombie (non volatile, mais reprogrammable, c’est
de la mémoire flash dans la majorité des cas) pour stocker le micrologiciel (le logi-ciel qui sera exécuté par le micro, les anglophones disent firmware ), d’unemémoire vive pour stocker les données et parfois aussi d’une petite mémoire nonvolatile (EEPROM) pour des données importantes et des paramètres de configura-tion. La mémoire de programme est généralement (nettement) plus grosse que lamémoire vive, c’est normal, car la plupart des programmes n’utilisent pas tant demémoire vive que ça. La conséquence de ce choix est que les applications gour-mandes en mémoire vive comme les téléphones portables ou les systèmes Linux
embarqués ne peuvent pas utiliser n’importe quel micro. Des modèles spécialiséscapables de travailler avec des mémoires externes volumineuses sont proposéspour ce genre d’applications.
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
10/30
3. Connaître son adversaire
36
Évite désormais de ranger ton environnement de travail,le désordre stimule la créativité (selon des scientifiques allemands).
Pour fêter le début de ta nouvelle vocation,offre-toi un oscilloscope (neuf ou d’occasion). Tu verras, il changera ta vie.
Croquis sur l’ordinateur (portable)
Carte Arduino
Oscilloscope
Haut-parleurTélécommande
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
11/30
4.5 Le service
55
4.5.1 Plan de table
Dans Arduino, les noms des broches ont été simplifiées, la notion traditionnelle deports d’entrées-sorties (port A, port B, etc.) a été remplacée par des numéros. Lanumérotation est simple et logique quand on sait que la première carte Arduinocomportait un ATmega8 : elle commence par 0 sur la broche 2. Comment ça, paslogique ? Pourtant ça l’est, car la broche 1 du circuit ATmega8 correspond à PC6,c.-à-d. l’entrée/sortie (E/S) numéro 6 du port C. Or, cette broche constitue aussil’entrée Reset et on a préféré la connecter à un bouton-poussoir, PC6 n’est doncplus libre 1. La deuxième broche, PD0, soit E/S numéro 0 du port D, est disponibleet la numérotation commence alors ici. Elle continue en montant et en sautant lesbroches qui ne sont pas des E/S (alimentation) ou qui ne sont pas libres pour
d’autres raisons, comme PB6 et PB7 réservées au quartz. Au final, on se retrouveavec 20 E/S numériques (de 0 à 19). Les E/S 14 à 19 sont reliées au convertisseuranalogique-numérique (CAN) du micro et il a été décidé de les regrouper sur unconnecteur à part et de les renommer « entrées analogiques » (de 0 à 5). Ducoup, une carte de type Uno offre 14 E/S numériques et 6 entrées analogiques.Les 14 E/S numériques sont câblées sur deux connecteurs nommés Digital(PWM#) sur un côté de la carte, les 6 analogiques sur un connecteur en face,nommé Analog in . Aligné avec ce connecteur, on trouve un quatrième connecteur
nommé Power qui comporte également le signal Reset .Pourquoi les connecteurs des E/S numériques portent-ils la mention PWM# ? Ehbien, les broches sur la carte marquées par un dièse (« # », parfois aussi par un tilde« ~ ») sont capables de fournir des signaux à modulation à largeur d’impulsion(MLI, PWM en anglais). Elles sont balisées car, dans Arduino, elles serventcomme sorties analogiques. Leur nombre dépend du micro, l’ATmega8 n’en aque trois (E/S 9 à 11), l’ATmega168 et l’ATmega328 en possèdent six (E/S 3, 5, 6, 9 à 11).
Pour les cartes de type Mega équipées de micros avec plus de broches quel’ATmega8/168/328, la numérotation des E/S est différente car les broches ont étéregroupées sur des connecteurs par fonction. Ainsi, une telle carte dispose deconnecteurs Power , Analog in , Digital , Communication et PWM . Le connecteur
Digital est à double rangée. Au total, une carte Mega 2560 offre 70 E/S numé-riques, découpées en 32 E/S numériques ( Digital ), 16 entrées analogiques ( Analogin), 15 sorties MLI ( PWM ) et 10 broches réservées à la Communication .
1. Cela n’est pas tout à fait correct car il est toujours possible d’utiliser ce port commeentrée numérique connectée à un bouton-poussoir en programmant le fusibleRSTDISBL, mais il y en a qui ont essayé… ils ont eu des problèmes. C’est toi qui vois.
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
12/30
5. Mon premier délit
64
Dans la fonction setup plus haut, il y avait aussi des commentaires dits de fin deligne, précédés par « // ».Tout ce qui vient après // sur la même ligne est ignoré parle compilateur. Tous les compilateurs C ne comprennent pas forcément ce type decommentaires. En effet, il s’agit d’une des rares fonctions C++ qui a été adoptéepar le C (dans le standard C99) et seuls les compilateurs conformes à ce standardsont censés accepter les commentaires de fin de ligne.
Les commentaires dans setup contiennent des caractères accentués. C’est unemaladresse à éviter parce que les compilateurs digèrent parfois mal les caractèresexotiques, même dans les commentaires (oui, en C, « é » est un caractère exo-tique). En C, utilise uniquement les caractères ASCII de base, les accents et autrescaractères spéciaux ou exotiques sont à exclure.
Fais attention quand les deux types de commentaires sont mélangés ou quand une partie de code qui contient déjà des commentaires est mise en commentaire car cela peut perturber le compilateur. Si tu vois apparaître une erreur ou un avertisse-ment qui parle de nested comments (commentaires imbriqués), vérifie bien que tun’as pas oublié un */ quelque part. Tu apprendras vite à ne pas te fier à la colorationsyntaxique de l’éditeur, un éditeur n’est pas un compilateur !
5.6 Prendre « perpette »
Maintenant que nous disposons d’une variable led et que la broche connectée à laLED est configurée en sortie, nous pouvons attaquer la fonction loop . Pour allumeret éteindre la LED, l’API d’Arduino offre la fonction digitalWrite . Elle prend deuxarguments : le numéro de la broche et la valeur HIGH (niveau logique haut) ou LOW (niveau logique bas). Si on appelle cette fonction d’abord avec la valeur
HIGH et ensuite avec la valeur LOW et si nous attendons un peu entre deux appels,la LED clignotera puisque cet enchaînement est exécuté continuellement grâce àla boucle. La fonction delay permet d’introduire des délais et donc d’attendre. Letemps d’attente est spécifié en millisecondes.
Voilà le croquis terminé :
/* * Blink 1 */
int led = 13;
void setup( void ){
pinMode(led,OUTPUT);
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
13/30
5.6 Prendre « perpette »
65
}
void loop( void ){
digitalWrite(led,HIGH); // allume la LEDdelay(500); // attends 500 msdigitalWrite(led,LOW); // eteins la LEDdelay(500); // attends 500 ms
}
Ceci est une méthode, mais pas la seule. Ce croquis permet de spécifier séparémentla durée de l’allumage et celle de l’extinction. Si c’est inutile, tu peux modifier lecroquis pour ne spécifier qu’une seule et même durée d’allumage et d’extinction,comme ceci :
/* * Blink 2 */
int led = 13;int state = HIGH;
void setup( void )
{pinMode(led,OUTPUT);
}
void loop( void ){
digitalWrite(led,state); // allume ou eteins la LEDif (state==HIGH){
state = LOW ; // inverse l’etat}else
{state = HIGH ;
}delay(500); // attends 500 ms
}
Ici, si ( if ) la variable state est égale (« == », soit deux fois « = », inégale est indiquépar « != ») à HIGH , nous lui donnerons la valeur LOW . Sinon ( else ) nous lui don-
nerons la valeur HIGH . Ce bout de code a pour but d’inverser la valeur de state àchaque tour de boucle.
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
14/30
6. Les signaux numériques : tout ou rien
74
En modifiant ainsi le croquis, deux doutes sont levés : key est maintenant claire-ment une entrée et son état au repos est HIGH . Fixer son état au repos à LOW n’estpas possible, l’AVR ne possède pas de résistance de rappel vers le 0 V, mais tu
peux toujours connecter une résistance externe au cas où tu en aurais besoin.
6.2 Toujours des surprises
Après les trois surprises du croquis décrites dans le paragraphe précédent, en voiciencore une autre : sur mon ordinateur, quand je le compile avec Arduino 1.0.1, lecroquis compilé occupe 1058 octets. Remplace maintenant les deux dernièreslignes par une seule, comme ceci :
/* * Key 3 */
int led = 13;int key = 8;
void setup( void ){
pinMode(led,OUTPUT);pinMode(key,INPUT_PULLUP);
}
void loop( void ){
digitalWrite(led,digitalRead(key));}
Regarde l’appel de digitalWrite dans la fonction loop . Le deuxième argument estl’appel d’une fonction au lieu d’un entier. Cela peut paraître étrange mais, en C, ilest tout à fait légal de passer un appel de fonction comme argument d’une autrefonction tant que le résultat de cet appel est compatible avec l’argument. En clair,puisque le résultat de digitalRead est un entier, nous pouvons l’utiliser à la placede n’importe quel autre entier, comme ici en tant que deuxième argument pourdigitalWrite .
Sur mon ordinateur, la compilation de cette version du croquis crée un exécutablede 1064 octets, soit 6 octets de plus pour exactement le même fonctionnement.C’est curieux, non ? En effet, ici nous touchons aux processus internes du compi-lateur qui ne sont pas évidents à comprendre. En expérimentant un peu avec lecode, nous pouvons déterminer avec plus de précision l’origine de cette différence
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
15/30
7.3 Regarde, maman, sans les mains !
129
Si le moteur ne tourne pas, cherche l’erreur. Les 12 V sont-ils bien présents ? Est-ce que le pilote est bien câblé ? Les transistors sont-ils connectés comme il faut ?Ne sont-ils pas inversés (les N-MOSFET bien en bas, les P-MOSFET en haut) ?
Etc.
7.3.2 Obtenir une réponse indicielleNous allons maintenant modifier et étendre notre croquis pour tester l’entrée ana-logique, comme ceci :
/* * motor test 2 */
int motor1 = 9;int motor2 = 10;int slider = A0;
void setup( void ){
Serial.begin(115200);pinMode(motor1,OUTPUT);
pinMode(motor2,OUTPUT);pinMode(slider,INPUT);digitalWrite(motor1,LOW);digitalWrite(motor2,LOW);
}
void loop( void ){
Serial.println(analogRead(slider));delay(250);
}
Le moteur reste au repos et le port série émet toutes les 250 ms la valeur mesuréesur l’entrée analogique A0 du micro. Fais varier la tension pour vérifier qu’elle estbien numérisée. Note les valeurs min. et max. au cas où la tension n’atteint pas 0 Vou 5 V, voire aucune de ces deux valeurs.
Il est temps de passer aux choses sérieuses, nous allons utiliser l’oscilloscope oule fréquencemètre. La fréquence à mesurer sera autour de 2 kHz. Dans le croquissuivant ( Motor test 3 ), mets la ligne en gras, italique et souligné en commentaireà l’aide du double //, comme ceci :
// i += 1;
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
16/30
8. La communication : un art et une science
160
compte. Si un jour tu rencontres des problèmes un peu aléatoires avec un afficheurparfaitement câblé, regarde si ralentir la communication permet d’éviter lesennuis.
Écrire un pilote pour un afficheur compatible HD44780 n’est plus nécessaire cardes milliers de programmeurs l’ont fait depuis l’introduction de cette puce.L’internet grouille littéralement de pilotes libres pour ce type de LCD, écrits danstous les langages de programmation imaginables. Arduino aussi dispose d’unebibliothèque avec toutes les fonctions nécessaires pour piloter un tel LCD, nousn’allons donc pas perdre de temps à refaire l’exercice.
Note qu’il s’agit d’une bibliothèque pour Arduino et pas d’une partie de l’APIArduino, l’accès aux fonctions de la bibliothèque exige alors un (tout petit) peu detravail supplémentaire. Ouvre un nouveau croquis, clique surCroquis (Sketch )puis sur Importer bibliothèque… ( Import Library… ) et choisis dans la liste quis’affiche la bibliothèque LiquidCrystal . Le résultat de cette opération n’est passpectaculaire, juste une ligne de code insérée en haut de ton croquis :#include
Figure 8-1 - Un afficheur à cristaux liquides connecté en mode 4 bits. Ce montagefonctionne pour tous les modules LCD compatibles HD44780. P1 permet de régler lecontraste, T1 pilote le rétroéclairage.
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
17/30
9.2 Réaliser un collier de secondes
227
Au lieu d’envoyer les durées des bits sur le port série, elles sont maintenant stoc-kées dans la variable dt . Si la valeur de dt est supérieure à 50 ms, mais inférieureà 150 ms, nous pouvons supposer que nous avons affaire à un niveau logique 0 etun caractère « 0 » est enregistré dans la trame bits . Si dt dépasse les 150 ms, maisreste inférieure à 250 ms, la valeur du bit reçu est de 1 et un caractère « 1 » est doncrajouté à bits . Enfin, si dt dépasse les 1 500 ms, nous pouvons supposer que nousavons détecté l’absence du bit n o 59 qui indique la fin de la trame. La trame estenvoyée sur le port série avant d’être vidée pour créer de la place pour la réceptionde la prochaine.
Grâce à cette méthode, la polarité des bits n’a aucune importance et le croquisfonctionnera avec tous les signaux, inversés ou pas. Comme tu l’as remarqué, j’aichoisi une marge de ±50 ms pour les deux durées de bit et même plus pour la finde trame. C’est peut-être trop et pour plus de certitude tu pourras diminuer lesmarges.
Les trames envoyées sur le port série ressemblent à ceci :
0010000
00101001001110000100100001001010010011100110000010010010000
01110000011110000100110001000010010011100110000010010010000
00001011011010100100101001000010010011100110000010010010000
Elles contiennent toutes 59 bits, sauf la première qui correspond à un fragment defin de trame, puisque l’algorithme n’était pas encore synchronisé avec le flux debits.
La prochaine étape est de décoder la trame. Son format est bien documenté surl’internet, voilà ce que ça donne pour la première trame de 59 bits :
Bit(s) Description Reçu(s) Décodé(s)
0 à 14 Réservé 001010010011100 -
15 Émetteur de réserve 0 0
16 Basculement été/hiver au début de laprochaine heure.
0 0
17, 18 Décalage par rapport à l’heure UTC. 10 2
19 Ajout d’une seconde intercalaire à la fin
de l’heure.
0 0
20 Début de la transmissiondes informations horaires.
1 1
Tableau 9-1 - La signification des bits dans la trame horaire DCF77.
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. ValensCopyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
18/30
10.6 L’interruption de trop
303
interruptions s’il est vraiment nécessaire que tout continue tout le temps. Parcontre, si tu fais cela, tu libères encore un autre mauvais génie de la boîte de Pan-dore des interruptions : le débordement de la pile ( stack overflow en anglais).
10.6.1 La pile
Le micro possède une mémoire spéciale, appelée la pile ( stack ), qui joue un peu lerôle de médiateur entre programme principal et fonctions ou routines d’interrup-tion. Cette mémoire est appelée pile car, en théorie, on ne peut pas écrire là où onveut, mais uniquement au début. C’est donc une sorte de pile de données ; la der-nière donnée écrite est la première qui puisse être lue. La pile est utilisée pour pas-ser les arguments aux fonctions, pour stocker les variables locales et quand lemicro doit quitter son poste pour aller exécuter une fonction ou une routine d’inter-ruption. La pile contient aussi l’adresse de l’instruction que le micro avait prévu
d’exécuter s’il n’avait pas été interrompu pour exécuter cette fonction ou routined’interruption. Le micro est un vrai Petit Poucet, il laisse derrière lui, sur la pile,une trace d’adresses qui lui permet de retrouver l’endroit où il était au moment oùil a été appelé pour faire autre chose.
Comme toutes les ressources dont dispose le micro, la pile aussi connaît deslimites. Souvent la pile mobilise une partie de la mémoire vive, laquelle n’est déjàpas très grande, aussi a-t-on tendance à dimensionner la pile au plus juste. Celaveut dire que, si le programme s’exécute normalement, la pile aura assez de place
pour stocker les arguments, les variables locales et les adresses de retour de toutesles fonctions du plus long enchaînement de fonctions possible dans le programme.Donc, si une fonction en appelle une autre qui à son tour en appelle une troisième,etc. il faut que la pile dispose d’assez de place pour empiler toutes les adresses deretour. Les arguments des fonctions et les variables locales sont également stockés
Figure 10-1 -Le programmeur optimiste.
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
19/30
Liste des programmes
Chapitre 5Blink 1 . . . . . . . . . . . . . . . . . . . . . . . . . 64Blink 2 . . . . . . . . . . . . . . . . . . . . . . . . . 65
Chapitre 6Key 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 71Key 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 73Key 3 . . . . . . . . . . . . . . . . . . . . . . . . . . 74Key matrix 1 . . . . . . . . . . . . . . . . . . . . 76Charlieplexing . . . . . . . . . . . . . . . . . . . 78Key matrix 2 . . . . . . . . . . . . . . . . . . . . 85Key matrix 3 . . . . . . . . . . . . . . . . . . . . 90LED matrix 1 . . . . . . . . . . . . . . . . . . . 92LED matrix 2 . . . . . . . . . . . . . . . . . . . 95Money game . . . . . . . . . . . . . . . . . . . 102Toggle . . . . . . . . . . . . . . . . . . . . . . . . 113
Chapitre 7voltmeter . . . . . . . . . . . . . . . . . . . . . . 117multichannel voltmeter . . . . . . . . . . . 120dimmer . . . . . . . . . . . . . . . . . . . . . . . 123motor test 1 . . . . . . . . . . . . . . . . . . . . 128motor test 2 . . . . . . . . . . . . . . . . . . . . 129motor test 3 . . . . . . . . . . . . . . . . . . . . 130not working PID controller . . . . . . . . 135PID controller . . . . . . . . . . . . . . . . . . 139misophone . . . . . . . . . . . . . . . . . . . . . 147chip thermometer . . . . . . . . . . . . . . . 152
Chapitre 8LCD . . . . . . . . . . . . . . . . . . . . . . . . . . 161La difference entre write et print . . . . 167Serial.find . . . . . . . . . . . . . . . . . . . . . 170read nmea sentence . . . . . . . . . . . . . . 170read nmea sentence 2 . . . . . . . . . . . . . 173read nmea sentence 3 . . . . . . . . . . . . . 175gps inverter . . . . . . . . . . . . . . . . . . . . 184HP03 temperature & pressure sensor 192weather3 . . . . . . . . . . . . . . . . . . . . . . 210
Chapitre 9DCF77 polling pulse measuring . . . . 224DCF77 polling pulse measuring 2 . . . 226DCF77 polling pulse measuring 3 . . . 229dcf77 transmitter . . . . . . . . . . . . . . . . 242Guess IR format . . . . . . . . . . . . . . . . . 252Export IR pulses to SVG file . . . . . . . 260Decode NEC IR RC protocol . . . . . . 264Sound detector . . . . . . . . . . . . . . . . . . 279
Chapitre 10interrupts 1 . . . . . . . . . . . . . . . . . . . . . 288interrupt 2 . . . . . . . . . . . . . . . . . . . . . 289interrupt 3 . . . . . . . . . . . . . . . . . . . . . 296interrupt 4 . . . . . . . . . . . . . . . . . . . . . 298interrupt 5 . . . . . . . . . . . . . . . . . . . . . 301interrupt 6 . . . . . . . . . . . . . . . . . . . . . 305rotary encoder . . . . . . . . . . . . . . . . . . 310buzzer 1 . . . . . . . . . . . . . . . . . . . . . . . 317boîte à musique . . . . . . . . . . . . . . . . . 319cucaracha . . . . . . . . . . . . . . . . . . . . . . 323fire detector . . . . . . . . . . . . . . . . . . . . 329
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
20/30
341
Index
!̂ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451-Wire . . . . . . . . . 28, 164, 188, 321, 3228048 . . . . . . . . . . . . . . . . . . . . . . . . . . . 218051 . . . . . . . . . . . . . . . . . . . . . . . . . . . 218052 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
A À propos d’Arduino . . . . . . . . . . . . . . . 54AC . . . . . . . . . . . . . . . . . . . . . . . . . . . 152accès direct à la mémoire . . . . . . . . . . 30accumulateur lithium polymère . . . . 320actionneur . . . . . . . . . . . . . . . . . . . . . 124ADC . . . . . . . . . . . . . . . . . . . . . . . . . 115ADCH . . . . . . . . . . . . . . . . . . . . . . . . 153ADCL . . . . . . . . . . . . . . . . . . . . . . . . 153ADCSRA . . . . . . . . . . . . . . . . . . . . . 153ADCSRB . . . . . . . . . . . . . . . . . . . . . . 153 Add Library… . . . . . . . . . . . . . . . . . . . 51ADMUX . . . . . . . . . . . . . . . . . . . . . . 153 Afficher le dossier des croquis . . . . . . 51afficheur graphique couleur . . . . . . . 198 Aide pour débuter . . . . . . . . . . . . . . . . 53
Ajouter bibliothèque… . . . . . . . . . . . . 51 Ajouter un fichier… . . . . . . . . . . . . . . . 51ALU . . . . . . . . . . . . . . . . . . . . . . . . . . 23AM . . . . . . . . . . . . . . . . . . . . . . . . . . 237amplitude modulation . . . . . . . . . . . . 237analogRead . . . . . . . . . . . . 116, 132, 147analogReference . . . . . . . . . . . . 116, 121analog-to-digital converter . . . . . . . . 115analogWrite . . . . . . . . . . . . 122, 235, 240analyse de Fourier . . . . . . . . . . . . . . . 237Andrew Tanenbaum . . . . . . . . . . . . . 157Android . . . . . . . . . . . . . . . . . . . . . . . . 39
Annuler . . . . . . . . . . . . . . . . . . . . . . . . 49antenne . . . . . . . . . . . . . . . . . . . . . . . . 238API . . . . . . . . . . . . . . . . . . . . . . . . 54, 109 Application Programming Interface . . 54 Archiver le croquis . . . . . . . . . . . . . . . 52Arduino . . . . . . . . . . . . . . . . . . . . . . . . 37arduino.cc . . . . . . . . . . . . . . . . . . . . . . 39arguments . . . . . . . . . . . . . . . . . . . . . . 58
ARM Cortex M3 . . . . . . . . . . . . . . 38, 41array . . . . . . . . . . . . . . . . . . . . . . . . . 108ASCII . . . . . . . . . . . . . . . . . 141, 167, 168asm . . . . . . . . . . . . . . . . . . . . . . . . . . . 113assembleur . . . . . . . . . . . . . . . . . . . . . . 31
en ligne . . . . . . . . . . . . . . . . . . . . . 113asymétrique . . . . . . . . . . . . . . . . . . . . 218ATmega1280 . . . . . . . . . . . . . . . . . . . . 41
ATmega168 . . . . . . . . . . . . . . . . . . . . . 41ATmega2560 . . . . . . . . . . . . . . . . . . . . 41ATmega328 . . . . . . . . . . . . . . . . . . . . . 41ATmega32U4 . . . . . . . . . . . . . . . . . . . 39ATmega8 . . . . . . . . . . . . . . . . . . . . . . . 41Atmel . . . . . . . . . . . . . . . . . . . . . 9, 22, 41atof . . . . . . . . . . . . . . . . . . . . . . . . . . . 178atoi . . . . . . . . . . . . . . . . . . . . . . . . . . . 178atol . . . . . . . . . . . . . . . . . . . . . . . . . . . 178attachInterrupt . . . . . . . . . . . . . . 297, 300 Augmenter l’indentation . . . . . . . . . . . 50Augustin d’Hippone . . . . . . . . . . . . . 221automate . . . . . . . . . . . . . . . . . . . . . . 124automate fini . . . . . . . . . . . . . . . . . . . 172automatophones . . . . . . . . . . . . . . . . . 320
avertisseur sonore à cinq tons . . . . . . 319AVR . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
21/30
Index
342
BBASIC . . . . . . . . . . . . . . . . . . . . . 31, 270BCD . . . . . . . . . . . . . . . . . . . . . . . . . . 228beginTransmission . . . . . . . . . . . . . . 189Bessel . . . . . . . . . . . . . . . . . . . . . . . . 239bibliothèque . . . . . . . . . . . . . . . . . . . . 160binary coded decimal . . . . . . . . . . . . 228biphase . . . . . . . . . . . . . . . . . . . . . . . . 249bit de parité . . . . . . . . . . . . . . . . . . . . 166bit-banging . . . . . . . . . . . . . . . . . . . . 199
bitClear . . . . . . . . . . . . . . . . . . . . . . . 275bit_is_set . . . . . . . . . . . . . . . . . . . . . . 154bitRead . . . . . . . . . . . . . . . . . . . . . . . . 94bits
d’arrêt . . . . . . . . . . . . . . . . . . . . . . 163de départ . . . . . . . . . . . . . . . . . . . . 163
bitSet . . . . . . . . . . . . . . . . . . . . . . . . . 275 Blink . . . . . . . . . . . . . . . . . . . . . . . . . . 15
BO . . . . . . . . . . . . . . . . . . . . . . . . . . . 125BOD . . . . . . . . . . . . . . . . . . . . . . . . . 314boolean . . . . . . . . . . . . . . . . . . . . . . . . 63booléen . . . . . . . . . . . . . . . . . . . . . . . . 63bootloader . . . . . . . . . . . . . . . . 33, 41, 56BOR . . . . . . . . . . . . . . . . . . . . . . . . . . 314boucle à phase asservie . . . . . . . . . . . . 24bourrage de zéros . . . . . . . . . . . . . . . 183break . . . . . . . . . . . . . . . . . . . . . . . . . 254brown out . . . . . . . . . . . . . . . . . . . . . . . 26
detector . . . . . . . . . . . . . . . . . . . . . 314reset . . . . . . . . . . . . . . . . . . . . . . . . 314
bus de communication sérielle . . . . . . 28buzzer . . . . . . . . . . . . . . . . . . . . . . . . 316
CC, langage . . . . . . . . . . . . . . . . . . . 31, 57C++ . . . . . . . . . . . . . . . . . . . . . . . . 32, 57CAN (bus) . . . . . . . . . . . . . . . . . . 28, 164CAN (convertisseur) . . . . . . . . . . 26, 115
capteurde pression . . . . . . . . . . . . . . . . . . . 189de température . . . . . . . . . . . . . . . . 152
de température sans contact . . . . . . 329capture . . . . . . . . . . . . . . . . . . . . . . . . 284caractère . . . . . . . . . . . . . . . . . . . . . . . . 62Carnet de croquis . . . . . . . . . . . . . . . . 47carte d’extension . . . . . . . . . . . . . . . . . 40case . . . . . . . . . . . . . . . . . . . . . . . . . . . 68cbi . . . . . . . . . . . . . . . . . . . . . . . . . . . 112CGPM . . . . . . . . . . . . . . . . . . . . . . . . 221
chaîne de caractères . . . . . . . . . . . . . . . 63CHANGE . . . . . . . . . . . . . . . . . . . . . . 300char . . . . . . . . . . . . . . . . . . . . . . . . . . . 62chargeur d’amorçage . . . . . . . . 33, 41, 56charlieplexing . . . . . . . . . . . . . . . . . . . 78chenillard . . . . . . . . . . . . . . . . . . . . . . . 92chien de garde . . . . . . . . . . . . . . . 30, 314Clear Timer on Compare match . . . . 284CNA (convertisseur) . . . . . . . . . . 27, 122codage
de Manchester . . . . . . . . . . . . 163, 249par modulation de position d’impulsion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
code exécutable . . . . . . . . . . . . . . . . . . 32Coller . . . . . . . . . . . . . . . . . . . . . . . . . . 50coloration syntaxique . . . . . . . . . . . . . . 64COM0A0 . . . . . . . . . . . . . . . . . . . . . . 290comma separated values . . . . . . . . . . 258commentaires . . . . . . . . . . . . . . . . . . . . 63
imbriqués . . . . . . . . . . . . . . . . . . . . . 64Commenter/Décommenter . . . . . . . . . . 50communication
asynchrone . . . . . . . . . . . . . . . . . . . 162synchrone . . . . . . . . . . . . . . . . . . . . 164
comparateur analogique . . . . . . .151, 284compilateur . . . . . . . . . . . . . . . . . . . . . 32Conférence générale des poids et mesures
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
22/30
Index
343
constrain . . . . . . . . . . . . . . . . . . . . . . 143continue . . . . . . . . . . . . . . . . . . . . . . . 254contrôle de redondance cyclique . . . . 203conversion de type de donnée . . . . . . 118convertisseur
analogique-numérique . . . . . . . 26, 115numérique-analogique . . . . . . . 27, 122
Copier en tant qu’HTML . . . . . . . . . . 50Copier pour le forum . . . . . . . . . . . . . 50Couper . . . . . . . . . . . . . . . . . . . . . . . . . 49CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . 23CR . . . . . . . . . . . . . . . . . . . . . . . . . . . 168CRC . . . . . . . . . . . . . . . . . . . . . . . . . . 203Créer une bibliothèque . . . . . . . . . . . 209croquis . . . . . . . . . . . . . . . . . . . 46, 51, 60CSV . . . . . . . . . . . . . . . . . . . . . . . . . . 258CTC . . . . . . . . . . . . . . . . . . . . . . . . . . 284cyclic redundancy check . . . . . . . . . . 203
DDAC . . . . . . . . . . . . . . . . . . . . . . . . . 122 Data Direction Register . . . . . . . . . . 110DCF77 . . . . . . . . . . . . . . . . . . . . . . . . 222DDR . . . . . . . . . . . . . . . . . . . . . . . . . 110débogueurin situ . . . . . . . . . . . . . . . . . 34débordement de la pile . . . . . . . . . . . 303
default . . . . . . . . . . . . . . . . . . . . . . . . . 68delay . . . . . . . . . . . . . . . . . . 64, 132, 234delayMicroseconds . . . . . . . . . . . . . . 234 Dépannage . . . . . . . . . . . . . . . . . . . . . 53detachInterrupt . . . . . . . . . . . . . 297, 300détecteur
d’obscurité . . . . . . . . . . . . . . . . . . . 315de son . . . . . . . . . . . . . . . . . . . . . . 278
Device Firmware Update . . . . . . . . . . 33DFU . . . . . . . . . . . . . . . . . . . . . . . . . . . 33DI . . . . . . . . . . . . . . . . . . . . . . . . . . . 196DIDR0 . . . . . . . . . . . . . . . . . . . . . . . . 153
DIDR1 . . . . . . . . . . . . . . . . . . . . . . . . 153DIDR2 . . . . . . . . . . . . . . . . . . . . . . . . 153Diecimila . . . . . . . . . . . . . . . . . . . . 10, 40différentielle . . . . . . . . . . . . . . . . . . . 135digitalRead . . . . . . . . . . . . . . . . . . . . . 71digital-to-analog converter . . . . . . . . 122digitalWrite . . . . . . . . . . . . . . . . . . 64, 71diviseur . . . . . . . . . . . . . . . . . . . 235, 241division
à virgule flottante . . . . . . . . . . . . . . 118d’entiers . . . . . . . . . . . . . . . . . . . . . 118
DMA . . . . . . . . . . . . . . . . . . . . . . . . . . 30DO . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Domenico Scarlatti . . . . . . . . . . . . . . 319double . . . . . . . . . . . . . . . . . . . . . . . . . 62do-while . . . . . . . . . . . . . . . . . . . . . 81, 82DS18B20 . . . . . . . . . . . . . . . . . . . . . . 322DS18S20 . . . . . . . . . . . . . . . . . . . . . . 322Due . . . . . . . . . . . . . . . . . . . . . 38, 40, 41Duemilanove . . . . . . . . . . . . . . . . . . . . 40
EEDI . . . . . . . . . . . . . . . . . . . . . . . . . . . 38éditeur de liens . . . . . . . . . . . . . . . . . . . 32EEPROM . . . . . . . . . . . . . . . . . . . . . . . 22EIA/TIA-232-E . . . . . . . . . . . . . . . . . 164
émetteur-récepteur asynchrone universel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
endTransmisison . . . . . . . . . . . . . . . . 189Enregistrer . . . . . . . . . . . . . . . . . . . 46, 48Enregistrer sous… . . . . . . . . . . . . . . . . 48entrée-sortie à usage général . . . . . . . . 71Environnement . . . . . . . . . . . . . . . . . . . 53environnement de développement intégré
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38EPROM . . . . . . . . . . . . . . . . . . . . . . . . 21Erasable Programmable Read-Only
Memory . . . . . . . . . . . . . . . . . . . . . . 21
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
23/30
Index
344
escape sequence . . . . . . . . . . . . . . . . 262ET . . . . . . . . . . . . . . . . . . . . . . . . . . . 133Ethernet . . . . . . . . . . . . . . . . . . . . 28, 164EUSART . . . . . . . . . . . . . . . . . . . . . . . 29Exemples . . . . . . . . . . . . . . . . . . . . . . . 47EXOR . . . . . . . . . . . . . . . . . . . . . . . . 184exp . . . . . . . . . . . . . . . . . . . . . . . . . . . 143extensible mark-up language . . . . . . 258extern . . . . . . . . . . . . . . . . . . . . . 273, 276
FFALLING . . . . . . . . . . . . . . . . . . . . . . 300Fast PWM . . . . . . . . . . . . . . . . . . . . . 235Fermer . . . . . . . . . . . . . . . . . . . . . . . . . 47filtre
numérique à réponse impulsionnelleinfinie . . . . . . . . . . . . . . . . . . . . . . . 138passe-bande . . . . . . . . . . . . . . . . . . 239passe-bas . . . . . . . . . . . . . . . . . . . . 138passe-haut . . . . . . . . . . . . . . . . . . . 138
firmware . . . . . . . . . . . . . . . . . . . . . . . 24 float . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Foire aux questions . . . . . . . . . . . . . . . 54fonction . . . . . . . . . . . . . . . . . . . . . 58, 79fondamental . . . . . . . . . . . . . . . . . . . . 237 for . . . . . . . . . . . . . . . . . . . . . . . . . 81, 82Formatage automatique
. . . . . . . . . . . 52Fortran . . . . . . . . . . . . . . . . . . . . . . . . . 31France Inter . . . . . . . . . . . . . . . . . . . . 222Freeduino . . . . . . . . . . . . . . . . . . . . . . . 45Freescale . . . . . . . . . . . . . . . . . . . . . . 197fréquence d’échantillonnage . . . . . . . 132FTDI . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
GGeneral Purpose Input Output . . . 26, 71GGA . . . . . . . . . . . . . . . . . . . . . . . . . 168goto . . . . . . . . . . . . . . . . . . . . . . . . . . 269
GPIO . . . . . . . . . . . . . . . . . . . . . . . 26, 71GPS . . . . . . . . . . . . . . . . . . . . . . . . . . 168graphiques vectoriels . . . . . . . . . . . . . 258Graver la séquence d’initialisation . . . 53
Hharmoniques . . . . . . . . . . . . . . . . . . . . 237HD44780 . . . . . . . . . . . . . . . . . . . . . . 159 Hello World . . . . . . . . . . . . . . . . . . 14, 57 HIGH . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Hitachi . . . . . . . . . . . . . . . . . . . . . . . . 159Hope RF . . . . . . . . . . . . . . . . . . . . . . . 189horloge . . . . . . . . . . . . . . . . . . . . . . . . . 24
atomique . . . . . . . . . . . . . . . . . . . . . 221HP03 . . . . . . . . . . . . . . . . . . . . . . . . . 189hypot . . . . . . . . . . . . . . . . . . . . . . . . . 144
II²C . . . . . . . . . . . . . . . . 28, 164, 187, 329I²S . . . . . . . . . . . . . . . . . . . . . 28, 164, 220ICR . . . . . . . . . . . . . . . . . . . . . . . . . . . 241ICSP . . . . . . . . . . . . . . . . . . . . . . . . . . . 33if-else . . . . . . . . . . . . . . . . . . . . . . .59, 66IIR . . . . . . . . . . . . . . . . . . . . . . . . . . . 138imbriquer des interruptions . . . . . . . . 302 Importer bibliothèque… . . . . . . . . . 51, 52 Imprimer . . . . . . . . . . . . . . . . . . . . . . . 48 In-Circuit Serial Programming . . . . . . 33indexOf . . . . . . . . . . . . . . . . . . . . . . . . 175infinite impulse response . . . . . . . . . . 138Inkscape . . . . . . . . . . . . . . . . . . . . . . . 258 INPUT . . . . . . . . . . . . . . . . . . . . . . . . . 61 Input Capture Register . . . . . . . . . . . 241
INPUT_PULLUP . . . . . . . . . . . . . . 61, 73 In-System Programming . . . . . . . . . . . 33int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62int8 . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
24/30
Index
345
intégrale . . . . . . . . . . . . . . . . . . . . . . . 135Intel . . . . . . . . . . . . . . . . . . . . . . . 21, 329 Inter Integrated Circuits . . . . . . . . . . 187interface de programmation applicative
. . . . . . . . . . . . . . . . . . . . . . . . . 54, 109interrupt nesting . . . . . . . . . . . . . . . . 302interrupt service routine . . . . . . . . . . 292interruptions . . . . . . . . . . . . . . . . 25, 287interrupts . . . . . . . . . . . . . . . . . . . . . . 297INTx . . . . . . . . . . . . . . . . . . . . . . . . . 300IrDA . . . . . . . . . . . . . . . . . . . . . . 28, 164ISP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33ISR . . . . . . . . . . . . . . . . . . . . . . 273, 292
JJean-Baptiste de La Quintinie . . . . . . 109Joint Test Action Group . . . . . . . . . . . 30 journal lumineux défilant . . . . . . . . . . 95
JTAG . . . . . . . . . . . . . . . 28, 30, 164, 314
Kkibi . . . . . . . . . . . . . . . . . . . . . . . . . . . 25klaxon italien . . . . . . . . . . . . . . . . . . . 319
Llangage de balisage extensible . . . . . 258latitude . . . . . . . . . . . . . . . . . . . . . . . . 175LCD . . . . . . . . . . . . . . . . . . . . . . . . . . 159LDR . . . . . . . . . . . . . . . . . . . . . . . . . . 316LED infrarouge . . . . . . . . . . . . . . . . . 271Léonardo . . . . . . . . . . . . . . . . . . . . . . . 39LF . . . . . . . . . . . . . . . . . . . . . . . . . . . 168light dependent resistor . . . . . . . . . . . 316
Lilypad . . . . . . . . . . . . . . . . . . . . . . . . 39LIN . . . . . . . . . . . . . . . . . . . . . . . 28, 164 Linker . . . . . . . . . . . . . . . . . . . . . . . . . 32Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Li-Po . . . . . . . . . . . . . . . . . . . . . . . . . 320 LiquidCrystal . . . . . . . . . . . . . . . . . . . 160longitude . . . . . . . . . . . . . . . . . . . . . . 175loop . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 LOW . . . . . . . . . . . . . . . . . . . . . . . 64, 300
MM2M . . . . . . . . . . . . . . . . . . . . . . . . . 157MA . . . . . . . . . . . . . . . . . . . . . . . . . . . 237Mac OS X . . . . . . . . . . . . . . . . . . . . . . 13
machine-to-machine . . . . . . . . . . . . . 157macros . . . . . . . . . . . . . . . . . . . . 291, 327main . . . . . . . . . . . . . . . . . . . . . . . 60, 315mark . . . . . . . . . . . . . . . . . . . . . . 165, 272 Math . . . . . . . . . . . . . . . . . . . . . . . . . . 144math.h . . . . . . . . . . . . . . . . . . . . . . . . 144Maxim . . . . . . . . . . . . . . . . . . . . 188, 322MCS-48 . . . . . . . . . . . . . . . . . . . . . . . . 21
MCS-51 . . . . . . . . . . . . . . . . . . . . . . . . 21MCU . . . . . . . . . . . . . . . . . . . . . . . . . . 21MCUSR . . . . . . . . . . . . . . . . . . . . . . . 314Mega . . . . . . . . . . . . . . . . . . . . . . . . . . 40Mega ADK . . . . . . . . . . . . . . . . . . . . . 39Mega 1280 . . . . . . . . . . . . . . . . . . . . . . 40Mega 2560 . . . . . . . . . . . . . . . . . . . . . . 40megaAVR . . . . . . . . . . . . . . . . . . . . . . 41Melexis . . . . . . . . . . . . . . . . . . . . . . . 329mémoire
flash . . . . . . . . . . . . . . . . . . . . . . . . . 24morte . . . . . . . . . . . . . . . . . . . . . . . . 21ROM effaçable . . . . . . . . . . . . . . . . 21vive . . . . . . . . . . . . . . . . . . . . . . . . . 21zombie . . . . . . . . . . . . . . . . . . . . 22, 24
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
25/30
Index
346
menuAide . . . . . . . . . . . . . . . . . . . . . . . . . 53Croquis . . . . . . . . . . . . . . . . . . . . . . 51
des onglets . . . . . . . . . . . . . . . . . . . . 54Édition . . . . . . . . . . . . . . . . . . . . . . . 49Fichier . . . . . . . . . . . . . . . . . . . . . . . 47Outils . . . . . . . . . . . . . . . . . . . . . . . . 52
méthode . . . . . . . . . . . . . . . . . . . . . . . . 58micro (-contrôleur) . . . . . . . . . . . . . . . 21Micro (modèle de carte) . . . . . . . . . . . 40Microchip . . . . . . . . . . . . . . . . . . . . . . 22microcontrôleur . . . . . . . . . . . . . . . . . . 21micrologiciel . . . . . . . . . . . . . . . . . . . . 24micros . . . . . . . . . . . . . . . . . . . . 224, 234Microwire . . . . . . . . . . . . . . . . . . 28, 197Microwire/Plus . . . . . . . . . . . . . . . . . 197millis . . . . . . . . . . . . . . . . . . 98, 224, 234Mini . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Mise en page . . . . . . . . . . . . . . . . . . . . 48
MISO . . . . . . . . . . . . . . . . . . . . . . . . . 196misophonie . . . . . . . . . . . . . . . . . . . . 145MLI . . . . . . . . . . . . . . . . . . . . . . . 27, 122
à phase correcte . . . . . . . . . . . . . . . 235rapide . . . . . . . . . . . . . . . . . . . . . . . 235
MLX90614 . . . . . . . . . . . . . . . . . . . . 329modulation
d’amplitude . . . . . . . . . . . . . . . . . . 237
de largeur d’impulsion . . . . . . . 27, 122Moniteur série . . . . . . . . . . . . . . . . . . . 77 Moniteur série . . . . . . . . . . . . . 46, 53, 77monome . . . . . . . . . . . . . . . . . . . . . . . . 40MOSI . . . . . . . . . . . . . . . . . . . . . . . . . 196Motorola . . . . . . . . . . . . . . . . . . . . . . 197MSF . . . . . . . . . . . . . . . . . . . . . . . . . . 222µC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
multiplexeur . . . . . . . . . . . . . . . . . . . . 26multitâche . . . . . . . . . . . . . . . . . . . . . 313µWire . . . . . . . . . . . . . . . . . . . . . . . . . 197
N NAN . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Nano . . . . . . . . . . . . . . . . . . . . . . . . . . . 40NEC-1 . . . . . . . . . . . . . . . . . . . . . . . . 263nested comments . . . . . . . . . . . . . . . . . 64NMEA 0183A . . . . . . . . . . . . . . . . . . 168NMI . . . . . . . . . . . . . . . . . . . . . . . . . . 298noInterrupts . . . . . . . . . . . . . . . . . . . . 297Nokia 6100 . . . . . . . . . . . . . . . . . . . . . 198nombre
à virgule flottante . . . . . . . . . . . . . . . 62entier . . . . . . . . . . . . . . . . . . . . . . . . 62
NON . . . . . . . . . . . . . . . . . . . . . . . . . . 133non signé . . . . . . . . . . . . . . . . . . . . . . . 63NON-ET . . . . . . . . . . . . . . . . . . . . . . 133non-maskable interrupt . . . . . . . . . . . 298NON-OU . . . . . . . . . . . . . . . . . . . . . . 133 Not a Number . . . . . . . . . . . . . . . . . . . . 59
noTone . . . . . . . . . . . . . . . . . . . . . . . . 147 Nouveau . . . . . . . . . . . . . . . . . . . . . 46, 47numérisation . . . . . . . . . . . . . . . . . . . 115
OOCIE0A . . . . . . . . . . . . . . . . . . . . . . . 291OCR . . . . . . . . . . . . . . . . . . . . . . . . . . 241OCR0A . . . . . . . . . . . . . . . . . . . . . . . 291OCRxA . . . . . . . . . . . . . . . . . . . . . . . 240Optiboot . . . . . . . . . . . . . . . . . . . . . . . 315orgue de Barbarie . . . . . . . . . . . . . . . . 320oscillateur . . . . . . . . . . . . . . . . . . . . . . . 24OU . . . . . . . . . . . . . . . . . . . . . . . . . . . 133OU exclusif . . . . . . . . . . . . . . . . 184, 245OUTPUT . . . . . . . . . . . . . . . . . . . . . . . 61
Output Compare Register . . . . . . . . .241Ouvrir . . . . . . . . . . . . . . . . . . . . . . 46, 47
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
26/30
Index
347
PPacket Error Checking . . . . . . . . . . . 329Pandore . . . . . . . . . . . . . . . . . . . . . . . 332partie
commande . . . . . . . . . . . . . . . . . . . 124opérative . . . . . . . . . . . . . . . . . . . . 124
Pascal . . . . . . . . . . . . . . . . . . . . . . . . . 31PB5 . . . . . . . . . . . . . . . . . . . . . . . . . . 111PCIE0 . . . . . . . . . . . . . . . . . . . . . . . . 306PCIFR . . . . . . . . . . . . . . . . . . . . . . . . 306PCINTx . . . . . . . . . . . . . . . . . . . 300, 304PCMSK0 . . . . . . . . . . . . . . . . . . . . . . 305PCMSK1 . . . . . . . . . . . . . . . . . . . . . . 305PCMSK2 . . . . . . . . . . . . . . . . . . . . . . 305PCMSKx . . . . . . . . . . . . . . . . . . . . . . 305PEC . . . . . . . . . . . . . . . . . . . . . . . . . . 329Phase Correct PWM . . . . . . . . . . . . . 235photorésistance . . . . . . . . . . . . . . . . . 316
PIC16C84 . . . . . . . . . . . . . . . . . . . . . . 22PID . . . . . . . . . . . . . . . . . . . . . . . . . . 125pile (mémoire) . . . . . . . . . . . . . . . . . . 303 pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
change interrupt flag register . . . . 306change mask . . . . . . . . . . . . . . . . . 305change . . . . . . . . . . . . . . . . . . . . . . 300
Pindare . . . . . . . . . . . . . . . . . . . . . . . 332
pinMode . . . . . . . . . . . . . . . . . . . . 61, 71PINx . . . . . . . . . . . . . . . . . . . . . . . . . 111PLL . . . . . . . . . . . . . . . . . . . . . . . . . . . 24PMbus . . . . . . . . . . . . . . . . . . . . . . . . 187pointeurs . . . . . . . . . . . . . . . . . . . . . . 173pont en H . . . . . . . . . . . . . . . . . . . . . . 127POR . . . . . . . . . . . . . . . . . . . . . . . . . . 314port
parallèle . . . . . . . . . . . . . . . . . . . . . 158série . . . . . . . . . . . . . . . . . . . . . 53, 165PORTB . . . . . . . . . . . . . . . . . . . . . . . 111ports . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
PORTx . . . . . . . . . . . . . . . . . . . . . . . . 111 pow . . . . . . . . . . . . . . . . . . . . . . . . . . 143 power-on reset . . . . . . . . . . . . . . . . . . 314prédiviseur . . . . . . . . . . . . . . . . . . . . . . 29Préférences . . . . . . . . . . . . . . . . . . . . . 48 prescaler . . . . . . . . . . . . . . . 29, 235, 241 printf . . . . . . . . . . . . . . . . . . . . . . . . . 150processeur . . . . . . . . . . . . . . . . . . . 23, 53Processing . . . . . . . . . . . . . . . . . . . . . . 37Programmateur . . . . . . . . . . . . . . . . . . 53programmationin situ . . . . . . . . . . . . . 33proportionnelle, réponse . . . . . . . . . . 135prototype d’une fonction . . . . . . . . . . 209 pull-down . . . . . . . . . . . . . . . . . . . . . . . 73 pull-up . . . . . . . . . . . . . . . . . . . . . . . . . 73 pulse width modulation . . . . . . . . . . . 122 pulseIn . . . . . . . . . . . . . . . . . . . . 248, 284PWM . . . . . . . . . . . . . . . . . . . . . . . . . 122
QQSPI . . . . . . . . . . . . . . . . . . . . . . . . . 197quantification . . . . . . . . . . . . . . . . . . . 115quartz . . . . . . . . . . . . . . . . . . . . . . . . . . 24Quitter . . . . . . . . . . . . . . . . . . . . . . . . . 49
R RAM . . . . . . . . . . . . . . . . . . . . . . . . . . 21random . . . . . . . . . . . . . . . . . . . . 105, 318 Random Access Memory . . . . . . . . . . . 21randomSeed . . . . . . . . . . . . . . . . 105, 318rapport signal-bruit . . . . . . . . . . . . . . 255RAZ . . . . . . . . . . . . . . . . . . . . . . . 26, 314RC5 . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Read-Modify-Write . . . . . . . . . . . . . . 111 Read-Only Memory . . . . . . . . . . . . . . . 21 Réduire l’indentation . . . . . . . . . . . . . . 50 Référence . . . . . . . . . . . . . . . . . . . . . . . 54
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
27/30
Index
348
registreà décalage . . . . . . . . . . . . . . . 200, 275de direction de données . . . . . . . . . 110
régulateurPID . . . . . . . . . . . . . . . . . . . . . . . . . 134proportionnel intégral dérivé . . . . . 125
Réparer encodage et recharger . . . . . . 52réponse indicielle . . . . . . . . . . . . . . . . 125requestFrom . . . . . . . . . . . . . . . . . . . 189réseau RC . . . . . . . . . . . . . . . . . . . . . . 24reset . . . . . . . . . . . . . . . . . . . . . . . 26, 314
résistances de rappel . . . . . . . . . . . . . . 73internes . . . . . . . . . . . . . . . . . . . . . . 73résonateur . . . . . . . . . . . . . . . . . . . . . . 24 Rétablir . . . . . . . . . . . . . . . . . . . . . . . . 49retour chariot . . . . . . . . . . . . . . . . . . . 168return . . . . . . . . . . . . . . . . . . . . . . . . . . 59 RISING . . . . . . . . . . . . . . . . . . . . . . . 300ROM . . . . . . . . . . . . . . . . . . . . . . . . . . 21
ronfleur . . . . . . . . . . . . . . . . . . . . . . . 315routine d’interruption . . . . . . . . . . . . 288RS-232 . . . . . . . . . . . . . . . . . . . . . 28, 164RS-422 . . . . . . . . . . . . . . . . . . . . . . . . 218RS-485 . . . . . . . . . . . . . . . . . . . . . . . . 218
SSaint Augustin . . . . . . . . . . . . . . . . . . 285SAM3X8E . . . . . . . . . . . . . . . . . . . . . . 41SATA . . . . . . . . . . . . . . . . . . . . . . . . 158saut de ligne . . . . . . . . . . . . . . . . . . . . 168sbi . . . . . . . . . . . . . . . . . . . . . . . . . . . 112scalable vector graphics . . . . . . . . . . 258SCK . . . . . . . . . . . . . . . . . . . . . . . . . . 187SDA . . . . . . . . . . . . . . . . . . . . . . . . . . 187
SDI . . . . . . . . . . . . . . . . . . . . . . . . . . 196SDO . . . . . . . . . . . . . . . . . . . . . . . . . . 196seconde (unité de temps) . . . . . . . . . . 221séquence d’échappement . . . . . . . . . . 262
Serial Monitor . . . . . . . . . . . . . . . . . . . 77Serial.available . . . . . . . . . . . . .144, 167Serial.begin . . . . . . . . . . . . . . . . . 77, 167Serial.end . . . . . . . . . . . . . . . . . . . . . . 167Serial.find . . . . . . . . . . . . . . . . . . 169, 172Serial.parseFloat . . . . . . . . . . . . . . . . 170Serial.parseInt . . . . . . . . . . . . . . . . . . 170Serial.peek . . . . . . . . . . . . . . . . . . . . . 144Serial.print . . . . . . . . . . . . . . . . . 151, 167Serial.println . . . . . . . . . . . . . . . . 77, 167Serial.read . . . . . . . . . . . . . . . . . 144, 167Serial.write . . . . . . . . . . . . . . . . . . . . . 167setup . . . . . . . . . . . . . . . . . . . . . . . . . . . 60shield . . . . . . . . . . . . . . . . . . . . . . .40, 41SIGNAL . . . . . . . . . . . . . . . . . . . . . . . 291signal de remise à zéro . . . . . . . . . 26, 314SIGNAL(TIMER0_COMPA_vect) . . . 291SIGNAL(TIMER0_OVF_vect) . . . . . . 289
simulateur de micro . . . . . . . . . . . . . . . 34SIRCS . . . . . . . . . . . . . . . . . . . . . . . . 263SISO . . . . . . . . . . . . . . . . . . . . . . . . . . 197sketch . . . . . . . . . . . . . . . . . . . . 46, 51, 60SMBus . . . . . . . . . . . . . . . . . . . . 187, 329somme de contrôle . . . . . . . . . . . . . . . 183space . . . . . . . . . . . . . . . . . . . . . 165, 272spaghetti code . . . . . . . . . . . . . . . . . . 270spectre . . . . . . . . . . . . . . . . . . . . . . . . 237SPI . . . . . . . . . . . . . . . . . . . . 28, 164, 196sqrt . . . . . . . . . . . . . . . . . . . . . . . . . . . 144SSI . . . . . . . . . . . . . . . . . . . . . . . . . . . 219SSP . . . . . . . . . . . . . . . . . . . . . . . . . . . 220stack . . . . . . . . . . . . . . . . . . . . . . . . . . 303stack overflow . . . . . . . . . . . . . . . . . . 303startsWith . . . . . . . . . . . . . . . . . . . . . . 177static . . . . . . . . . . . . . . . . . . . . . . . . . . 290strcat . . . . . . . . . . . . . . . . . . . . . . . . . 173strcmp . . . . . . . . . . . . . . . . . . . . . . . . 173strcpy . . . . . . . . . . . . . . . . . . . . . . . . . 173
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
28/30
Index
349
Stream . . . . . . . . . . . . . . . . . . . . . . . . 178String . . . . . . . . . . . . . . . . . . . . . . 63, 173strlen . . . . . . . . . . . . . . . . . . . . . . . . . 173strstr . . . . . . . . . . . . . . . . . . . . . . . . . 173struct . . . . . . . . . . . . . . . . . . . . . . . . . 256substring . . . . . . . . . . . . . . . . . . . . . . 175SVG . . . . . . . . . . . . . . . . . . . . . . . . . . 258switch . . . . . . . . . . . . . . . . . . . . . . . . . 68switch-case-default . . . . . . . . . . . . . . . 68symétrique . . . . . . . . . . . . . . . . . . . . . 218System Management Bus . . . . . . . . . . 329système
automatisé . . . . . . . . . . . . . . . . . . . 124en boucle ouverte . . . . . . . . . . . . . 125
Ttableaux . . . . . . . . . . . . . . . . . . . . . . . 108TCCR0A . . . . . . . . . . . . . . . . . . . . . . 290
TCCRxA . . . . . . . . . . . . . . . . . . . . . . 240TCCRxB . . . . . . . . . . . . . . . . . . . . . . 240Téléverser . . . . . . . . . . . . . . . . . . . 46, 48
avec un programmateur . . . . . . . . . 48tension de référence . . . . . . . . . . . . . 116TeraTerm . . . . . . . . . . . . . . . . . . . . . . 232Texas Instruments . . . . . . . . . . . . . . . . 21TI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
timeout . . . . . . . . . . . . . . . . . . . . . . . 248_timer . . . . . . . . . . . . . . . . . . . . . . . . 272Timer/Counter Control Register . . . . 241TIMER2_COMPA_vect . . . . . . . . . . . 273timer2_toggle_count . . . . . . . . . . . . . 273TMS1802NC . . . . . . . . . . . . . . . . . . . . 21toggle . . . . . . . . . . . . . . . . . . . . . . . . . 112toInt . . . . . . . . . . . . . . . . . . . . . . . . . . 178tone . . . . . . . . . . . . . . . . . . 147, 240, 272Tone.cpp . . . . . . . . . . . . . . . . . . . . . . 272
touchefantôme . . . . . . . . . . . . . . . . . . . . . . 87masquée . . . . . . . . . . . . . . . . . . . . . . 88
Tout sélectionner . . . . . . . . . . . . . . . . . 50Tre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Trigonometry . . . . . . . . . . . . . . . . . . . 144Trouver . . . . . . . . . . . . . . . . . . . . . . . . 50
dans la référence . . . . . . . . . . . . . . . 54 précédent . . . . . . . . . . . . . . . . . . . . . 50 prochain . . . . . . . . . . . . . . . . . . . . . . 50
TSOP1736 . . . . . . . . . . . . . . . . . . . . . 251
TSOP34836 . . . . . . . . . . . . . . . . . . . . 251TTL . . . . . . . . . . . . . . . . . . . . . . . . . . 165TWI . . . . . . . . . . . . . . . . . . . 28, 187, 329Two-Wire . . . . . . . . . . . . . . . . . . . . . 188
Interface . . . . . . . . . . . . . . . . . . . . . 187Type de carte . . . . . . . . . . . . . . . . . . . . 53typecast . . . . . . . . . . . . . . . . . . . . . . . 118typedef . . . . . . . . . . . . . . . . . . . . . . . . 257
UUAL . . . . . . . . . . . . . . . . . . . . . . . . . . . 23UART . . . . . . . . . . . . . . . . . . . . . 29, 166uC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21UFm . . . . . . . . . . . . . . . . . . . . . . . . . . 187uint32 . . . . . . . . . . . . . . . . . . . . . . . . . . 63Ultra Fast-mode . . . . . . . . . . . . . . . . 187undefined reference . . . . . . . . . . . 60, 273union . . . . . . . . . . . . . . . . . . . . . . . . . 256unité
arithmétique et logique . . . . . . . . . . 23centrale de traitement . . . . . . . . . . . . 23
Universal Asynchronous Receiver/ Transmitter . . . . . . . . . . . . . . . . . . 166
Uno . . . . . . . . . . . . . . . . . . . . . . . . . . . 39unsigned . . . . . . . . . . . . . . . . . . . . . . . . 63USART . . . . . . . . . . . . . . . . . . . . 29, 166USART0_RX_vect . . . . . . . . . . . . . . . 292USART0_UDRE_vect . . . . . . . . . . . . 292
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
29/30
Index
350
USB . . . . . . . . . . . . . . . . . . . . . . . 28, 164Utiliser la sélection pour trouver . . . . 50
Vvariable
globale . . . . . . . . . . . . . . . . . . . . . . . 62locale . . . . . . . . . . . . . . . . . . . . . . . . 62
vecteurs . . . . . . . . . . . . . . . . . . . . . . . 288Vérifier . . . . . . . . . . . . . . . . . . . . . . . . 46Vérifier / Compiler . . . . . . . . . . . . . . . 51Vishay . . . . . . . . . . . . . . . . . . . . . . . . 251Visiter Arduino.cc . . . . . . . . . . . . . . . . 54void . . . . . . . . . . . . . . . . . . . . . . . . . . . 58volatile . . . . . . . . . . . . . . . . . . . . . . . . 276
Wwatchdog . . . . . . . . . . . . . . . . . . . 30, 314Waveform Generation Mode . . . . . . . 241
wearable . . . . . . . . . . . . . . . . . . . . . . . 40WGM . . . . . . . . . . . . . . . . . . . . . . . . . 241WGM00 . . . . . . . . . . . . . . . . . . . . . . . 290while . . . . . . . . . . . . . . . . . . . . . . . 81, 82Windows Vista . . . . . . . . . . . . . . . . . . 13Windows 7 . . . . . . . . . . . . . . . . . . . . . . 13
Windows XP . . . . . . . . . . . . . . . . . . . . 12Wire . . . . . . . . . . . . . . . . . . . . . . . . . . 188Wiring . . . . . . . . . . . . . . . . . . . . . . . . . 37Wiring S . . . . . . . . . . . . . . . . . . . . . . . . 38wiring.c . . . . . . . . . . . . . . . . . . .289, 290wiring_analog.c . . . . . . . . . . . . . . . . . 152www.arduino.cc . . . . . . . . . . . . . . . . 9, 37www.freeduino.org . . . . . . . . . . . . . . . 45www.ftdichip.com . . . . . . . . . . . . . . . . 14www.inkscape.org . . . . . . . . . . . . . . . 258www.misophonia-uk.org . . . . . . . . . . 145www.monome.org . . . . . . . . . . . . . . . . 40www.polyvalens.com . . . . . . . . . . . . . . 1www.processing.org . . . . . . . . . . . . . . 37www.wiring.org.co . . . . . . . . . . . . . . . 37
XXML . . . . . . . . . . . . . . . . . . . . . . . . . 258
Z zero padding . . . . . . . . . . . . . . . . . . . 183Ziegler-Nichols . . . . . . . . . . . . . 125, 138
Maîtrisez les microcontrôleurs à l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3
-
8/18/2019 978-2-86661-190-3_Valens_Arduino_extrait+TDM+index
30/30