Vous êtes sur la page 1sur 30

enarvuino_14x21_00.fm Page 1 Lundi, 18.

fvrier 2013 10:55 10

Clemens VALENS
(www.polyvalens.com)

Matrisez les microcontrleurs


laide dArduino

www.elektor.fr/arduino
Matrisez les microcontrleurs l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21TDM.fm Page iii Lundi, 18. fvrier 2013 10:55 10

Sommaire
1.

Dmarrage rapide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.1

Installation du logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.2

Installation du matriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.1

1.2.2

1.2.3

Windows (XP ou plus rcent) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10


Carte sans puce FTDI (Uno, Mega2560 ou plus rcente) . . . . . . . . . . 10
Carte avec puce FTDI (Duemilanove, Nano, Diecimila) . . . . . . . . . 11
Comment trouver le numro de port de la carte sous Windows . . . . . . 12
Mac OSX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Carte sans puce FTDI (Uno, Mega2560 ou plus rcente) . . . . . . . . . . 13
Carte avec puce FTDI (Duemilanove, Nano, Diecimila) . . . . . . . . . 14
Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3

Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.1

On frappe la porte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.2

Mais on va o ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.

Connatre son adversaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.1

Un peu dhistoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2

Ils sont mimi, mais quest-ce quil y a dedans ? . . . . . . . . . . . . . . . . . . . 23


3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3.2.6
3.2.7
3.2.8
3.2.9
3.2.10

Le processeur (CPU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Loscillateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Les mmoires mortes, vivantes et zombies . . . . . . . . . . . . . . . . . . . . . . 24
Les interruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Entres-sorties (E/S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Convertisseur analogique-numrique (CAN) . . . . . . . . . . . . . . . . . . . . 26
Convertisseur numrique-analogique (CNA) . . . . . . . . . . . . . . . . . . . . 27
Modules de communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Gestion de temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Autres priphriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21TDM.fm Page iv Lundi, 18. fvrier 2013 10:55 10

iv
3.3

Les outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.1
3.3.2
3.3.3

La programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Charger le programme dans le micro . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Dboguer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.

Prototypage rapide litalienne. . . . . . . . . . . . . . . . . . . . . . 37

4.1

Le Parrain 1, 2 et 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4.2

Ptes, fromage et sauce tomate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.3

Lingrdient de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.4

La cuisine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.1
4.4.2
4.4.3
4.4.4
4.4.5
4.4.6

4.5

Menu Fichier (File) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47


Menu dition (Edit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Menu Croquis (Sketch) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Menu Outils (Tools) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Menu Aide (Help) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Les onglets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Le service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.5.1
4.5.2

Plan de table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Le matre dhtel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.

Mon premier dlit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.1

La cl molette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.2

Reprer les lieux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

5.3

Prparer le coup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.4

Des types avec des problmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.5

Les faits divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.6

Prendre perpette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

5.7

Lincarcration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

5.8

If-else ou la libert conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

5.9

La rinsertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21TDM.fm Page v Lundi, 18. fvrier 2013 10:55 10

6.

Les signaux numriques : tout ou rien . . . . . . . . . . . . . . 71

6.1

Trois surprises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

6.2

Toujours des surprises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6.3

Le clavier matriciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

6.4

Charlie la rescousse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

6.5

Les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

6.6

Boucles fOr et les trois (t)ours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81


6.6.1
6.6.2
6.6.3

for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

6.7

Plus de touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

6.8

S.O.S. Fantmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6.9

Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.10

Mini-afficheur LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

6.11

Le dfil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.12

Petite arnaque entre amis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

6.13

De nouveaux amis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

6.14

Cest nul, pas zro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

6.15

La pomme de Blanche Neige . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

6.16

Le trognon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

6.17

Une astuce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

7.

Les signaux analogiques : ni noir ni blanc. . . . . . . . . 115

7.1

Le passage au numrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115


7.1.1
7.1.2
7.1.3
7.1.4

7.2

Des types reconvertis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118


Le gros du budget passe dans les frais de reprsentation . . . . . . . . . . 119
Un truc savoir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Les rfrences du CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

Retour lanalogique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21TDM.fm Page vi Lundi, 18. fvrier 2013 10:55 10

vi
7.3

Regarde, maman, sans les mains ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124


7.3.1
7.3.2
7.3.3
7.3.4
7.3.5
7.3.6
7.3.7
7.3.8

Pilote de moteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125


Obtenir une rponse indicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Le si compos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Le rgulateur PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Filtre numrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Duo de choc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Le coin des matheux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Avant-premire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

7.4

Rcration : le Misophone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

7.5

Un peu de C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

7.6

Les No dArduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

7.7

Regarde, maman, sans Arduino ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

8.

La communication : un art et une science . . . . . . . . . 157

8.1

Visualisons nos donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159


8.1.1

8.2

Laction de communiquer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162


8.2.1
8.2.2

8.3

Quelques subtilits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167


Enchanons les caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Briser les chanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Dcodeur NMEA0183A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Mutatis mutandis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Faites demi-tour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Perlute cacahoute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

Liaisons deux fils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187


8.4.1
8.4.2

8.5

Asynchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Synchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

RS-232 ou port srie ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164


8.3.1
8.3.2
8.3.3
8.3.4
8.3.5
8.3.6
8.3.7

8.4

Raccorder un afficheur alphanumrique cristaux liquides . . . . . . . . 159

IC, TWI et Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188


Capteur de pression atmosphrique . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

Liaisons trois ou quatre fils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196


8.5.1
8.5.2

Pilote amlior pour afficheur graphique . . . . . . . . . . . . . . . . . . . . . . 198


Capteur dhumidit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

8.6

Tous ensemble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

8.7

Quand Arduino nest pas l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

8.8

Les pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

8.9

Savais-tu ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21TDM.fm Page vii Lundi, 18. fvrier 2013 10:55 10

vii

9.

Le temps est compt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

9.1

Ici radio Francfort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221


9.1.1

DCF77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

9.2

Raliser un collier de secondes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

9.3

Dcoder un chapelet de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229


9.3.1

Dcodeur DCF77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

9.4

millis et micros, deux petites fonctions . . . . . . . . . . . . . . . . . . . . . . . . . 234

9.5

Cest qui, milie ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235


9.5.1

Deux types de MLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

9.6

Le Matre du Temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

9.7

Peut mieux faire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

9.8

Attendre un heureux vnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

9.6.1

9.8.1

metteur DCF77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

Trier tes tlcommandes infrarouges . . . . . . . . . . . . . . . . . . . . . . . . . 251

9.9

Arrter ou continuer, break ou continue . . . . . . . . . . . . . . . . . . . . . . . . 254

9.10

Lart de la division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

9.11

Lunion structure des types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255


9.11.1
9.11.2
9.11.3

9.12

struct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
typedef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

Cest une image ? Ce sont des donnes ? Cest Superfichier ! . . . . . . . 258


9.12.1

Le format de fichier SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

9.13

Ce que disent les manipulateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

9.14

To goto or not to goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

9.15

Jeux de trains tlcommands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

9.13.1

9.15.1
9.15.2
9.15.3

Le protocole NEC-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

La composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Respecter les horaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
a passe ou a casse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

9.16

Profession : meutier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

9.17

Rsumons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
9.17.1
9.17.2
9.17.3

9.18

Mode normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284


Mode CTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Mode capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

Que la force soit avec toi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21TDM.fm Page viii Lundi, 18. fvrier 2013 10:55 10

viii

10. Les interruptions : la bote de Pandore . . . . . . . . . . . . 287


10.1

Ma premire interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288


10.1.1
10.1.2

10.2

Temporisateur 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Produire un signal de 1 kHz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

Le loup dguis en mouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291


10.2.1

Les vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292

10.3

Comme une lettre la Poste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

10.4

Partir dans le dcor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

10.5

On sonne la porte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300


10.5.1

10.6

Linterruption de trop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302


10.6.1

10.7

Ralisons une bascule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301


La pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

Mais cest qui qui sonne la porte ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 304


10.7.1

Les interruptions multiplexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

10.8

Vive le codeur rotatif ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

10.9

RAZ toutes les sauces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314


10.9.1

POR, BOR, BOD et RAZ de lAVR . . . . . . . . . . . . . . . . . . . . . . . . . . 314

10.10 Inversons les rles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315


10.10.1 Une nuisance sonore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

10.11 La Cucaracha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319


10.11.1 Le protocole 1-Wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

10.12 Feu ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327


10.12.1 SMBus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327

Liste des programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333


Liste des figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Liste des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21_03.fm Page 24 Lundi, 18. fvrier 2013 10:18 10

3. Connatre son adversaire


3.2.2 Loscillateur
Un programme est une squence dinstructions excuter lune aprs lautre
(oublions ici lexcution en parallle). Cela implique un cadencement et cest
lhorloge du processeur qui en est charge. Elle a besoin dun oscillateur, qui se
matrialise souvent sous forme dun quartz et de deux petits condensateurs proximit du circuit intgr. Quand on nattache pas dimportance la prcision de
lhorloge, ces trois composants peuvent tre remplacs par un rsonateur, voire un
rseau RC. Il est aussi possible de cadencer le micro par un oscillateur externe,
celui dun autre micro par exemple.
En ralit, ces composants externes ne forment que le sommet visible de liceberg,
loscillateur consiste en bien plus de transistors quon ne limagine (essaie de crer
un oscillateur avec uniquement un quartz et deux condensateurs, tu verras bien que
ce nest pas facile). Dailleurs, de nombreux micros fonctionnent parfaitement
sans ces composants externes puisquils disposent de tout ce quil faut en interne,
sur la puce. La frquence nest pas forcment prcise mais une horloge embarque
permet dconomiser de lespace sur la platine et quelques composants ; cest toujours bon prendre quand on produit plusieurs (centaines de) milliers dexemplaires dun montage.
Pour obtenir des frquences de lhorloge leves, les constructeurs quipent leurs
micros dun module boucle phase asservie (la traduction correcte de langlais
Phase Locked Loop ou PLL), ainsi les micros cadencs 60 ou 80 MHz, voire
plus, sont devenus monnaie courante.
3.2.3 Les mmoires mortes, vivantes et zombies
En rgle gnrale, le microcontrleur ne se contente pas dune seule mmoire. En
effet, il dispose dune mmoire zombie (non volatile, mais reprogrammable, cest
de la mmoire flash dans la majorit des cas) pour stocker le micrologiciel (le logiciel qui sera excut par le micro, les anglophones disent firmware), dune
mmoire vive pour stocker les donnes et parfois aussi dune petite mmoire non
volatile (EEPROM) pour des donnes importantes et des paramtres de configuration. La mmoire de programme est gnralement (nettement) plus grosse que la
mmoire vive, cest normal, car la plupart des programmes nutilisent pas tant de
mmoire vive que a. La consquence de ce choix est que les applications gourmandes en mmoire vive comme les tlphones portables ou les systmes Linux
embarqus ne peuvent pas utiliser nimporte quel micro. Des modles spcialiss
capables de travailler avec des mmoires externes volumineuses sont proposs
pour ce genre dapplications.

24

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21_03.fm Page 36 Lundi, 18. fvrier 2013 10:18 10

3. Connatre son adversaire

Oscilloscope

Croquis sur lordinateur (portable)

Tlcommande
Haut-parleur
Carte Arduino
vite dsormais de ranger ton environnement de travail,
le dsordre stimule la crativit (selon des scientifiques allemands).
Pour fter le dbut de ta nouvelle vocation,
offre-toi un oscilloscope (neuf ou doccasion). Tu verras, il changera ta vie.

36

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

4.5 Le service
4.5.1 Plan de table
Dans Arduino, les noms des broches ont t simplifies, la notion traditionnelle de
ports dentres-sorties (portA, portB, etc.) a t remplace par des numros. La
numrotation est simple et logique quand on sait que la premire carte Arduino
comportait un ATmega8 : elle commence par0 sur la broche2. Comment a, pas
logique ? Pourtant a lest, car la broche1 du circuit ATmega8 correspond PC6,
c.--d. lentre/sortie (E/S) numro6 du portC. Or, cette broche constitue aussi
lentre Reset et on a prfr la connecter un bouton-poussoir, PC6 nest donc
plus libre1. La deuxime broche, PD0, soit E/S numro0 du portD, est disponible
et la numrotation commence alors ici. Elle continue en montant et en sautant les
broches qui ne sont pas des E/S (alimentation) ou qui ne sont pas libres pour
dautres raisons, comme PB6 et PB7 rserves au quartz. Au final, on se retrouve
avec 20E/S numriques (de 019). Les E/S 1419 sont relies au convertisseur
analogique-numrique (CAN) du micro et il a t dcid de les regrouper sur un
connecteur part et de les renommer entres analogiques (de 0 5). Du
coup, une carte de type Uno offre 14E/S numriques et 6entres analogiques.
Les 14 E/S numriques sont cbles sur deux connecteurs nomms Digital
(PWM#) sur un ct de la carte, les 6analogiques sur un connecteur en face,
nomm Analog in. Align avec ce connecteur, on trouve un quatrime connecteur
nomm Power qui comporte galement le signal Reset.
Pourquoi les connecteurs des E/S numriques portent-ils la mention PWM# ? Eh
bien, les broches sur la carte marques par un dise ( # , parfois aussi par un tilde
~ ) sont capables de fournir des signaux modulation largeur dimpulsion
(MLI, PWM en anglais). Elles sont balises car, dans Arduino, elles servent
comme sorties analogiques. Leur nombre dpend du micro, lATmega8 nen a
que trois (E/S 9 11), lATmega168 et lATmega328 en possdent six (E/S 3, 5, 6, 9 11).
Pour les cartes de type Mega quipes de micros avec plus de broches que
lATmega8/168/328, la numrotation des E/S est diffrente car les broches ont t
regroupes sur des connecteurs par fonction. Ainsi, une telle carte dispose de
connecteurs Power, Analog in, Digital, Communication et PWM. Le connecteur
Digital est double range. Au total, une carte Mega2560 offre 70E/S numriques, dcoupes en 32E/S numriques (Digital), 16entres analogiques (Analog
in), 15sorties MLI (PWM) et 10broches rserves la Communication.

1. Cela nest pas tout fait correct car il est toujours possible dutiliser ce port comme
entre numrique connecte un bouton-poussoir en programmant le fusible
RSTDISBL, mais il y en a qui ont essay ils ont eu des problmes. Cest toi qui vois.

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

55

5. Mon premier dlit


Dans la fonction setup plus haut, il y avait aussi des commentaires dits de fin de
ligne, prcds par // .Tout ce qui vient aprs // sur la mme ligne est ignor par
le compilateur. Tous les compilateursC ne comprennent pas forcment ce type de
commentaires. En effet, il sagit dune des rares fonctions C++ qui a t adopte
par le C (dans le standard C99) et seuls les compilateurs conformes ce standard
sont censs accepter les commentaires de fin de ligne.
Les commentaires dans setup contiennent des caractres accentus. Cest une
maladresse viter parce que les compilateurs digrent parfois mal les caractres
exotiques, mme dans les commentaires (oui, en C, est un caractre exotique). En C, utilise uniquement les caractres ASCII de base, les accents et autres
caractres spciaux ou exotiques sont exclure.
Fais attention quand les deux types de commentaires sont mlangs ou quand une
partie de code qui contient dj des commentaires est mise en commentaire car
cela peut perturber le compilateur. Si tu vois apparatre une erreur ou un avertissement qui parle de nested comments (commentaires imbriqus), vrifie bien que tu
nas pas oubli un */ quelque part. Tu apprendras vite ne pas te fier la coloration
syntaxique de lditeur, un diteur nest pas un compilateur !

5.6

Prendre perpette

Maintenant que nous disposons dune variable led et que la broche connecte la
LED est configure en sortie, nous pouvons attaquer la fonction loop. Pour allumer
et teindre la LED, lAPI dArduino offre la fonction digitalWrite. Elle prend deux
arguments : le numro de la broche et la valeur HIGH (niveau logique haut) ou
LOW (niveau logique bas). Si on appelle cette fonction dabord avec la valeur
HIGH et ensuite avec la valeur LOW et si nous attendons un peu entre deux appels,
la LED clignotera puisque cet enchanement est excut continuellement grce
la boucle. La fonction delay permet dintroduire des dlais et donc dattendre. Le
temps dattente est spcifi en millisecondes.
Voil le croquis termin :
/*
* Blink 1
*/
int led = 13;
void setup(void)
{
pinMode(led,OUTPUT);

64

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

5.6 Prendre perpette


}

void loop(void)
{
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
delay(500);
}

//
//
//
//

allume la LED
attends 500 ms
eteins la LED
attends 500 ms

Ceci est une mthode, mais pas la seule. Ce croquis permet de spcifier sparment
la dure de lallumage et celle de lextinction. Si cest inutile, tu peux modifier le
croquis pour ne spcifier quune seule et mme dure dallumage et dextinction,
comme ceci :
/*
* Blink 2
*/
int led = 13;
int state = HIGH;
void setup(void)
{
pinMode(led,OUTPUT);
}
void loop(void)
{
digitalWrite(led,state);
if (state==HIGH)
{
state = LOW;
}
else
{
state = HIGH;
}
delay(500);
}

// allume ou eteins la LED

// inverse letat

// attends 500 ms

Ici, si (if) la variable state est gale ( == , soit deux fois = , ingale est indiqu
par != ) HIGH, nous lui donnerons la valeur LOW. Sinon (else) nous lui donnerons la valeur HIGH. Ce bout de code a pour but dinverser la valeur de state
chaque tour de boucle.

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

65

enarvuino_14x21_06.fm Page 74 Lundi, 18. fvrier 2013 10:20 10

6. Les signaux numriques : tout ou rien


En modifiant ainsi le croquis, deux doutes sont levs : key est maintenant clairement une entre et son tat au repos est HIGH. Fixer son tat au repos LOW nest
pas possible, lAVR ne possde pas de rsistance de rappel vers le 0 V, mais tu
peux toujours connecter une rsistance externe au cas o tu en aurais besoin.

6.2

Toujours des surprises

Aprs les trois surprises du croquis dcrites dans le paragraphe prcdent, en voici
encore une autre : sur mon ordinateur, quand je le compile avec Arduino 1.0.1, le
croquis compil occupe 1058octets. Remplace maintenant les deux dernires
lignes 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 lappel de digitalWrite dans la fonction loop. Le deuxime argument est


lappel dune fonction au lieu dun entier. Cela peut paratre trange mais, en C, il
est tout fait lgal de passer un appel de fonction comme argument dune autre
fonction tant que le rsultat de cet appel est compatible avec largument. En clair,
puisque le rsultat de digitalRead est un entier, nous pouvons lutiliser la place
de nimporte quel autre entier, comme ici en tant que deuxime argument pour
digitalWrite.
Sur mon ordinateur, la compilation de cette version du croquis cre un excutable
de 1064 octets, soit 6 octets de plus pour exactement le mme fonctionnement.
Cest curieux, non ? En effet, ici nous touchons aux processus internes du compilateur qui ne sont pas vidents comprendre. En exprimentant un peu avec le
code, nous pouvons dterminer avec plus de prcision lorigine de cette diffrence
74

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21_07.fm Page 129 Lundi, 18. fvrier 2013 10:21 10

7.3 Regarde, maman, sans les mains !


Si le moteur ne tourne pas, cherche lerreur. Les 12 V sont-ils bien prsents ? Estce que le pilote est bien cbl ? Les transistors sont-ils connects comme il faut ?
Ne sont-ils pas inverss (les N-MOSFET bien en bas, les P-MOSFET en haut) ?
Etc.
7.3.2 Obtenir une rponse indicielle
Nous allons maintenant modifier et tendre notre croquis pour tester lentre analogique, 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 srie met toutes les 250 ms la valeur mesure
sur lentre analogique A0 du micro. Fais varier la tension pour vrifier quelle est
bien numrise. Note les valeurs min. et max. au cas o la tension natteint pas 0 V
ou 5 V, voire aucune de ces deux valeurs.
Il est temps de passer aux choses srieuses, nous allons utiliser loscilloscope ou
le frquencemtre. La frquence mesurer sera autour de 2 kHz. Dans le croquis
suivant (Motor test 3), mets la ligne en gras, italique et soulign en commentaire
laide du double //, comme ceci :
// i += 1;

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

129

enarvuino_14x21_08.fm Page 160 Lundi, 18. fvrier 2013 10:21 10

8. La communication : un art et une science

Figure 8-1 - Un afficheur cristaux liquides connect en mode 4 bits. Ce montage


fonctionne pour tous les modules LCD compatibles HD44780. P1 permet de rgler le
contraste, T1 pilote le rtroclairage.

compte. Si un jour tu rencontres des problmes un peu alatoires avec un afficheur


parfaitement cbl, regarde si ralentir la communication permet dviter les
ennuis.
crire un pilote pour un afficheur compatible HD44780 nest plus ncessaire car
des milliers de programmeurs lont fait depuis lintroduction de cette puce.
Linternet grouille littralement de pilotes libres pour ce type de LCD, crits dans
tous les langages de programmation imaginables. Arduino aussi dispose dune
bibliothque avec toutes les fonctions ncessaires pour piloter un tel LCD, nous
nallons donc pas perdre de temps refaire lexercice.
Note quil sagit dune bibliothque pour Arduino et pas dune partie de lAPI
Arduino, laccs aux fonctions de la bibliothque exige alors un (tout petit) peu de
travail supplmentaire. Ouvre un nouveau croquis, clique sur Croquis (Sketch)
puis sur Importer bibliothque (Import Library) et choisis dans la liste qui
saffiche la bibliothque LiquidCrystal. Le rsultat de cette opration nest pas
spectaculaire, juste une ligne de code insre en haut de ton croquis :
#include <LiquidCrystal.h>

160

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21_09.fm Page 227 Lundi, 18. fvrier 2013 10:22 10

9.2 Raliser un collier de secondes


Au lieu denvoyer les dures des bits sur le port srie, elles sont maintenant stockes dans la variable dt. Si la valeur de dt est suprieure 50 ms, mais infrieure
150 ms, nous pouvons supposer que nous avons affaire un niveau logique0 et
un caractre 0 est enregistr dans la trame bits. Si dt dpasse les 150 ms, mais
reste infrieure 250 ms, la valeur du bit reu est de 1 et un caractre 1 est donc
rajout bits. Enfin, si dt dpasse les 1500 ms, nous pouvons supposer que nous
avons dtect labsence du bit no59 qui indique la fin de la trame. La trame est
envoye sur le port srie avant dtre vide pour crer de la place pour la rception
de la prochaine.
Grce cette mthode, la polarit des bits na aucune importance et le croquis
fonctionnera avec tous les signaux, inverss ou pas. Comme tu las remarqu, jai
choisi une marge de 50 ms pour les deux dures de bit et mme plus pour la fin
de trame. Cest peut-tre trop et pour plus de certitude tu pourras diminuer les
marges.
Les trames envoyes sur le port srie ressemblent ceci :
0010000
00101001001110000100100001001010010011100110000010010010000
01110000011110000100110001000010010011100110000010010010000
00001011011010100100101001000010010011100110000010010010000

Elles contiennent toutes 59 bits, sauf la premire qui correspond un fragment de


fin de trame, puisque lalgorithme ntait pas encore synchronis avec le flux de
bits.
La prochaine tape est de dcoder la trame. Son format est bien document sur
linternet, voil ce que a donne pour la premire trame de 59 bits :
Bit(s)

Description

0 14

Rserv

Reu(s)

Dcod(s)

001010010011100

15

metteur de rserve

16

Basculement t/hiver au dbut de la


prochaine heure.

17, 18

Dcalage par rapport lheure UTC.

10

19

Ajout dune seconde intercalaire la fin


de lheure.

20

Dbut de la transmission
des informations horaires.

Tableau 9-1 - La signification des bits dans la trame horaire DCF77.

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

227

10.6 Linterruption de trop

Figure 10-1 Le programmeur optimiste.

interruptions sil est vraiment ncessaire que tout continue tout le temps. Par
contre, si tu fais cela, tu libres encore un autre mauvais gnie de la bote de Pandore des interruptions : le dbordement de la pile (stack overflow en anglais).
10.6.1 La pile
Le micro possde une mmoire spciale, appele la pile (stack), qui joue un peu le
rle de mdiateur entre programme principal et fonctions ou routines dinterruption. Cette mmoire est appele pile car, en thorie, on ne peut pas crire l o on
veut, mais uniquement au dbut. Cest donc une sorte de pile de donnes ; la dernire donne crite est la premire qui puisse tre lue. La pile est utilise pour passer les arguments aux fonctions, pour stocker les variables locales et quand le
micro doit quitter son poste pour aller excuter une fonction ou une routine dinterruption. La pile contient aussi ladresse de linstruction que le micro avait prvu
dexcuter sil navait pas t interrompu pour excuter cette fonction ou routine
dinterruption. Le micro est un vrai Petit Poucet, il laisse derrire lui, sur la pile,
une trace dadresses qui lui permet de retrouver lendroit 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 connat des
limites. Souvent la pile mobilise une partie de la mmoire vive, laquelle nest dj
pas trs grande, aussi a-t-on tendance dimensionner la pile au plus juste. Cela
veut dire que, si le programme sexcute normalement, la pile aura assez de place
pour stocker les arguments, les variables locales et les adresses de retour de toutes
les fonctions du plus long enchanement de fonctions possible dans le programme.
Donc, si une fonction en appelle une autre qui son tour en appelle une troisime,
etc. il faut que la pile dispose dassez de place pour empiler toutes les adresses de
retour. Les arguments des fonctions et les variables locales sont galement stocks
Matrisez les microcontrleurs l'aide d'Arduino - C. Valens
Copyright Elektor International Media - ISBN 978-2-86661-190-3

303

enarvuino_14x21LDM.fm Page 333 Lundi, 18. fvrier 2013 2:40 14

Liste des programmes


Chapitre 5

Chapitre 8

Blink 1 . . . . . . . . . . . . . . . . . . . . . . . . . 64
Blink 2 . . . . . . . . . . . . . . . . . . . . . . . . . 65

LCD . . . . . . . . . . . . . . . . . . . . . . . . . . 161
La difference entre write et print . . . . 167
Serial.find . . . . . . . . . . . . . . . . . . . . . 170
read nmea sentence . . . . . . . . . . . . . . 170
read nmea sentence 2 . . . . . . . . . . . . . 173
read nmea sentence 3 . . . . . . . . . . . . . 175
gps inverter . . . . . . . . . . . . . . . . . . . . 184
HP03 temperature & pressure sensor 192
weather3 . . . . . . . . . . . . . . . . . . . . . . 210

Chapitre 6
Key 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Key 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Key 3 . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Key matrix 1 . . . . . . . . . . . . . . . . . . . . 76
Charlieplexing . . . . . . . . . . . . . . . . . . . 78
Key matrix 2 . . . . . . . . . . . . . . . . . . . . 85
Key matrix 3 . . . . . . . . . . . . . . . . . . . . 90
LED matrix 1 . . . . . . . . . . . . . . . . . . . 92
LED matrix 2 . . . . . . . . . . . . . . . . . . . 95
Money game . . . . . . . . . . . . . . . . . . . 102
Toggle . . . . . . . . . . . . . . . . . . . . . . . . 113

Chapitre 7
voltmeter . . . . . . . . . . . . . . . . . . . . . .
multichannel voltmeter . . . . . . . . . . .
dimmer . . . . . . . . . . . . . . . . . . . . . . .
motor test 1 . . . . . . . . . . . . . . . . . . . .
motor test 2 . . . . . . . . . . . . . . . . . . . .
motor test 3 . . . . . . . . . . . . . . . . . . . .
not working PID controller . . . . . . . .
PID controller . . . . . . . . . . . . . . . . . .
misophone . . . . . . . . . . . . . . . . . . . . .
chip thermometer . . . . . . . . . . . . . . .

117
120
123
128
129
130
135
139
147
152

Chapitre 9
DCF77 polling pulse measuring . . . . 224
DCF77 polling pulse measuring 2 . . . 226
DCF77 polling pulse measuring 3 . . . 229
dcf77 transmitter . . . . . . . . . . . . . . . . 242
Guess IR format . . . . . . . . . . . . . . . . . 252
Export IR pulses to SVG file . . . . . . . 260
Decode NEC IR RC protocol . . . . . . 264
Sound detector . . . . . . . . . . . . . . . . . . 279

Chapitre 10
interrupts 1 . . . . . . . . . . . . . . . . . . . . . 288
interrupt 2 . . . . . . . . . . . . . . . . . . . . . 289
interrupt 3 . . . . . . . . . . . . . . . . . . . . . 296
interrupt 4 . . . . . . . . . . . . . . . . . . . . . 298
interrupt 5 . . . . . . . . . . . . . . . . . . . . . 301
interrupt 6 . . . . . . . . . . . . . . . . . . . . . 305
rotary encoder . . . . . . . . . . . . . . . . . . 310
buzzer 1 . . . . . . . . . . . . . . . . . . . . . . . 317
bote musique . . . . . . . . . . . . . . . . . 319
cucaracha . . . . . . . . . . . . . . . . . . . . . . 323
fire detector . . . . . . . . . . . . . . . . . . . . 329

enarvuino_14x21IX.fm Page 341 Lundi, 18. fvrier 2013 10:56 10

Index
!
^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
1-Wire . . . . . . . . . 28, 164, 188, 321, 322
8048 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
8051 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
8052 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

A
propos dArduino . . . . . . . . . . . . . . . 54
AC . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
accs direct la mmoire . . . . . . . . . . 30
accumulateur lithium polymre . . . . 320
actionneur . . . . . . . . . . . . . . . . . . . . . 124
ADC . . . . . . . . . . . . . . . . . . . . . . . . . 115
ADCH . . . . . . . . . . . . . . . . . . . . . . . . 153
ADCL . . . . . . . . . . . . . . . . . . . . . . . . 153
ADCSRA . . . . . . . . . . . . . . . . . . . . . 153
ADCSRB . . . . . . . . . . . . . . . . . . . . . . 153
Add Library . . . . . . . . . . . . . . . . . . . 51
ADMUX . . . . . . . . . . . . . . . . . . . . . . 153
Afficher le dossier des croquis . . . . . . 51
afficheur graphique couleur . . . . . . . 198
Aide pour dbuter . . . . . . . . . . . . . . . . 53
Ajouter bibliothque . . . . . . . . . . . . 51
Ajouter un fichier . . . . . . . . . . . . . . . 51
ALU . . . . . . . . . . . . . . . . . . . . . . . . . . 23
AM . . . . . . . . . . . . . . . . . . . . . . . . . . 237
amplitude modulation . . . . . . . . . . . . 237
analogRead . . . . . . . . . . . . 116, 132, 147
analogReference . . . . . . . . . . . . 116, 121
analog-to-digital converter . . . . . . . . 115
analogWrite . . . . . . . . . . . . 122, 235, 240
analyse de Fourier . . . . . . . . . . . . . . . 237
Andrew Tanenbaum . . . . . . . . . . . . . 157
Android . . . . . . . . . . . . . . . . . . . . . . . . 39

Annuler . . . . . . . . . . . . . . . . . . . . . . . . 49
antenne . . . . . . . . . . . . . . . . . . . . . . . . 238
API . . . . . . . . . . . . . . . . . . . . . . . . 54, 109
Application Programming Interface . . 54
Archiver le croquis . . . . . . . . . . . . . . . 52
Arduino . . . . . . . . . . . . . . . . . . . . . . . . 37
arduino.cc . . . . . . . . . . . . . . . . . . . . . . 39
arguments . . . . . . . . . . . . . . . . . . . . . . 58
ARM CortexM3 . . . . . . . . . . . . . . 38, 41
array . . . . . . . . . . . . . . . . . . . . . . . . . 108
ASCII . . . . . . . . . . . . . . . . . 141, 167, 168
asm . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
assembleur . . . . . . . . . . . . . . . . . . . . . . 31
en ligne . . . . . . . . . . . . . . . . . . . . . 113
asymtrique . . . . . . . . . . . . . . . . . . . . 218
ATmega1280 . . . . . . . . . . . . . . . . . . . . 41
ATmega168 . . . . . . . . . . . . . . . . . . . . . 41
ATmega2560 . . . . . . . . . . . . . . . . . . . . 41
ATmega328 . . . . . . . . . . . . . . . . . . . . . 41
ATmega32U4 . . . . . . . . . . . . . . . . . . . 39
ATmega8 . . . . . . . . . . . . . . . . . . . . . . . 41
Atmel . . . . . . . . . . . . . . . . . . . . . 9, 22, 41
atof . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
atoi . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
atol . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
attachInterrupt . . . . . . . . . . . . . . 297, 300
Augmenter lindentation . . . . . . . . . . . 50
Augustin dHippone . . . . . . . . . . . . . 221
automate . . . . . . . . . . . . . . . . . . . . . . 124
automate fini . . . . . . . . . . . . . . . . . . . 172
automatophones . . . . . . . . . . . . . . . . . 320
avertisseur sonore cinq tons . . . . . . 319
AVR . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

341

enarvuino_14x21IX.fm Page 342 Lundi, 18. fvrier 2013 10:56 10

Index

B
BASIC . . . . . . . . . . . . . . . . . . . . . 31, 270
BCD . . . . . . . . . . . . . . . . . . . . . . . . . . 228
beginTransmission . . . . . . . . . . . . . . 189
Bessel . . . . . . . . . . . . . . . . . . . . . . . . 239
bibliothque . . . . . . . . . . . . . . . . . . . . 160
binary coded decimal . . . . . . . . . . . . 228
biphase . . . . . . . . . . . . . . . . . . . . . . . . 249
bit de parit . . . . . . . . . . . . . . . . . . . . 166
bit-banging . . . . . . . . . . . . . . . . . . . . 199
bitClear . . . . . . . . . . . . . . . . . . . . . . . 275
bit_is_set . . . . . . . . . . . . . . . . . . . . . . 154
bitRead . . . . . . . . . . . . . . . . . . . . . . . . 94
bits
darrt . . . . . . . . . . . . . . . . . . . . . . 163
de dpart . . . . . . . . . . . . . . . . . . . . 163
bitSet . . . . . . . . . . . . . . . . . . . . . . . . . 275
Blink . . . . . . . . . . . . . . . . . . . . . . . . . . 15
BO . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
BOD . . . . . . . . . . . . . . . . . . . . . . . . . 314
boolean . . . . . . . . . . . . . . . . . . . . . . . . 63
boolen . . . . . . . . . . . . . . . . . . . . . . . . 63
bootloader . . . . . . . . . . . . . . . . 33, 41, 56
BOR . . . . . . . . . . . . . . . . . . . . . . . . . . 314
boucle phase asservie . . . . . . . . . . . . 24
bourrage de zros . . . . . . . . . . . . . . . 183
break . . . . . . . . . . . . . . . . . . . . . . . . . 254
brown out . . . . . . . . . . . . . . . . . . . . . . . 26
detector . . . . . . . . . . . . . . . . . . . . . 314
reset . . . . . . . . . . . . . . . . . . . . . . . . 314
bus de communication srielle . . . . . . 28
buzzer . . . . . . . . . . . . . . . . . . . . . . . . 316

C
C, langage . . . . . . . . . . . . . . . . . . . 31, 57
C++ . . . . . . . . . . . . . . . . . . . . . . . . 32, 57
CAN (bus) . . . . . . . . . . . . . . . . . . 28, 164
CAN (convertisseur) . . . . . . . . . . 26, 115

342

capteur
de pression . . . . . . . . . . . . . . . . . . . 189
de temprature . . . . . . . . . . . . . . . . 152
de temprature sans contact . . . . . . 329
capture . . . . . . . . . . . . . . . . . . . . . . . . 284
caractre . . . . . . . . . . . . . . . . . . . . . . . . 62
Carnet de croquis . . . . . . . . . . . . . . . . 47
carte dextension . . . . . . . . . . . . . . . . . 40
case . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
cbi . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
CGPM . . . . . . . . . . . . . . . . . . . . . . . . 221
chane de caractres . . . . . . . . . . . . . . . 63
CHANGE . . . . . . . . . . . . . . . . . . . . . . 300
char . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
chargeur damorage . . . . . . . . 33, 41, 56
charlieplexing . . . . . . . . . . . . . . . . . . . 78
chenillard . . . . . . . . . . . . . . . . . . . . . . . 92
chien de garde . . . . . . . . . . . . . . . 30, 314
Clear Timer on Compare match . . . . 284
CNA (convertisseur) . . . . . . . . . . 27, 122
codage
de Manchester . . . . . . . . . . . . 163, 249
par modulation de position dimpulsion
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
code excutable . . . . . . . . . . . . . . . . . . 32
Coller . . . . . . . . . . . . . . . . . . . . . . . . . . 50
coloration syntaxique . . . . . . . . . . . . . . 64
COM0A0 . . . . . . . . . . . . . . . . . . . . . . 290
comma separated values . . . . . . . . . . 258
commentaires . . . . . . . . . . . . . . . . . . . . 63
imbriqus . . . . . . . . . . . . . . . . . . . . . 64
Commenter/Dcommenter . . . . . . . . . . 50
communication
asynchrone . . . . . . . . . . . . . . . . . . . 162
synchrone . . . . . . . . . . . . . . . . . . . . 164
comparateur analogique . . . . . . . 151, 284
compilateur . . . . . . . . . . . . . . . . . . . . . 32
Confrence gnrale des poids et mesures
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21IX.fm Page 343 Lundi, 18. fvrier 2013 10:56 10

Index
constrain . . . . . . . . . . . . . . . . . . . . . . 143
continue . . . . . . . . . . . . . . . . . . . . . . . 254
contrle de redondance cyclique . . . . 203
conversion de type de donne . . . . . . 118
convertisseur
analogique-numrique . . . . . . . 26, 115
numrique-analogique . . . . . . . 27, 122
Copier en tant quHTML . . . . . . . . . . 50
Copier pour le forum . . . . . . . . . . . . . 50
Couper . . . . . . . . . . . . . . . . . . . . . . . . . 49
CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
CR . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
CRC . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Crer une bibliothque . . . . . . . . . . . 209
croquis . . . . . . . . . . . . . . . . . . . 46, 51, 60
CSV . . . . . . . . . . . . . . . . . . . . . . . . . . 258
CTC . . . . . . . . . . . . . . . . . . . . . . . . . . 284
cyclic redundancy check . . . . . . . . . . 203

D
DAC . . . . . . . . . . . . . . . . . . . . . . . . . 122
Data Direction Register . . . . . . . . . . 110
DCF77 . . . . . . . . . . . . . . . . . . . . . . . . 222
DDR . . . . . . . . . . . . . . . . . . . . . . . . . 110
dbogueur in situ . . . . . . . . . . . . . . . . . 34
dbordement de la pile . . . . . . . . . . . 303
default . . . . . . . . . . . . . . . . . . . . . . . . . 68
delay . . . . . . . . . . . . . . . . . . 64, 132, 234
delayMicroseconds . . . . . . . . . . . . . . 234
Dpannage . . . . . . . . . . . . . . . . . . . . . 53
detachInterrupt . . . . . . . . . . . . . 297, 300
dtecteur
dobscurit . . . . . . . . . . . . . . . . . . . 315
de son . . . . . . . . . . . . . . . . . . . . . . 278
Device Firmware Update . . . . . . . . . . 33
DFU . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
DI . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
DIDR0 . . . . . . . . . . . . . . . . . . . . . . . . 153

DIDR1 . . . . . . . . . . . . . . . . . . . . . . . . 153
DIDR2 . . . . . . . . . . . . . . . . . . . . . . . . 153
Diecimila . . . . . . . . . . . . . . . . . . . . 10, 40
diffrentielle . . . . . . . . . . . . . . . . . . . 135
digitalRead . . . . . . . . . . . . . . . . . . . . . 71
digital-to-analog converter . . . . . . . . 122
digitalWrite . . . . . . . . . . . . . . . . . . 64, 71
diviseur . . . . . . . . . . . . . . . . . . . 235, 241
division
virgule flottante . . . . . . . . . . . . . . 118
dentiers . . . . . . . . . . . . . . . . . . . . . 118
DMA . . . . . . . . . . . . . . . . . . . . . . . . . . 30
DO . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Domenico Scarlatti . . . . . . . . . . . . . . 319
double . . . . . . . . . . . . . . . . . . . . . . . . . 62
do-while . . . . . . . . . . . . . . . . . . . . . 81, 82
DS18B20 . . . . . . . . . . . . . . . . . . . . . . 322
DS18S20 . . . . . . . . . . . . . . . . . . . . . . 322
Due . . . . . . . . . . . . . . . . . . . . . 38, 40, 41
Duemilanove . . . . . . . . . . . . . . . . . . . . 40

E
EDI . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
diteur de liens . . . . . . . . . . . . . . . . . . . 32
EEPROM . . . . . . . . . . . . . . . . . . . . . . . 22
EIA/TIA-232-E . . . . . . . . . . . . . . . . . 164
metteur-rcepteur asynchrone universel
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
endTransmisison . . . . . . . . . . . . . . . . 189
Enregistrer . . . . . . . . . . . . . . . . . . . 46, 48
Enregistrer sous . . . . . . . . . . . . . . . . 48
entre-sortie usage gnral . . . . . . . . 71
Environnement . . . . . . . . . . . . . . . . . . . 53
environnement de dveloppement intgr
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
EPROM . . . . . . . . . . . . . . . . . . . . . . . . 21
Erasable Programmable Read-Only
Memory . . . . . . . . . . . . . . . . . . . . . . 21

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

343

enarvuino_14x21IX.fm Page 344 Lundi, 18. fvrier 2013 10:56 10

Index
escape sequence . . . . . . . . . . . . . . . . 262
ET . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Ethernet . . . . . . . . . . . . . . . . . . . . 28, 164
EUSART . . . . . . . . . . . . . . . . . . . . . . . 29
Exemples . . . . . . . . . . . . . . . . . . . . . . . 47
EXOR . . . . . . . . . . . . . . . . . . . . . . . . 184
exp . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
extensible mark-up language . . . . . . 258
extern . . . . . . . . . . . . . . . . . . . . . 273, 276

F
FALLING . . . . . . . . . . . . . . . . . . . . . . 300
Fast PWM . . . . . . . . . . . . . . . . . . . . . 235
Fermer . . . . . . . . . . . . . . . . . . . . . . . . . 47
filtre
numrique rponse impulsionnelle
infinie . . . . . . . . . . . . . . . . . . . . . . . 138
passe-bande . . . . . . . . . . . . . . . . . . 239
passe-bas . . . . . . . . . . . . . . . . . . . . 138
passe-haut . . . . . . . . . . . . . . . . . . . 138
firmware . . . . . . . . . . . . . . . . . . . . . . . 24
float . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Foire aux questions . . . . . . . . . . . . . . . 54
fonction . . . . . . . . . . . . . . . . . . . . . 58, 79
fondamental . . . . . . . . . . . . . . . . . . . . 237
for . . . . . . . . . . . . . . . . . . . . . . . . . 81, 82
Formatage automatique . . . . . . . . . . . 52
Fortran . . . . . . . . . . . . . . . . . . . . . . . . . 31
France Inter . . . . . . . . . . . . . . . . . . . . 222
Freeduino . . . . . . . . . . . . . . . . . . . . . . . 45
Freescale . . . . . . . . . . . . . . . . . . . . . . 197
frquence dchantillonnage . . . . . . . 132
FTDI . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

G
General Purpose Input Output . . . 26, 71
GGA . . . . . . . . . . . . . . . . . . . . . . . . . 168
goto . . . . . . . . . . . . . . . . . . . . . . . . . . 269

344

GPIO . . . . . . . . . . . . . . . . . . . . . . . 26, 71
GPS . . . . . . . . . . . . . . . . . . . . . . . . . . 168
graphiques vectoriels . . . . . . . . . . . . . 258
Graver la squence dinitialisation . . . 53

H
harmoniques . . . . . . . . . . . . . . . . . . . . 237
HD44780 . . . . . . . . . . . . . . . . . . . . . . 159
Hello World . . . . . . . . . . . . . . . . . . 14, 57
HIGH . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Hitachi . . . . . . . . . . . . . . . . . . . . . . . . 159
Hope RF . . . . . . . . . . . . . . . . . . . . . . . 189
horloge . . . . . . . . . . . . . . . . . . . . . . . . . 24
atomique . . . . . . . . . . . . . . . . . . . . . 221
HP03 . . . . . . . . . . . . . . . . . . . . . . . . . 189
hypot . . . . . . . . . . . . . . . . . . . . . . . . . 144

I
IC . . . . . . . . . . . . . . . . 28, 164, 187, 329
IS . . . . . . . . . . . . . . . . . . . . . 28, 164, 220
ICR . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
ICSP . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
if-else . . . . . . . . . . . . . . . . . . . . . . . 59, 66
IIR . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
imbriquer des interruptions . . . . . . . . 302
Importer bibliothque . . . . . . . . . 51, 52
Imprimer . . . . . . . . . . . . . . . . . . . . . . . 48
In-Circuit Serial Programming . . . . . . 33
indexOf . . . . . . . . . . . . . . . . . . . . . . . . 175
infinite impulse response . . . . . . . . . . 138
Inkscape . . . . . . . . . . . . . . . . . . . . . . . 258
INPUT . . . . . . . . . . . . . . . . . . . . . . . . . 61
Input Capture Register . . . . . . . . . . . 241
INPUT_PULLUP . . . . . . . . . . . . . . 61, 73
In-System Programming . . . . . . . . . . . 33
int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
int8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21IX.fm Page 345 Lundi, 18. fvrier 2013 10:56 10

Index
intgrale . . . . . . . . . . . . . . . . . . . . . . . 135
Intel . . . . . . . . . . . . . . . . . . . . . . . 21, 329
Inter Integrated Circuits . . . . . . . . . . 187
interface de programmation applicative
. . . . . . . . . . . . . . . . . . . . . . . . . 54, 109
interrupt nesting . . . . . . . . . . . . . . . . 302
interrupt service routine . . . . . . . . . . 292
interruptions . . . . . . . . . . . . . . . . 25, 287
interrupts . . . . . . . . . . . . . . . . . . . . . . 297
INTx . . . . . . . . . . . . . . . . . . . . . . . . . 300
IrDA . . . . . . . . . . . . . . . . . . . . . . 28, 164
ISP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
ISR . . . . . . . . . . . . . . . . . . . . . . 273, 292

J
Jean-Baptiste de La Quintinie . . . . . . 109
Joint Test Action Group . . . . . . . . . . . 30
journal lumineux dfilant . . . . . . . . . . 95
JTAG . . . . . . . . . . . . . . . 28, 30, 164, 314

K
kibi . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
klaxon italien . . . . . . . . . . . . . . . . . . . 319

L
langage de balisage extensible . . . . . 258
latitude . . . . . . . . . . . . . . . . . . . . . . . . 175
LCD . . . . . . . . . . . . . . . . . . . . . . . . . . 159
LDR . . . . . . . . . . . . . . . . . . . . . . . . . . 316
LED infrarouge . . . . . . . . . . . . . . . . . 271
Lonardo . . . . . . . . . . . . . . . . . . . . . . . 39
LF . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
light dependent resistor . . . . . . . . . . . 316
Lilypad . . . . . . . . . . . . . . . . . . . . . . . . 39
LIN . . . . . . . . . . . . . . . . . . . . . . . 28, 164
Linker . . . . . . . . . . . . . . . . . . . . . . . . . 32
Linux . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Li-Po . . . . . . . . . . . . . . . . . . . . . . . . . 320
LiquidCrystal . . . . . . . . . . . . . . . . . . . 160
longitude . . . . . . . . . . . . . . . . . . . . . . 175
loop . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
LOW . . . . . . . . . . . . . . . . . . . . . . . 64, 300

M
M2M . . . . . . . . . . . . . . . . . . . . . . . . . 157
MA . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Mac OSX . . . . . . . . . . . . . . . . . . . . . . 13
machine-to-machine . . . . . . . . . . . . . 157
macros . . . . . . . . . . . . . . . . . . . . 291, 327
main . . . . . . . . . . . . . . . . . . . . . . . 60, 315
mark . . . . . . . . . . . . . . . . . . . . . . 165, 272
Math . . . . . . . . . . . . . . . . . . . . . . . . . . 144
math.h . . . . . . . . . . . . . . . . . . . . . . . . 144
Maxim . . . . . . . . . . . . . . . . . . . . 188, 322
MCS-48 . . . . . . . . . . . . . . . . . . . . . . . . 21
MCS-51 . . . . . . . . . . . . . . . . . . . . . . . . 21
MCU . . . . . . . . . . . . . . . . . . . . . . . . . . 21
MCUSR . . . . . . . . . . . . . . . . . . . . . . . 314
Mega . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Mega ADK . . . . . . . . . . . . . . . . . . . . . 39
Mega1280 . . . . . . . . . . . . . . . . . . . . . . 40
Mega2560 . . . . . . . . . . . . . . . . . . . . . . 40
megaAVR . . . . . . . . . . . . . . . . . . . . . . 41
Melexis . . . . . . . . . . . . . . . . . . . . . . . 329
mmoire
flash . . . . . . . . . . . . . . . . . . . . . . . . . 24
morte . . . . . . . . . . . . . . . . . . . . . . . . 21
ROM effaable . . . . . . . . . . . . . . . . 21
vive . . . . . . . . . . . . . . . . . . . . . . . . . 21
zombie . . . . . . . . . . . . . . . . . . . . 22, 24

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

345

enarvuino_14x21IX.fm Page 346 Lundi, 18. fvrier 2013 10:56 10

Index
menu
Aide . . . . . . . . . . . . . . . . . . . . . . . . . 53
Croquis . . . . . . . . . . . . . . . . . . . . . . 51
des onglets . . . . . . . . . . . . . . . . . . . . 54
dition . . . . . . . . . . . . . . . . . . . . . . . 49
Fichier . . . . . . . . . . . . . . . . . . . . . . . 47
Outils . . . . . . . . . . . . . . . . . . . . . . . . 52
mthode . . . . . . . . . . . . . . . . . . . . . . . . 58
micro (-contrleur) . . . . . . . . . . . . . . . 21
Micro (modle de carte) . . . . . . . . . . . 40
Microchip . . . . . . . . . . . . . . . . . . . . . . 22
microcontrleur . . . . . . . . . . . . . . . . . . 21
micrologiciel . . . . . . . . . . . . . . . . . . . . 24
micros . . . . . . . . . . . . . . . . . . . . 224, 234
Microwire . . . . . . . . . . . . . . . . . . 28, 197
Microwire/Plus . . . . . . . . . . . . . . . . . 197
millis . . . . . . . . . . . . . . . . . . 98, 224, 234
Mini . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Mise en page . . . . . . . . . . . . . . . . . . . . 48
MISO . . . . . . . . . . . . . . . . . . . . . . . . . 196
misophonie . . . . . . . . . . . . . . . . . . . . 145
MLI . . . . . . . . . . . . . . . . . . . . . . . 27, 122
phase correcte . . . . . . . . . . . . . . . 235
rapide . . . . . . . . . . . . . . . . . . . . . . . 235
MLX90614 . . . . . . . . . . . . . . . . . . . . 329
modulation
damplitude . . . . . . . . . . . . . . . . . . 237
de largeur dimpulsion . . . . . . . 27, 122
Moniteur srie . . . . . . . . . . . . . . . . . . . 77
Moniteur srie . . . . . . . . . . . . . 46, 53, 77
monome . . . . . . . . . . . . . . . . . . . . . . . . 40
MOSI . . . . . . . . . . . . . . . . . . . . . . . . . 196
Motorola . . . . . . . . . . . . . . . . . . . . . . 197
MSF . . . . . . . . . . . . . . . . . . . . . . . . . . 222
C . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
multiplexeur . . . . . . . . . . . . . . . . . . . . 26
multitche . . . . . . . . . . . . . . . . . . . . . 313
Wire . . . . . . . . . . . . . . . . . . . . . . . . . 197

346

N
NAN . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Nano . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
NEC-1 . . . . . . . . . . . . . . . . . . . . . . . . 263
nested comments . . . . . . . . . . . . . . . . . 64
NMEA0183A . . . . . . . . . . . . . . . . . . 168
NMI . . . . . . . . . . . . . . . . . . . . . . . . . . 298
noInterrupts . . . . . . . . . . . . . . . . . . . . 297
Nokia 6100 . . . . . . . . . . . . . . . . . . . . . 198
nombre
virgule flottante . . . . . . . . . . . . . . . 62
entier . . . . . . . . . . . . . . . . . . . . . . . . 62
NON . . . . . . . . . . . . . . . . . . . . . . . . . . 133
non sign . . . . . . . . . . . . . . . . . . . . . . . 63
NON-ET . . . . . . . . . . . . . . . . . . . . . . 133
non-maskable interrupt . . . . . . . . . . . 298
NON-OU . . . . . . . . . . . . . . . . . . . . . . 133
Not a Number . . . . . . . . . . . . . . . . . . . . 59
noTone . . . . . . . . . . . . . . . . . . . . . . . . 147
Nouveau . . . . . . . . . . . . . . . . . . . . . 46, 47
numrisation . . . . . . . . . . . . . . . . . . . 115

O
OCIE0A . . . . . . . . . . . . . . . . . . . . . . . 291
OCR . . . . . . . . . . . . . . . . . . . . . . . . . . 241
OCR0A . . . . . . . . . . . . . . . . . . . . . . . 291
OCRxA . . . . . . . . . . . . . . . . . . . . . . . 240
Optiboot . . . . . . . . . . . . . . . . . . . . . . . 315
orgue de Barbarie . . . . . . . . . . . . . . . . 320
oscillateur . . . . . . . . . . . . . . . . . . . . . . . 24
OU . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
OU exclusif . . . . . . . . . . . . . . . . 184, 245
OUTPUT . . . . . . . . . . . . . . . . . . . . . . . 61
Output Compare Register . . . . . . . . . 241
Ouvrir . . . . . . . . . . . . . . . . . . . . . . 46, 47

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21IX.fm Page 347 Lundi, 18. fvrier 2013 10:56 10

Index

P
Packet Error Checking . . . . . . . . . . . 329
Pandore . . . . . . . . . . . . . . . . . . . . . . . 332
partie
commande . . . . . . . . . . . . . . . . . . . 124
oprative . . . . . . . . . . . . . . . . . . . . 124
Pascal . . . . . . . . . . . . . . . . . . . . . . . . . 31
PB5 . . . . . . . . . . . . . . . . . . . . . . . . . . 111
PCIE0 . . . . . . . . . . . . . . . . . . . . . . . . 306
PCIFR . . . . . . . . . . . . . . . . . . . . . . . . 306
PCINTx . . . . . . . . . . . . . . . . . . . 300, 304
PCMSK0 . . . . . . . . . . . . . . . . . . . . . . 305
PCMSK1 . . . . . . . . . . . . . . . . . . . . . . 305
PCMSK2 . . . . . . . . . . . . . . . . . . . . . . 305
PCMSKx . . . . . . . . . . . . . . . . . . . . . . 305
PEC . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Phase Correct PWM . . . . . . . . . . . . . 235
photorsistance . . . . . . . . . . . . . . . . . 316
PIC16C84 . . . . . . . . . . . . . . . . . . . . . . 22
PID . . . . . . . . . . . . . . . . . . . . . . . . . . 125
pile (mmoire) . . . . . . . . . . . . . . . . . . 303
pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
change interrupt flag register . . . . 306
change mask . . . . . . . . . . . . . . . . . 305
change . . . . . . . . . . . . . . . . . . . . . . 300
Pindare . . . . . . . . . . . . . . . . . . . . . . . 332
pinMode . . . . . . . . . . . . . . . . . . . . 61, 71
PINx . . . . . . . . . . . . . . . . . . . . . . . . . 111
PLL . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
PMbus . . . . . . . . . . . . . . . . . . . . . . . . 187
pointeurs . . . . . . . . . . . . . . . . . . . . . . 173
pont en H . . . . . . . . . . . . . . . . . . . . . . 127
POR . . . . . . . . . . . . . . . . . . . . . . . . . . 314
port
parallle . . . . . . . . . . . . . . . . . . . . . 158
srie . . . . . . . . . . . . . . . . . . . . . 53, 165
PORTB . . . . . . . . . . . . . . . . . . . . . . . 111
ports . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

PORTx . . . . . . . . . . . . . . . . . . . . . . . . 111
pow . . . . . . . . . . . . . . . . . . . . . . . . . . 143
power-on reset . . . . . . . . . . . . . . . . . . 314
prdiviseur . . . . . . . . . . . . . . . . . . . . . . 29
Prfrences . . . . . . . . . . . . . . . . . . . . . 48
prescaler . . . . . . . . . . . . . . . 29, 235, 241
printf . . . . . . . . . . . . . . . . . . . . . . . . . 150
processeur . . . . . . . . . . . . . . . . . . . 23, 53
Processing . . . . . . . . . . . . . . . . . . . . . . 37
Programmateur . . . . . . . . . . . . . . . . . . 53
programmation in situ . . . . . . . . . . . . . 33
proportionnelle, rponse . . . . . . . . . . 135
prototype dune fonction . . . . . . . . . . 209
pull-down . . . . . . . . . . . . . . . . . . . . . . . 73
pull-up . . . . . . . . . . . . . . . . . . . . . . . . . 73
pulse width modulation . . . . . . . . . . . 122
pulseIn . . . . . . . . . . . . . . . . . . . . 248, 284
PWM . . . . . . . . . . . . . . . . . . . . . . . . . 122

Q
QSPI . . . . . . . . . . . . . . . . . . . . . . . . . 197
quantification . . . . . . . . . . . . . . . . . . . 115
quartz . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Quitter . . . . . . . . . . . . . . . . . . . . . . . . . 49

R
RAM . . . . . . . . . . . . . . . . . . . . . . . . . . 21
random . . . . . . . . . . . . . . . . . . . . 105, 318
Random Access Memory . . . . . . . . . . . 21
randomSeed . . . . . . . . . . . . . . . . 105, 318
rapport signal-bruit . . . . . . . . . . . . . . 255
RAZ . . . . . . . . . . . . . . . . . . . . . . . 26, 314
RC5 . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Read-Modify-Write . . . . . . . . . . . . . . 111
Read-Only Memory . . . . . . . . . . . . . . . 21
Rduire lindentation . . . . . . . . . . . . . . 50
Rfrence . . . . . . . . . . . . . . . . . . . . . . . 54

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

347

enarvuino_14x21IX.fm Page 348 Lundi, 18. fvrier 2013 10:56 10

Index
registre
dcalage . . . . . . . . . . . . . . . 200, 275
de direction de donnes . . . . . . . . . 110
rgulateur
PID . . . . . . . . . . . . . . . . . . . . . . . . . 134
proportionnel intgral driv . . . . . 125
Rparer encodage et recharger . . . . . . 52
rponse indicielle . . . . . . . . . . . . . . . . 125
requestFrom . . . . . . . . . . . . . . . . . . . 189
rseau RC . . . . . . . . . . . . . . . . . . . . . . 24
reset . . . . . . . . . . . . . . . . . . . . . . . 26, 314
rsistances de rappel . . . . . . . . . . . . . . 73
internes . . . . . . . . . . . . . . . . . . . . . . 73
rsonateur . . . . . . . . . . . . . . . . . . . . . . 24
Rtablir . . . . . . . . . . . . . . . . . . . . . . . . 49
retour chariot . . . . . . . . . . . . . . . . . . . 168
return . . . . . . . . . . . . . . . . . . . . . . . . . . 59
RISING . . . . . . . . . . . . . . . . . . . . . . . 300
ROM . . . . . . . . . . . . . . . . . . . . . . . . . . 21
ronfleur . . . . . . . . . . . . . . . . . . . . . . . 315
routine dinterruption . . . . . . . . . . . . 288
RS-232 . . . . . . . . . . . . . . . . . . . . . 28, 164
RS-422 . . . . . . . . . . . . . . . . . . . . . . . . 218
RS-485 . . . . . . . . . . . . . . . . . . . . . . . . 218

S
Saint Augustin . . . . . . . . . . . . . . . . . . 285
SAM3X8E . . . . . . . . . . . . . . . . . . . . . . 41
SATA . . . . . . . . . . . . . . . . . . . . . . . . 158
saut de ligne . . . . . . . . . . . . . . . . . . . . 168
sbi . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
scalable vector graphics . . . . . . . . . . 258
SCK . . . . . . . . . . . . . . . . . . . . . . . . . . 187
SDA . . . . . . . . . . . . . . . . . . . . . . . . . . 187
SDI . . . . . . . . . . . . . . . . . . . . . . . . . . 196
SDO . . . . . . . . . . . . . . . . . . . . . . . . . . 196
seconde (unit de temps) . . . . . . . . . . 221
squence dchappement . . . . . . . . . . 262

348

Serial Monitor . . . . . . . . . . . . . . . . . . . 77
Serial.available . . . . . . . . . . . . . 144, 167
Serial.begin . . . . . . . . . . . . . . . . . 77, 167
Serial.end . . . . . . . . . . . . . . . . . . . . . . 167
Serial.find . . . . . . . . . . . . . . . . . . 169, 172
Serial.parseFloat . . . . . . . . . . . . . . . . 170
Serial.parseInt . . . . . . . . . . . . . . . . . . 170
Serial.peek . . . . . . . . . . . . . . . . . . . . . 144
Serial.print . . . . . . . . . . . . . . . . . 151, 167
Serial.println . . . . . . . . . . . . . . . . 77, 167
Serial.read . . . . . . . . . . . . . . . . . 144, 167
Serial.write . . . . . . . . . . . . . . . . . . . . . 167
setup . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
shield . . . . . . . . . . . . . . . . . . . . . . . 40, 41
SIGNAL . . . . . . . . . . . . . . . . . . . . . . . 291
signal de remise zro . . . . . . . . . 26, 314
SIGNAL(TIMER0_COMPA_vect) . . . 291
SIGNAL(TIMER0_OVF_vect) . . . . . . 289
simulateur de micro . . . . . . . . . . . . . . . 34
SIRCS . . . . . . . . . . . . . . . . . . . . . . . . 263
SISO . . . . . . . . . . . . . . . . . . . . . . . . . . 197
sketch . . . . . . . . . . . . . . . . . . . . 46, 51, 60
SMBus . . . . . . . . . . . . . . . . . . . . 187, 329
somme de contrle . . . . . . . . . . . . . . . 183
space . . . . . . . . . . . . . . . . . . . . . 165, 272
spaghetti code . . . . . . . . . . . . . . . . . . 270
spectre . . . . . . . . . . . . . . . . . . . . . . . . 237
SPI . . . . . . . . . . . . . . . . . . . . 28, 164, 196
sqrt . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
SSI . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
SSP . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
stack . . . . . . . . . . . . . . . . . . . . . . . . . . 303
stack overflow . . . . . . . . . . . . . . . . . . 303
startsWith . . . . . . . . . . . . . . . . . . . . . . 177
static . . . . . . . . . . . . . . . . . . . . . . . . . . 290
strcat . . . . . . . . . . . . . . . . . . . . . . . . . 173
strcmp . . . . . . . . . . . . . . . . . . . . . . . . 173
strcpy . . . . . . . . . . . . . . . . . . . . . . . . . 173

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

enarvuino_14x21IX.fm Page 349 Lundi, 18. fvrier 2013 10:56 10

Index
Stream . . . . . . . . . . . . . . . . . . . . . . . . 178
String . . . . . . . . . . . . . . . . . . . . . . 63, 173
strlen . . . . . . . . . . . . . . . . . . . . . . . . . 173
strstr . . . . . . . . . . . . . . . . . . . . . . . . . 173
struct . . . . . . . . . . . . . . . . . . . . . . . . . 256
substring . . . . . . . . . . . . . . . . . . . . . . 175
SVG . . . . . . . . . . . . . . . . . . . . . . . . . . 258
switch . . . . . . . . . . . . . . . . . . . . . . . . . 68
switch-case-default . . . . . . . . . . . . . . . 68
symtrique . . . . . . . . . . . . . . . . . . . . . 218
System Management Bus . . . . . . . . . . 329
systme
automatis . . . . . . . . . . . . . . . . . . . 124
en boucle ouverte . . . . . . . . . . . . . 125

T
tableaux . . . . . . . . . . . . . . . . . . . . . . . 108
TCCR0A . . . . . . . . . . . . . . . . . . . . . . 290
TCCRxA . . . . . . . . . . . . . . . . . . . . . . 240
TCCRxB . . . . . . . . . . . . . . . . . . . . . . 240
Tlverser . . . . . . . . . . . . . . . . . . . 46, 48
avec un programmateur . . . . . . . . . 48
tension de rfrence . . . . . . . . . . . . . 116
TeraTerm . . . . . . . . . . . . . . . . . . . . . . 232
Texas Instruments . . . . . . . . . . . . . . . . 21
TI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
timeout . . . . . . . . . . . . . . . . . . . . . . . 248
_timer . . . . . . . . . . . . . . . . . . . . . . . . 272
Timer/Counter Control Register . . . . 241
TIMER2_COMPA_vect . . . . . . . . . . . 273
timer2_toggle_count . . . . . . . . . . . . . 273
TMS1802NC . . . . . . . . . . . . . . . . . . . . 21
toggle . . . . . . . . . . . . . . . . . . . . . . . . . 112
toInt . . . . . . . . . . . . . . . . . . . . . . . . . . 178
tone . . . . . . . . . . . . . . . . . . 147, 240, 272
Tone.cpp . . . . . . . . . . . . . . . . . . . . . . 272

touche
fantme . . . . . . . . . . . . . . . . . . . . . . 87
masque . . . . . . . . . . . . . . . . . . . . . . 88
Tout slectionner . . . . . . . . . . . . . . . . . 50
Tre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Trigonometry . . . . . . . . . . . . . . . . . . . 144
Trouver . . . . . . . . . . . . . . . . . . . . . . . . 50
dans la rfrence . . . . . . . . . . . . . . . 54
prcdent . . . . . . . . . . . . . . . . . . . . . 50
prochain . . . . . . . . . . . . . . . . . . . . . . 50
TSOP1736 . . . . . . . . . . . . . . . . . . . . . 251
TSOP34836 . . . . . . . . . . . . . . . . . . . . 251
TTL . . . . . . . . . . . . . . . . . . . . . . . . . . 165
TWI . . . . . . . . . . . . . . . . . . . 28, 187, 329
Two-Wire . . . . . . . . . . . . . . . . . . . . . 188
Interface . . . . . . . . . . . . . . . . . . . . . 187
Type de carte . . . . . . . . . . . . . . . . . . . . 53
typecast . . . . . . . . . . . . . . . . . . . . . . . 118
typedef . . . . . . . . . . . . . . . . . . . . . . . . 257

U
UAL . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
UART . . . . . . . . . . . . . . . . . . . . . 29, 166
uC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
UFm . . . . . . . . . . . . . . . . . . . . . . . . . . 187
uint32 . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Ultra Fast-mode . . . . . . . . . . . . . . . . 187
undefined reference . . . . . . . . . . . 60, 273
union . . . . . . . . . . . . . . . . . . . . . . . . . 256
unit
arithmtique et logique . . . . . . . . . . 23
centrale de traitement . . . . . . . . . . . . 23
Universal Asynchronous Receiver/
Transmitter . . . . . . . . . . . . . . . . . . 166
Uno . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
unsigned . . . . . . . . . . . . . . . . . . . . . . . . 63
USART . . . . . . . . . . . . . . . . . . . . 29, 166
USART0_RX_vect . . . . . . . . . . . . . . . 292
USART0_UDRE_vect . . . . . . . . . . . . 292

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3

349

enarvuino_14x21IX.fm Page 350 Lundi, 18. fvrier 2013 10:56 10

Index
USB . . . . . . . . . . . . . . . . . . . . . . . 28, 164
Utiliser la slection pour trouver . . . . 50

V
variable
globale . . . . . . . . . . . . . . . . . . . . . . . 62
locale . . . . . . . . . . . . . . . . . . . . . . . . 62
vecteurs . . . . . . . . . . . . . . . . . . . . . . . 288
Vrifier . . . . . . . . . . . . . . . . . . . . . . . . 46
Vrifier / Compiler . . . . . . . . . . . . . . . 51
Vishay . . . . . . . . . . . . . . . . . . . . . . . . 251
Visiter Arduino.cc . . . . . . . . . . . . . . . . 54
void . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
volatile . . . . . . . . . . . . . . . . . . . . . . . . 276

W
watchdog . . . . . . . . . . . . . . . . . . . 30, 314
Waveform Generation Mode . . . . . . . 241
wearable . . . . . . . . . . . . . . . . . . . . . . . 40
WGM . . . . . . . . . . . . . . . . . . . . . . . . . 241
WGM00 . . . . . . . . . . . . . . . . . . . . . . . 290
while . . . . . . . . . . . . . . . . . . . . . . . 81, 82
Windows Vista . . . . . . . . . . . . . . . . . . 13
Windows7 . . . . . . . . . . . . . . . . . . . . . . 13

350

WindowsXP . . . . . . . . . . . . . . . . . . . . 12
Wire . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Wiring . . . . . . . . . . . . . . . . . . . . . . . . . 37
WiringS . . . . . . . . . . . . . . . . . . . . . . . . 38
wiring.c . . . . . . . . . . . . . . . . . . . 289, 290
wiring_analog.c . . . . . . . . . . . . . . . . . 152
www.arduino.cc . . . . . . . . . . . . . . . . 9, 37
www.freeduino.org . . . . . . . . . . . . . . . 45
www.ftdichip.com . . . . . . . . . . . . . . . . 14
www.inkscape.org . . . . . . . . . . . . . . . 258
www.misophonia-uk.org . . . . . . . . . . 145
www.monome.org . . . . . . . . . . . . . . . . 40
www.polyvalens.com . . . . . . . . . . . . . . 1
www.processing.org . . . . . . . . . . . . . . 37
www.wiring.org.co . . . . . . . . . . . . . . . 37

X
XML . . . . . . . . . . . . . . . . . . . . . . . . . 258

Z
zero padding . . . . . . . . . . . . . . . . . . . 183
Ziegler-Nichols . . . . . . . . . . . . . 125, 138

Matrisez les microcontrleurs l'aide d'Arduino - C. Valens


Copyright Elektor International Media - ISBN 978-2-86661-190-3