La boîte à outils
Arduino
120 techniques pour réussir vos projets
Michael Margolis
Dunod
Avant-proposIX
1 ¤ Communications série1
1.1 Envoi des informations de débogage de l'Arduino à l'ordinateur6
1.2 Envoi de texte mis en forme et de données numériques à partir de l'Arduino10
1.3 Réception de données série sur l'Arduino13
1.4 Envoi à partir de l'Arduino de plusieurs champs texte dans un message unique18
1.5 Réception dans l'Arduino de plusieurs champs texte dans un message unique23
1.6 Envoi de données binaires à partir de l'Arduino27
1.7 Réception sur l'ordinateur de données binaires à partir de l'Arduino31
1.8 Envoi de données binaires à partir de Processing vers l'Arduino33
1.9 Envoi de la valeur de plusieurs broches de l'Arduino35
1.10 Comment déplacer le curseur de la souris sur un PC ou un Mac39
1.11 Contrôle de Google Earth avec l'Arduino43
1.12 Journalisation des données de l'Arduino dans un fichier sur l'ordinateur48
1.13 Envoi de données sur deux périphériques série en même temps51
1.14 Réception de données série à partir de deux périphériques en même temps54
1.15 Paramétrage de Processing sur l'ordinateur pour envoyer et recevoir des données série59
2 ¤ Entrées simples analogiques et numériques61
2.1 Utilisation d'un interrupteur sans résistances externes64
2.2 Déterminer pendant combien de temps on appuie sur un interrupteur66
2.3 Lecture de plus de six entrées analogiques71
2.4 Affichage des tensions jusqu'à 5 volts74
2.5 Réagir aux changements de tension76
2.6 Mesurer des tensions de plus de 5 volts (réducteurs de tension)78
3 ¤ Capteurs81
3.1 Détection de mouvement83
3.2 Détection de lumière85
3.3 Détection du mouvement (intégration de détecteurs infrarouges passifs)87
3.4 Mesurer la distance89
3.5 Mesurer la distance avec précision93
3.6 Détecter un son97
3.7 Lecture d'étiquettes RFID100
3.8 Suivi de mouvement rotatif103
3.9 Suivi du mouvement de plusieurs encodeurs rotatifs106
3.10 Suivi du mouvement rotatif dans un sketch occupé à d'autres tâches108
3.11 Détecter une rotation à l'aide d'un gyroscope111
3.12 Détection de la direction115
3.13 Récupération de l'entrée d'une manette de jeu (PlayStation)120
3.14 Mesurer la température122
3.15 Obtenir ses coordonnées GPS125
4 ¤ Sortie visuelle131
4.1 Ajustement de la couleur d'une LED135
4.2 Montage en série de plusieurs LED pour produire des effets visuels138
4.3 Contrôle d'une matrice de LED en utilisant les registres à décalage MAX72xx139
4.4 Augmentation du nombre de sorties analogiques avec les puces d'extension PWM (TLC5940)142
4.5 Contrôle d'une matrice de LED grâce au multiplexage145
4.6 Afficher des images sur une matrice de LED148
4.7 Contrôle d'une matrice de LED par la technique de Charlieplexing152
5 ¤ Sortie physique159
5.1 Contrôle d'un ou deux servos avec un potentiomètre ou un capteur162
5.2 Contrôle de servos à l'aide de commandes exécutées sur un ordinateur163
5.3 Piloter un moteur sans balais (avec un régulateur de vitesse)165
5.4 Faire vibrer un objet166
5.5 Utilisation de capteurs pour contrôler la direction et la vitesse de moteurs à balais (L293 H-Bridge)169
5.6 Pilotage d'un moteur pas-à-pas bipolaire175
5.7 Pilotage d'un moteur pas-à-pas bipolaire (avec la carte EasyDriver)177
6 ¤ Sortie audio181
6.1 Jouer des notes183
6.2 Jouer un simple mélodie185
6.3 Génération de plusieurs notes à la fois187
6.4 Génération de notes et baisse de l'intensité d'une LED189
6.5 Jouer un fichier WAV192
6.6 Contrôle d'un périphérique MIDI195
6.7 Réalisation d'un synthétiseur audio198
7 ¤ Contrôle distant d'appareils externes201
7.1 Réagir à une télécommande infrarouge202
7.2 Décodage des signaux d'une télécommande infrarouge205
7.3 Imitation de signaux de commande à distance208
7.4 Contrôle d'un appareil photo numérique211
8 ¤ Afficheurs215
8.1 Mise en forme du texte216
8.2 Activation et désactivation du curseur et de l'affichage218
8.3 Faire défiler du texte220
8.4 Affichage de symboles spéciaux223
8.5 Création de caractères personnalisés225
8.6 Affichage de symboles plus grands qu'un seul caractère227
8.7 Affichage de pixels plus petits qu'un seul caractère230
8.8 Connexion et usage d'un afficheur graphique LCD232
8.9 Création de bitmaps à utiliser avec un afficheur graphique327
8.10 Affichage de texte sur un téléviseur238
9 ¤ Heure et dates245
9.1 Création de temps d'attente245
9.2 Utilisation de millis pour déterminer la durée246
9.3 Mesurer plus précisément la durée d'une impulsion250
9.4 Utilisation de l'Arduino en tant qu'horloge252
9.5 Création d'une alarme pour appeler périodiquement une fonction260
9.6 Utilisation d'une horloge temps réel264
10 ¤ Communication avec I2C et SPI269
10.1 Contrôle d'une LED RGB avec un module BlinkM273
10.2 Utilisation de l'accéléromètre du Nunchuck Wii277
10.3 Interfaçage avec une horloge externe temps réel282
10.4 Lecture d'une température avec un thermomètre numérique284
10.5 Intégration d'un expandeur de port I2C289
10.6 Communication entre plusieurs cartes Arduino291
10.7 Piloter quatre LED 7 segments avec seulement deux fils293
11 ¤ Communication sans fil299
11.1 Envoi de messages à l'aide de modules sans fil bon marché299
11.2 Connexion d'un Arduino à un réseau de ZigBee ou à un réseau 802.15.4304
11.3 Envoi d'un message à un XBee particulier312
11.4 Envoi de données de capteur entre des XBee315
11.5 Activation d'un actionneur connecté à un XBee320
11.6 Envoi de messages à l'aide d'un émetteur-récepteur bon marché325
12 ¤ Ethernet et mise en réseau331
12.1 Installation du shield Ethernet333
12.2 Obtenir son adresse IP automatiquement335
12.3 Résolution de noms d'hôtes en adresses IP (DNS)337
12.4 Requêter des données à partir d'un serveur web339
12.5 Requête de données à partir d'un serveur web utilisant XML342
12.6 Envoi de messages Twitter345
12.7 Envoi et réception d'un simple message (UDP)348
12.8 Obtention de l'heure à partir d'un serveur de temps Internet354
13 ¤ Utilisation, modification et création de bibliothèques361
13.1 Utilisation des bibliothèques intégrées361
13.2 Installation des bibliothèques tierces363
13.3 Modification d'une bibliothèque364
13.4 Création de votre propre bibliothèque368
13.5 Création d'une bibliothèque qui utilise d'autres bibliothèques375
14 ¤ Codage avancé et gestion de la mémoire381
14.1 Comprendre le processus de génération du code de l'Arduino383
14.2 Déterminer la quantité d'espace libre et la quantité consommée de RAM385
14.3 Stockage et récupération des valeurs numériques dans la mémoire du programme387
14.4 Stockage et récupération des chaînes de caractères dans la mémoire du programme391
14.5 Utilisation de (...)define et de const à la place d'entiers393
14.6 Utilisation de la compilation conditionnelle394
15 ¤ Utilisation de la puce de contrôleur397
15.1 Stockage des données dans la mémoire permanente de l'EEPROM401
15.2 Utilisation des interruptions matérielles404
15.3 Paramétrage de la durée du timer407
15.4 Paramétrage de la largeur d'impulsion d'un timer et de sa durée410
15.5 Création d'un générateur d'impulsions413
15.6 Modification de la fréquence PWM d'un timer416
15.7 Comptage des impulsions418
15.8 Mesurer les impulsions plus précisément420
15.9 Mesurer rapidement les valeurs analogiques423
15.10 Réduire la décharge des piles424
15.11 Initialisation rapide des broches numériques426
Annexes431
A. Composants électroniques431
B. Utilisation des schémas de montage et des notices techniques434
C. Montage et connexion des circuits440
D. Astuces pour le débogage des logiciels443
E. Astuces pour le dépannage des problèmes matériels446
F. Broches analogiques et numériques448
Index453