Vous êtes sur la page 1sur 37

Atelier Arduino

Initiation la mise en oeuvre matrielle et logicielle de lArduino


novembre 2006

Centre de Ressources Art Sensitif http://www.craslab.org http://www.artsens.org


Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Sommaire
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Prsentation de lArduino Description du projet Arduino Tlchargement et installation du logiciel Conguration du port srie-USB Interface du logiciel Arduino et fonctionnement dun programme Apprendre programmer un fonctionnement autonome Structure dun programme Introduction la syntaxe Arduino Pas--pas: Introduction Pas--pas: Dnition des variables Pas--pas: Conguration logicielle de la carte Pas--pas: Programmation des interactions Pas--pas: Finitions Pas--pas: Test et chargement du programme sur la carte Pas--pas: Montage des composants Syntaxe du langage Arduino Syntaxe du langage Arduino suite Librairies additionnelles Un peu dlectronique interactive: prcautions Equipement pour llectronique interactive Electronique interactive : reconnaitre les composants 1 Electronique interactive : reconnaitre les composants 2 Electronique interactive : reconnaitre les composants 3 Electronique interactive : reconnaitre les composants 4 25. Alimenter lArduino 26. Quelques montages avec lArduino 27. Quelques schmas exprimenter 28. Montage dun capteur rsistif 29. Montage dinterrupteurs et bouton-poussoirs 30. Exercices non corrigs 1 31. Exercices non corrigs 2 32. Le programme du montage de latelier 33. Squiper en composants 34. Lexique Anglais technique/ Franais 35. Ressources, remerciements, contact.

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Prsentation de lArduino LArduino est une carte lectronique en Matriel Libre pour la cration artistique interactive. Elle peut servir:
1/ pour des dispositifs interactifs autonomes simples 2/ comme interface entre capteurs/actionneurs et ordinateur 3/ comme programmateur de certains microcontrleurs.

lArduino mini

lArduino USB

Le projet Le projet Arduino comprend la fois le dveloppement matriel de cette carte, mais aussi le dveloppement de son environnement de programmation, adaptation du logiciel de programmation pour la carte Wiring, luimme construit sur le Logiciel Libre de gestion dvnements multimdia interactifs Processing (http:// www.processing.org ). LArduino nest cependant pas exclusivement lie Processing, et peut tre utilise en fonctionnement pilot avec la quasi totalit des logiciels de gestion dvnements multimdia interactifs. LArduino peut galement tre utilise comme carte de programmation pour des microcontrleurs AVR ( http://fr.wikipedia.org/wiki/AVR ) utilisables dans dautres montages lectroniques autonomes ou pilots. Pour les utilisateurs chevronns, la carte peut galement tre programme en langage AVR-C. La licence LArduino est un Logiciel Libre et Matriel Libre sous license Creative Commons paternit, non commercial et licence contaminante, disponible ici : http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr : toute libert est permise qui voudrait faire voluer le matriel ou la plateforme de programmation dans le respect de la licence. Le site officiel du projet Arduino est http://www.arduino.cc Technologie LArduino est une carte base sur un microcontrleur (mini-ordinateur) Atmel ATMEGA8 ou ATMEGA168. Elle dispose dans sa version de base de 1 Ko de mmoire vive, et 8Ko de mmoire flash pour stocker ses programmes. Elle peut tre connecte 13 entres ou sorties numriques, dont 3 PWM (pouvant donner 3 sorties analogiques : cf http://fr.wikipedia.org/wiki/PWM) et 6 entres analogiques convertissant en 10 bit. Dans la version la plus courante, la communication avec lordinateur se fait par un port USB. Il existe plusieurs versions de lArduino, dont une version miniaturise, et dautres projets sont galement en gestation. La carte dispose dun logiciel systme interne (modifiable) et des programmes utilisateur.
Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Version USB
LED jaune de test Trou de xation par vis (xer sur un support non conducteur)

Rfrence analogique (AREF) Masse des connecteurs numriques (GND)

Description de la carte
Port Srie In/out RX TX (supprime une entre-sortie numrique si utilis)

13 entres/sorties numriques numrotes de 1 13 LED verte tmoin dalimentation Port USB: pour le transport des donnes et pour lalimentation lectrique

Bouton de rinitialisation (reset)

3 broches, avec un cavalier de slection dalimentation: -cavalier sur les deux broches du haut: alimentation par le port USB, comme sur cette photo -cavalier sur les deux broches du bas si alimentation par connecteur cidessous

Connecteurs pour le tlchargement du systme dexploitation du microcontrleur

Microcontrleur

Trou de xation par vis (xer sur un support non conducteur)

Connecteur dalimentation de lArduino (si besoin) 9v 12 V Connecteur 2,1 mm avec le + au centre courant continu (DC)

2 LEDs jaunes ou vertes, actives lors dun tlchargement de programme 3 connecteurs numriques pouvant galement tre utiliss en gnrateurs dimpulsions (par ex: sortie analogique avec montage spcique PWM numrots de 0 2 )

6 entres analogiques numrotes de 0 5 Masse (2 connecteurs) (GND) Source 9V faible puissance pour alimenter des montages divers

Source 5V faible puissance pour alimenter des montages divers comme des capteurs 0-5 V par exemple

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Avant premire utilisation de l Arduino modle USB

Tlchargement du logiciel et conguration de lordinateur:


Sur MacOSX -Tlcharger la version Mac PPC ou Intel du logiciel Arduino ici : http://www.arduino.cc/en/ Main/Software 30 Mo environ -Installer le logiciel Arduino dans le dossier Applications -Installer le driver de la carte fourni dans le dossier Arduino (puis redmarrage) -Glisser dposer le script macosx_setup.command sur le logiciel terminal (qui est dans le dossier Applications/ Utilitaires, rpondre Y , cest dire Yes, la question qui se pose. Quitter le terminal. -Et voil ! la carte est prte accueillir un programme Utilisateur Sur Windows -Tlcharger la version Windows du logiciel Arduino ici : http://www.arduino.cc/en/Main/ Software 50 Mo environ -Installer le logiciel -Dzipper le pilote FTDI USB Drivers.zip -Brancher lArduino et pointer linstalleur Windows vers le pilote -Et voil ! la carte est prte accueillir un programme Utilisateur Sur Linux -Tlcharger les sources du logiciel Arduino ici : http://www.arduino.cc/en/Main/Software 4 Mo environ -Se diriger ici http://www.arduino.cc/en/Main/FAQ#linux pour les conseils de compilation sur les diffrentes plateformes Linux

Conguration du logiciel Arduino pour une Arduino USB

Dsigner le bon port Srie (USB-Srie)

Sur MacOSX

Sur Windows

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Le logiciel:

Le logiciel Arduino

Cest un logiciel de programmation par code, code qui contient une cinquantaine de commandes diffrentes. A louverture, linterface visuelle du logiciel ressemble ceci: des boutons de commande en haut, une page blanche vierge, une bande noire en bas

Bouton :Vrication du programme aprs criture = compilation

Mise en oeuvre de lenvironnement Arduino:


-On conoit dabord un programme avec le logiciel Arduino -On vrie ce programme avec le logiciel (compilation) -Des messages derreur apparaissent ventuellement...on corrige puis vrie nouveau... -On enlve le prcdent programme sur la carte Arduino ( Bouton rinitialisation) -On envoie ce programme sur la carte Arduino dans les 5 secondes qui suivent linitialisation -Lexcution du programme sur la carte est automatique quelques secondes plus tard ou ses prochains branchements sur une alimentation lectrique ( Alim 9/12V ou port USB).
Bouton: Envoi du programme vers la carte (aprs rinitialisation de la carte)

Zone dcriture du programme

zone des messages derreur ou autres envoys par le programme

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Apprendre programmer avec Arduino

Les deux pages suivantes vont tre bases sur un exemple simple de programmation : faire clignoter une led. - On verra tout dabord quelle est la structure gnrale dun programme - On verra sur la page suivante la composition dtaille de ce mme programme, en expliquant dja quelques mots de la syntaxe Arduino

Programmer avec Arduino


Un programme utilisateur Arduino est une suite dinstructions lmentaires sous forme textuelle, ligne par ligne. La carte lit puis effectue les instructions les unes aprs les autres, dans lordre dni par les lignes de code.
Commentaires

Structure d'un programme


Il y a trois phases conscutives:
Commentaires multilignes pour se souvenir du patch ==>

1/La dnition des constantes et des variables

2/La conguration des entres et sorties

void setup()

3/La programmation des interactions et comportements

void loop()

Une fois la dernire ligne excute, la carte revient au dbut de la troisime phase et recommence sa lecture et son excution des instructions successives. Et ainsi de suite. Cette boucle se droule des milliers de fois par seconde et anime la carte.
Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Introduction la syntaxe des commandes Arduino


La cinquantaine dlments de la syntaxe Arduino est visible ici http://www.arduino.cc/en/Reference/HomePage ainsi qu partir du document index.html ( dans le dossier Reference que vous avez tlcharg avec Arduino), galement accessible dans le menu Aide du logiciel. Revoyons dun peu plus prs le programme de la page prcdente, qui sert faire clignoter une LED partir dune sortie numrique:

Commentaires Toujours crire des commentaires sur le programme: soit en multiligne, en crivant entre des /****/, soit sur une ligne de code en se sparant du code avec // Dnition des variables: Pour notre montage, on va utiliser une sortie numrique de la carte, qui est par exemple la 13 me sortie numrique. Cette variable doit tre dnie et nomme ici: on lui donne un nom arbitraire BrocheLED . Le mot de la syntaxe est pour dsigner un nombre entier est int Conguration des entres-sorties void setup(): Les broches numriques de lArduino peuvent aussi bien tre congures en entres numriques ou en sorties numriques. Ici on va congurer BrocheLED en sortie. pinMode ( nom, tat) est une des quatre fonctions relatives aux entres-sorties numriques. Programmation des interactions void loop(): Dans cette boucle, on dnit les oprations effectuer, dans lordre: digitalWrite ( nom, tat) est une autre des quatre fonctions relatives aux entres-sorties numriques.
deux autres instruction Chaque ligne dinstruction est termine par un point virgule Ne pas oublier les accolades, qui encadrent la boucle.

(Syntaxe en marron, paramtres utilisateur en vert) /* Ce programme fait clignoter une LED branche sur la broche 13 * et fait galement clignoter la diode de test de la carte */

int BrocheLED = 13;


utiliser

// Dnition de la valeur 13 et du nom de la broche

void setup() { pinMode(BrocheLED, OUTPUT); sortie }

// congure BrocheLED comme une

delay(temps en millisecondes) est la commande dattente entre

void loop() { digitalWrite(BrocheLED, HIGH); // met la sortie num. l'tat haut (led allume) delay(3000); // attente de 3 secondes digitalWrite(BrocheLED, LOW); // met la sortie num. l'tat bas (led teinte) delay(1000); // attente de 1 seconde }

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Pas--pas dune programmation en 5 tapes


Thme: une chaine capteur ==> actionneur
En rajoutant un capteur de luminosit sur le programme prcdent, on voudrait faire varier la vitesse de clignotement. Construisons le programme tape par tape.

1/ Dfinition des variables 2/ Configuration logicielle du matriel 3/ Programmation des interactions 4/ Finitions 5/ Test et tlchargement 6/ Montage

Pas pas:
Quest ce quune variable ? Une variable est un espace de stockage nomm qui permet de stocker une valeur utilisable par la suite dans la boucle dun programme. Une variable peut aussi bien reprsenter des donnes lues ou envoyes sur un des ports analogiques ou numriques, une tape de calcul pour associer ou traiter des donnes, que le numro physique de ces entres ou sorties sur la carte. Une variable nest donc pas exclusivement un paramtre variant dans le programme.

1/ Dfinition des variables

Pour composer un programme ex-nihilo, il est ncessaire de dfinir toutes les composantes dentre et de sortie qui vont affecter le montage matriel et les calculs effectuer. Chaque entre et chaque sortie sera une variable.

Exemple:

Si on a un capteur ( une cellule photo-lectrique qui capte les variations de lumire par exemple) branch une entre de lArduino, et un actionneur ( une LED ) branch une sortie lArduino, et si on veut que la valeur de luminosit change la valeur de lintervalle de clignotement de la LED, alors on a 2 variables stables pour la dfinition du matriel et, en thorie, 2 variables pour les calculs dclarer en dbut de programme. En thorie seulement, car on va se servir directement de la valeur issue du capteur pour dfinir la valeur de lintervalle de temps de dure dextinction et dure dallumage. On a donc besoin que de trois variables en tout. On va leur donner des noms arbitraires mais prcis afin de bien les reconnatre dans le programme.
Le montage, ici ralis sur une plaque dexprimentation spcifique que lon peut fixer sur lArduino Matriel: -cellule photo-electrique -LED -2 rsistances on verra ce montage en dtail plus loin dans le livret

Au dbut de notre programme:

(Syntaxe en marron, paramtres utilisateur en vert)

Le code ci-dessous dclare (et dnomme arbitrairement) la variable capteur1, puis lui affecte (par exemple) le numro de l'entre analogique numro 0. (LArduino possde 6 entres analogiques numrotes de 0 5) :
int capteur1 = 0; // dclaration de la identifiant le portanalogique 0 de la carte variable

La ligne ci-dessous dclare (et dnomme arbitrairement) la variable LED1, puis lui affecte (par exemple) le numro de la sortie numrique numro 13 . (LArduino possde 13 entres ou sorties numriques numrotes de 1 13) :
int LED1 = 13; // dclaration de la variable identifiant le autre port numrique 13 de la carte

La ligne suivante dclare (et dnomme arbitrairement) la variable qui correspond la valeur de luminosit envoye par le capteur. De plus, sa premire valeur lallumage de la carte sera (arbitrairement) 0 :
int lum1 = 0; // dclaration de la variable identifiant la valeur de la luminosit du capteur 1

Nos trois variables sont maintenant dclares et dfinies, passons la configuration des entres-sorties de la carte.
Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Pas pas:

Rappel des premires lignes du programme:

2/ Configuration logicielle du matriel (Syntaxe en marron, paramtres utilisateur en vert)

int capteur1 = 0; // variable identifiant le port ana. 0 de la carte int LED1 = 13; // variable identifiant le port num. 13 de la carte int lum1 = 0; // variable identifiant la valeur de la luminosit du capteur 1

2/ Configuration du matriel ( entres et sorties )


Pour ce montage, il ny a quune broche configurer: la broche numrique sur laquelle on va brancher la LED ( car elle pourrait tre aussi bien configure en sortie ou en entre). Ici, on va configurer cette broche numrique en sortie, car la LED est un actionneur. La broche dentre analogique pour le capteur nest pas configurer, car la carte Arduino possde 6 entres analogiques qui ne font que cela. aprs le void setup(), qui prcise quon est ltape de configuration, on dfinit donc ltat de la broche 13 :

void setup() { pinMode(LED1, OUTPUT); }

// congure la broche 13 comme une sortie

et on ferme la phase de configuration par une accolade ( touche clavier alt -parenthse)

On peut maintenant passer la boucle, cest dire le coeur du programme, qui dfinit les actions effectuer avec ces variables.
Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Pas pas:

Rappel des premires lignes du programme:

(Syntaxe en marron, paramtres utilisateur en vert)

3/ Programmation des interactions

int capteur1 = 0; // variable identifiant un port ana. 0 de la carte int LED1 = 13; // variable identifiant le port num. 13 de la carte int lum1 = 0; // variable identifiant la valeur de la luminosit du capteur 1 void setup() { pinMode(LED1, OUTPUT); }

// configure la broche 13 comme une sortie

3/ Programmation de linteraction
! ! ! ! ! ! !
}

On indique maintenant quon cre une boucle avec void loop() {

Puis on effectue la premire opration: lire la valeur du capteur = lire la variable lum1 identifiant la valeur de luminosit lum1 = analogRead( capteur1); On peut maintenant allumer la LED digitalWrite(LED1, HIGH); On patiente un certain temps: en fonction de la valeur de la variable luminosit lum1 delay(lum1); On peut maintenant teindre la LED digitalWrite(LED1, LOW); On patiente un certain temps: en fonction de la valeur de la variable luminosit lum1 delay(lum1); On peut maintenant boucler, avec une accolade, cest--dire faire remonter automatiquement au dbut de la boucle pour lire la nouvelle valeur du capteur et ainsi de suite...jusqu ce quon teigne lArduino.

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Pas pas:

4/ Finitions
Notre programme est termin, terminons les commentaires si cela nest pas dja fait
(Syntaxe en marron, paramtres utilisateur en vert) /* Ce programme fait clignoter une LED branche sur la broche 13 * avec une vitesse de clignotement proportionnelle lclairage ambiant * capt par une cellule photo-lectrique. * JNM, 2006, Centre de Ressources Art Sensitif. */

int capteur1 = 0; // variable identifiant un port ana. 0 de la carte int LED1 = 13; // variable identifiant le port num. 13 de la carte int lum1 = 0; // variable identifiant la valeur de la luminosit du capteur 1 void setup() { pinMode(LED1, OUTPUT); }

// configure la broche 13 comme une sortie

void loop() { lum1 = analogRead( capteur1); // lire la donne capteur digitalWrite(LED1, HIGH); // allumer la LED 1 delay(lum1); // attendre pendant la valeur donne par le capteur en millisecondes digitalWrite(LED1, LOW); // teindre la LED 1 delay(lum1); // attendre pendant la mme valeur }

-Vrifions maintenant quun point-virgule finit bien chaque ligne de code, que les espaces soient bien placs -Testons le programme sur le logiciel, avant de le transfrer sur la carte:
Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Pas pas:
/* Ce programme fait clignoter une LED branche sur la broche 13 * avec une vitesse de clignotement proportionnelle lclairage ambiant * capt par une cellule photo-lectrique. * JNM, Centre de Ressources Art Sensitif. */
int capteur1 = 0; // variable identifiant un port ana. 0 de la carte int LED1 = 13; // variable identifiant le port num. 13 de la carte int lumT = 0; // variable identifiant la valeur de la luminosit du capteur 1 void setup() { pinMode(LED1, OUTPUT); sortie }

5/ Test et tlchargement
Vrifier

// configure la broche 13 comme une

void loop() { lum1 = analogRead( capteur1); // lire la donne capteur digitalWrite(LED1, HIGH); // allumer la LED 1 delay(lum1); // attendre pendant la valeur donne par le capteur en millisecondes digitalWrite(LED1, LOW); // teindre la LED 1 delay(lum1); // attendre pendant la mme valeur }

Sil ny a pas derreurs on verra safficher: done compiling, suivi de la taille du programme.

Tlcharger Et enfin, tlcharger le programme sur lArduino: attention, vous avez 5 secondes aprs lappui sur le bouton de r-initialisation pour cliquer sur le bouton Upload !

On peut sauver le fichier sur lordinateur, puis appuyer sur le bouton de r-initialisation de la carte, ci-dessous.

R-initialiser
Et voil ! les deux petites LEDs TX RX sur la carte clignotent pendant le chargement, puis, quelques secondes plus tard, le programme se met en route.....jusqu ce quon teigne la carte...
Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Pas pas:
Le montage du tutoriel : Ce programme fait clignoter une LED branche sur la broche 13

6/ Montage des composants

avec une vitesse de clignotement proportionnelle lclairage ambiant capt par une cellule photo-lectrique.
Matriel :une LED, une cellule photolectrique, du cable, deux rsistances ( appairer en fonction de la cellule et de la LED)...

Ana 0

Masse (GND)

5v

Num13

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Masse (GND)

Syntaxe du langage Arduino


Voir la page daccueil du document rfrences (menu Aide du logiciel) , qui renvoie vers les explications de chaque commande de la syntaxe Arduino et dont voici la table des matires. Chaque instruction est suivie de sa traduction, entre-parenthses et en noir.

Commandes de structure du programme


Structure gnrale void setup() (configuration-prparation) void loop() (excution)

Variables
Variables char (variable caractre) int (variable nombre entier) long (variable nombre entier de ts grande taille) string (variable chaine de caractres) array (tableau de variables)

Contrle et conditions if (si...) if...else (si...alors...) for (pour...) switch case (dans le cas o...) while (pendant que ...) Oprations de comparaison == (quivalent ) != (diffrent de) < (infrieur ) > (suprieur ) <= (infrieur ou gal ) >= (suprieur ou gal )

Niveaux logiques des connecteurs numriques HIGH (tat 1) LOW (tat 0) INPUT (configur en entre) OUTPUT (configur en sortie)

Fonctions
Entres-sorties numriques pinMode(broche, tat) (configuration des broches) digitalWrite(broche, tat) (crire un tat sur une broche num.) digitalRead(broche) (lire un tat sur une broche num.) unsigned long pulseIn(broche, tat) (lire une impulsion sur une broche num.) Entres analogiques int analogRead(broche) (lire la valeur dune broche ana.) analogWrite(broche, valeur) (PWM : crire une valeur analogique sur les broches 9, 10 ou 11) Gestion du temps unsigned long millis() (temps de fonctionnement du programme) delay(ms) (attente, en millisecondes) delayMicroseconds(us) (attente, en microsecondes)

Operations boolnnes && (et) || (ou) ! (et pas)

Autres commandes // (commentaire simple ligne) /* */ (commentaire multi-lignes) #define ( donner une valeur un nom)

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Syntaxe du langage Arduino, suite

Suite de la page daccueil du document rfrences (menu Aide du logiciel) , qui renvoie vers les explications de chaque commande de la syntaxe Arduino et dont voici la table des matires. Chaque instruction est suivie de sa traduction, entre-parenthses et en noir.

Nombres alatoires randomSeed(seed) (alatoire pilot) long random(max) (alatoire partir de telle valeur) long random(min, max) (alatoire entre deux valeurs)

Communications srie entre Arduino et autres machines ou ordinateur Serial.begin(speed) (configuration de la vitesse de communication Srie) Serial.available() (donne combien de caractres disponibles dans la zone tampon Srie) Serial.read() (lit les donnes Srie) Serial.print(data) (envoie des donnes Srie) Serial.println(data) (envoie des donnes Srie suivies de caractres spcifiques)

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Addenda au langage Arduino, suite

Librairies additionnelles Matrix ( gestion dune matrice de LEDs par contrleur MAX7219) matrix(data, load, clock) (Pour configurer des matrices de LEDs) matrix.write(x, y, value) (Pour envoyer des donnes aux matrices de LEDs) matrix.write(x, y, sprite) (Pour envoyer des donnes aux matrices de LEDs) matrix.clear() (efface lcran de LEDs). matrix.setBrightness(value) (rgle la brillance de lcran) Sprite ( gestion de formes sur matrice de LEDs) Sprite(largeur, hauteur, colonne1, colonne2...) (Starts the LCD library.) sprite.width() (Returns the width in pixels of the sprite.) sprite.height() (Returns the height in pixles of the sprite.) sprite.write(x, y, valeur) (Writes data to an x, y position of the sprite.) sprite.read(x, y) (Returns the data stored on the x, y position of the sprite.)

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Un peu dlectronique interactive


Vous savez maintenant programmer des oprations simples, mais comment aborder la partie lectronique ?

Faire des montages lectroniques simples est la porte de tous et les ressources sur llectronique interactive (physical computing) sont multiples sur le web, il y a cependant des notions de base avoir pour se lancer dans la ralisation de ses propres montages, mme si on ne fait que copier un montage sans le comprendre :

il est toujours utile de savoir reconnatre les composants il est toujours utile de savoir dterminer la valeur dun composant (le code visuel des couleurs, les sigles et les abrviations) il est (souvent) utile de connatre la fonction dun composant il est (parfois) utile de savoir lire un schma, cest--dire reconnatre les symboles des composants, et la raison des cablages.

Il faut aussi prendre quelques prcautions:

Eviter de faire des court-circuits Utiliser les sources lectriques recommandes Certains composants lectroniques ont un sens = ils sont polariss. Exemple: la LED, certains condensateurs, les diodes.. Certains composants ne peuvent pas fonctionner seuls , comme la LED, qui a besoin dune rsistance approprie pour
limiter le courant. Certains composants se ressemblent mais nont pas du tout la mme fonction: toujours bien regarder leur signaltique Ne pas manipuler de 230V sans connaissances appropries. Prferer faire les essais et les montages avec une alim externe plutt que celle de lUSB Les ressources du web, et notamment de Wikipedia vous aideront sur les concepts les plus difciles.

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Une plaque dexprimentation (breadbord en anglais) permet de cabler de nombreux composants sans faire de soudure, et en gardant un montage entirement dmontable. Le projet Arduino propose une plaque adapte lArduino, dote de connecteurs reproduisant exactement le plan dimplantation de la carte. On peut aussi se la bricoler soi-mme avec quelques composants comme montr sur le site http://todbot.com/blog/2006/07/11/ arduino-breadboard-shield/

Equipement en lectronique interactive


Aller plus loin en lectronique
Dans ce sens, les trous sont connects entre eux

Dans ce sens, les trous sont connects entre eux

Dans ce sens, les trous ne sont pas connects

La plaque dexprimentation Arduino ofcielle: ici dmonte, car elle vient normalement couvrir lArduino

Une pile, une LED, sa rsistance , voil un bon dbut pour commencer sur une plaque. Si les ls souples de la pile ne veulent pas rentrer, on peut les tamer avec un peu de soudure. Rien ne vaut une bonne plaque pour cabler proprement et clairement ici, lArduino pilote un moteur pas--pas, avec un composant supplmentaire, et un potentiomtre pour dnir la vitesse.

Electronique interactive
Reconnaitre les composants/1
Savoir reconnaitre quelques composants lectroniques, savoir reconnaitre leur symbole, connaitre leur usage, vous permettra de concevoir vos propres expriences et de progresser partir de donnes trouves sur le web. Vous saurez ainsi fabriquer quelques capteurs, et actionner quelques matriels.

La rsistance
La rsistance soppose au passage du courant, proportionnellement sa rsistance exprime en Ohm. Un code de couleurs, ci dessous permet de reconnatre cette valeur. Symbole europen

Les condensateurs
Les condensateurs peuvent stocker un peu de courant si on les charge, mais comme un tonneau perc, ils renvoient ce courant instantanment si ils sont branchs un organe consommateur de courant. Ils peuvent tre polariss ou non, dans des boitiers trs divers. Leur valeur sexprime en Farad ( F)

Le transistor
Le transistor est gnralement utilis comme une sorte de multiplicateur de puissance: lorsquon lui fait passer un courant faible, mais variable dans un de ses 3 pattes, il autorise proportionnellement le passage dun gros courant dans une autre des 3 pattes.

non polaris

polaris Symboles transistor NPN transistor PNP

Symbole Reconnaissance de leur valeur: A cause de la diversit des modles, se reporter aux ressources sur le web

Code des couleurs des rsistances

au del de 1000 Ohms, on parle en KiloOhms, par exemple 10 K est 10 KiloOhms, puis en MegaOhms nots M

100 220 K

1000

10000

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Electronique interactive
Reconnaitre les composants /2

Linterrupteur

La cellule photo-lectrique (LDR)

Le piezo

La cellule photo-lectrique (LDR)


Linterrupteur ouvre ou ferme un circuit. Il y a toutes sortes dinterrupteurs. Sur lArduino, utiliser un interrupteur pour dclencher un vnement ncessite dutiliser un composant supplmentaire: une rsistance de 10K ohms. Voir Montages dlectronique interactive. Cest une rsistance variable, en fonction de la luminosit quelle reoit. Sa rsistance diminue quand elle reoit de la lumire. On sen sert donc de capteur de luminosit. Non polarise. Pour lire sa valeur avec une Arduino, il faut galement lassocier avec une rsistance quivalente sa rsistance maxi ( dans le noir) Voir Montages dlectronique interactive. Le transducteur piezo-lectrique est un composant rversible: il peut aussi bien tre utilis en capteur de chocs ou de vibrations quen actionneur pouvant mettre des sons stridents parfois modulables.

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Electronique interactive
Reconnaitre les composants /3

Le servo moteur

Le potentiomtre

Le relais

Le potentiomtre

Le relais

Le servo-moteur est un moteur (rotatif) qui peut effectuer des rotations trs prcises (dans une portion de tour seulement) et en un certain nombre de pas ( de micro-dplacements). Il y a toutes sortes de servo moteurs.. Un des avantages des servo moteurs est sa possibilit de maintenir avec force une position donne. On peut piloter des rotations avec lArduino, quelques fois directement avec la carte si le moteur nest pas trop puissant, sinon en passant par un montage associ.

Le potentiomtre, rotatif comme ici, ou glissire, est une rsistance variable. Entre les extrmits, il y a la rsistance maximale. La patte centrale est le curseur. Cest la rsistance entre cette patte centrale et une extrmit que lon peut faire varier en tournant le bouton. Le potentiomtre est donc un capteur. Il se branche sur les entres analogiques de lArduino. De trs nombreux capteurs sont bass sur le principe de rsistance variable et se cablent presque de la mme faon: la cellule photo-lectrique, le capteur de pression, le l rsistif, etc

Le relais est un composant 4 broches minimum. Cest un interrupteur que lon peut commander en envoyant un petit courant. Au repos, il est normalement ferm, ou normalement ouvert, selon le modle. On peut sen servir avec lArduino pour commander des machines en haute tension ( 230V par exemple), ou pour dclencher toute machine ou lumire.

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Electronique interactive
La diode La LED

Reconnaitre les composants /4


La broche numrique 13 de lArduino est dja cable en srie avec une rsistance de valeur moyenne pour une LED ( 1K ohm ), on peut donc, dans la plupart des cas, directement lui brancher une LED, comme sur la photo-ci-dessous. Le moins sur la masse ( nomme GND comme Ground) et le plus sur la broche 13. Il ne reste plus qu dclarer dans le programme que la broche 13 est congure en sortie, et le tour est jou pour faire quelques essais. Si on a des LEDs particulires, ou si on est sur un autre port , on calcule et on rajoute une rsistance.

La diode
La diode ne laisse passer le courant que dans un seul sens. Cest un composant polaris: on reconnait toujours son anneau color dun cot du composant, correspondant la cathode.

La diode lectroluminescente (LED) met de la lumire. Elle est polarise: la patte + est la plus longue, lautre patte est la patte - . Les broches numriques de lArduino, lorsquelles sont congures en sorties et quelles sont ltat 1 ou haut ( HIGH) , fournissent une tension de 5 volts, suprieure ce que peut accepter une LED. Les LED doivent donc tre couples en srie avec une rsistance.

Une LED branche sur la broche 10 de lArduino, avec sa rsistance en srie


Symbole Etats-Unien de la rsistance

Comment calculer la rsistance appairer avec une LED ?

Rsistance (en Ohms) = (5-Vf) / If

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Le schma lectronique correspondant

Alimenter lArduino
en mode autonome sans ordinateur

Texte

Avec une pile 9V et un connecteur Cest une solution trs pratique

Avec un adaptateur secteur 9 12 V Connecteur 2,1 mm avec le + au centre, courant continu (DC)

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Quelques montages, dont on trouvera les schmas et les programmes sur le web, notamment ici: http://www.tigoe.net/pcomp/code/archives/avr/arduino/index.shtml et sur le site dArduino avec toutes sortes de ressources sur llectronique interactive ici: http://www.tigoe.net/pcomp/index.shtml

An

> SB-Srie ptateur U ada oter ici, l

r sim en capteu piezo ntage du Mo


L cran te d CD

ple

Pilotage

de LEDs

par joyst

ick

Pilo

Ds e de LE Pilotag
Capteu r de d

istance

ultra

-sons

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Quelques schmas exprimenter Brancher un joystick Piloter un moteur courant continu: (Rsistance, transistor, moteur, diode, alim 5 V

Piloter un clairage Leds RVB en milliers de couleurs, avec les sorties PWM (Rsistance, LED rouge, verte et bleue)

Piloter du 230V ( attention): (Rsistance, transistor, diode, alim 5 V, relais)

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Montage dun capteur rsistif

+5V

cellule photolectrique

Signal

Masse ( GND)
Schma lectronique ( symboles U.S.A)

Montage dun capteur rsistif, type cellule photolectrique, capteur de pression, capteur de exion, etc: La rsistance additionnelle doit tre au moins quivalente la plus forte valeur de rsistance du capteur

Conseil :Pour viter quun l ou quun composant branch au + vienne endommager un port USB dans lordinateur, isoler le mtal du port USB avec un scotch dlectricien. Attention galement au dessous de la carte, ne pas poser sur un support conducteur.
Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Il y a deux solutions et donc deux congurations pour le montage de boutons poussoirs ou dinterrupteurs: il est ncessaire de respecter le cablage suivant, qui permet de se passer de rsistances, car elles sont incluses dans le microcontroleur de lArduino. Le montage ci-dessous comporte trois boutons poussoirs.

Montage de boutons poussoirs et interrupteurs

premire solution: avec des rsistances de 10K

deuxime solution: sans rsistances mais avec ce code (ici pour trois interrupteurs)

Le code impratif respecter est: digitalWrite( nomdelabrochenumrique, HIGH);

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Exercices Sauriez-vous cabler ce capteur de temprature sur la carte ?


Ne pas oublier le condensateur
(non corrigs)

Ce capteur de exion ( Bend sensor) ?

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Ain = analog in = entre analogique

Attention, il est polaris...

Exercices
(non corrigs)

Ce capteur piezo-lectrique, en capteur de choc ?

Atelier matriel Libre au CRAS : le programme du montage livr avec votre Arduino
/ * D e m o A r d u i n o 1 c a p t e u r ( p o t e n t i o m t re ) * et 2 actioneurs (1 buzzer et 1 LED) * --------------* * C e p ro g r a m m e g re u n c l i g n o t e m e n t d e l a L E D e t d u b u z z e r s u i v a n t l e p o t e n t i o m t re * * Branchement : * ' D i g i t a l P i n 1 3 ' e t G N D ( g ro u n d a c o t d u c o n n e c t e u r 5 V / 9 V ) : l a L E D. * ' D i g i t a l P i n 1 0 ' e t G N D ( s u r l e c o n n e c t e u r ave c l e s 1 4 p i n s d i g i t a l e s ) : l e b u z z e r. * ' A n a l o g I n 0 ' e t 5 V e t G N D ( s u r l e c o n n e c t e u r 5 V / 9 V ) : l e p o t e n t i o m t re . * * ( c o py l e f t ) 2 0 0 6 M a u r i n D o n n e a u d , V i n c e n t R o u d a u t p o u r l e C R A S M a i n s d ' O e u v re s ( c r a s l a b . o r g ) */ int ledPin = 13; // attention la pin 13 contient deja une rsistance int buzzPin = 10; int potPin = 0; /* * i n i t i a l i s a t i o n ( o n y e n t re q u ' u n e s e u l e f o i s a u d b u t ) */ vo i d s e t u p ( ) { / / c o n f i g u re l e s e n s d e s p i n s d i g i t a l e s pinMode(ledPin, OUTPUT); pinMode(buzzPin, OUTPUT); } /* * boucle */ vo i d l o o p ( ) { int attente = analogRead(potPin)/8; // calcul o lon passe de 1024 maximum (la rsolution de la carte en entre) a 256 maximum digitalWrite(ledPin, HIGH); // clignotement LED digitalWrite(buzzPin, HIGH); // beep! d e l ay ( a t t e n t e ) ; d i g i t a l W r i t e ( l e d P i n , L OW ) ; / / c l i g n o t e m e n t L E D d i g i t a l W r i t e ( b u z z P i n , L OW ) ; / / s i l e n c e p o u r l e b u z z e r d e l ay ( a t t e n t e ) ; } digitalWrite(buzzPin, HIGH); // beep!

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Squiper en composants Des capteurs du commerce


Si vous navez pas russi faire vos capteurs vous-mmes, trois fabricants Franais (Interface-z, La-Kitchen et Eowave font des capteurs 0- 5V spcialement destins un usage cratif, et que lon peut directement brancher sur lArduino. Ils ont en gnral trois conducteurs comme on peut voir ci-dessous, et certains ont une lectronique de pr-traitement du signal qui supprime bien des comportement parasites:

0 V brancher la masse ( GND)

5V brancher sur lalimentation de la carte et le Signal, brancher sur lentre analogique

Des actionneurs
On trouve des actionneurs divers dans les magasins rels et en ligne qui diffusent des composants lectroniques et les ressources sur le web ( mot cl: actuators en anglais)

Du matriel
Une grande plaque dexprimentation, un bon fer souder dlectronicien avec une panne ne ( partir de 15/20 euros), une troisime main (petit support avec deux pinces et une loupe), du cable de qualit, et de plusieurs couleurs ( toujours reprer la masse en noir, les tensions en rouge, le signal en orange ou en jaune) sont des achats considrer pour continuer en lectronique interactive

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

ANALOG : Analogique. AREF : Abrviation pour Analog REFerence, rfrence analogique. AVAILABLE : Disponible. BEGIN : Dbut. BIT : bit, unit d'information informatique pouvant prendre soit la valeur 0 soit la valeur 1. BUFFER : Tampon, dans le sens de "zone tampon". BYTE : Octet, soit un groupe de 8 bits. bps : Abrviation pour Bits Per Second, Bits Par Seconde. Attention, abrviation toujours en minuscules. BREADBOARD: plaque dexprimentation CAPACITOR: condensateur CHAR : Abrviation de CHARacter, caractre (typographique). Type de variable d'une taille d'un octet. C'est un synonyme de "byte" utilis pour dclarer des variables stocka un caractre ou des chaines de caractres. DEFINE : Dfinit. DIGITAL : Numrique. DO : Faire. FALSE : Faux. FOR : Pour. GND : Abrviation pour GrouND, la terre. C'est la masse, 0 Volt. HIGH : Haut. ICSP : Abrviation pour In Cicuit Serial Programming, programmation srie sur circuit. IF / THEN/ ELSE : Si / Alors / Sinon. IN : Souvent l'abrviation pour INput, Entre. Est toujours en rapport avec le sens extrieur vers carte Arduino. INCLUDE : Inclut. INPUT : Entre. IS : Est (souvent dans le sens d'une question : Est ?). INT : Abrviation pour INTeger, entier. Groupe de 16 bits, 2 octets groups, considrs comme reprsentant un nombre entier ngatif ou positif. LONG : Abrviation pour "entier long". Groupe de 32 bits, 4 octets groups, considrs comme reprsentant un nombre entier ngatif ou positif. LOOP : Boucle. LOW : Bas. OUT : Souvent l'abrviation pour OUTput, Sortie. Est toujours en rapport avec le sens carte Arduino vers extrieur. OUTPUT : Sortie. PIN : Broche. POWER : Puissance, alimentation. PWM : Abrviation de (Pulse Width Modulation), soit Modulation en Largeur d'Impulsion. PWR : Abrviation pour PoWeR, puissance, alimentation. READ: Lire. RESISTOR: rsistance. RELAY: relais. RX : Abrviation pour Receive, rception. SERIAL : Srie. SETUP : Initialisation. SENSOR: capteur TRUE : Vrai. TX: Abrviation Transmit, transmission (mission). WIRE: cable WHILE : Tant que. WORD : mot, soit dans le mot de langage ; soit dans le sens d'un groupe de 16 bits, 2 octets groups considrs comme reprsentant un nombre entier positif (>= 0). WRITE: Ecrire.

Lexique

Lexique pour aborder les termes en anglais

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr

Quelques ressources:
Le site ARDUINO.CC, et notamment laire de jeux , (Arduino playground) pour savoir notamment comment interfacer lArduino avec tous les logiciels courants
comme Processing ou Pure Data, pour savoir comment transmettre les signaux sans l, et toute utilisation autre Les forums pour tout problmes, ne pas hsiter aller voir les autres langues, qui ont parfois la solution le site de Tom Igoe http://tigoe.net/pcomp/ les sites Make, Hackaday, Sensorwiki, We make money not art, et bien dautres encore pour avoir des conseils, des schmas, des ides.... les sites de service de liens, de video et d image ( google, delicious, youtube, ickr,) pour avoir des images, des videos, des liens trs utiles . ( par exemple: http:// del.icio.us/search/?setcount=100&all=arduino )

Quelques ressources prcises:


Trs bon tutoriel progressif : http://todbot.com/blog/spookyarduino/ Capteurs: http://itp.nyu.edu/physcomp/sensors/Reports/Reports Capteurs vers MIDI avec une arduino: http://itp.nyu.edu/physcomp/Labs/MIDIOutput Controle dun moteur courant continu http://itp.nyu.edu/physcomp/Labs/DCMotorControl Contrle dun servomoteur http://itp.nyu.edu/physcomp/Labs/Servo Ressources sur les capteurs et les actionneurs : http://www.interface-z.com processing.org puredata.info

Remerciements
Livret conu avec des ressources en ligne de Tom Igoe,, M.Banzi, Tod Spooky Kurt, Francis Bras, Kitdashit, D. Cuartielles, Benoit Rousseau, H Barragan, Hans Steiner et bien dautres encore que je remercie tous ici. contact: jnm rom. fr

Livret Arduino en franais par Jean-Nol Montagn, Centre de Ressources Art Sensitif, novembre 2006, sous licence CC , http://creativecommons.org/licenses/by-nc-sa/2.5/deed.fr http://www.craslab.org http://www.artsens.org