978-2-86661-190-3_valens_arduino_extrait+tdm+index

Upload: hichem-hamdi

Post on 07-Jul-2018

212 views

Category:

Documents


0 download

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