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

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, lui-
mme 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
Rfrence analogique (AREF) Description de la carte
LED jaune de test Port Srie In/out
Masse des connecteurs RX TX (supprime une entre-sortie numrique si utilis)
Trou de fixation par vis numriques (GND)
(fixer sur un support non conducteur)
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)

Connecteurs pour le
tlchargement
du systme dexploitation
3 broches, avec un cavalier de
du microcontrleur
slection dalimentation:

-cavalier sur les deux broches du


haut: alimentation par le port USB,
Microcontrleur
comme sur cette photo

-cavalier sur les deux broches du bas


si alimentation par connecteur ci- Trou de fixation par vis
dessous (fixer sur un support non
conducteur)

Connecteur dalimentation
de lArduino (si besoin)
9v 12 V
Connecteur 2,1 mm 2 LEDs jaunes ou vertes, actives lors
avec le + au centre dun tlchargement de programme
courant continu 6 entres analogiques
(DC) 3 connecteurs numriques numrotes de 0 5
pouvant galement tre utiliss en gnrateurs
Masse (2 connecteurs)
dimpulsions
(GND)
(par ex: sortie analogique avec montage spcifique
PWM numrots de 0 2 )
Source 5V faible puissance pour alimenter des montages divers Source 9V faible puissance pour alimenter des montages
comme des capteurs 0-5 V par exemple divers
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 configuration 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
Configuration 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 :Vrification du programme aprs criture = compilation

Mise en oeuvre de lenvironnement Arduino:

-On conoit dabord un programme avec le logiciel


Arduino

-On vrifie ce programme avec le logiciel Bouton: Envoi du programme vers la carte (aprs rinitialisation de la carte)
(compilation)

-Des messages derreur apparaissent


ventuellement...on corrige puis vrifie nouveau... Zone dcriture du programme
-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


zone des messages derreur ou autres envoys par le programme
automatique quelques secondes plus tard ou ses
prochains branchements sur une alimentation
lectrique ( Alim 9/12V ou port USB).

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 dfini 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 dfinition des constantes et des variables

2/La configuration 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
(Syntaxe en marron, paramtres utilisateur en vert)
Toujours crire des commentaires sur le programme: soit
en multiligne, en crivant entre des /****/, soit sur une /* Ce programme fait clignoter une LED branche sur la broche 13
ligne de code en se sparant du code avec // * et fait galement clignoter la diode de test de la carte
*/

Dfinition des variables:


Pour notre montage, on va utiliser une sortie numrique
de la carte, qui est par exemple la 13 me sortie int BrocheLED = 13; // Dfinition de la valeur 13 et du nom de la broche
numrique. Cette variable doit tre dfinie et nomme utiliser
ici: on lui donne un nom arbitraire BrocheLED . Le mot de
la syntaxe est pour dsigner un nombre entier est int

Configuration des entres-sorties void setup(): void setup()


Les broches numriques de lArduino peuvent aussi bien {
tre configures en entres numriques ou en sorties pinMode(BrocheLED, OUTPUT); // configure BrocheLED comme une
numriques. Ici on va configurer BrocheLED en sortie. sortie
pinMode ( nom, tat) est une des quatre fonctions relatives }
aux entres-sorties numriques.

Programmation des interactions void loop(): void loop()


Dans cette boucle, on dfinit les oprations effectuer, {
dans lordre: digitalWrite(BrocheLED, HIGH); // met la sortie num. l'tat haut (led
digitalWrite ( nom, tat) est une autre des quatre allume)
fonctions relatives aux entres-sorties numriques. delay(3000); // attente de 3 secondes
delay(temps en millisecondes) est la commande dattente entre digitalWrite(BrocheLED, LOW); // met la sortie num. l'tat bas (led
deux autres instruction teinte)
Chaque ligne dinstruction est termine par un point virgule delay(1000); // attente de 1 seconde
Ne pas oublier les accolades, qui encadrent la boucle. }
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
1/ Dfinition des variables
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 Pour composer un programme ex-nihilo, il est ncessaire de dfinir
exclusivement un paramtre variant dans le programme. 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 Au dbut de notre programme:
(Syntaxe en marron, paramtres utilisateur en vert)
veut que la valeur de luminosit change la valeur de lintervalle de
Le code ci-dessous dclare (et dnomme arbitrairement) la variable
clignotement de la LED, alors on a 2 variables stables pour la capteur1, puis lui affecte (par exemple) le numro de l'entre
dfinition du matriel et, en thorie, 2 variables pour les calculs analogique numro 0. (LArduino possde 6 entres analogiques
dclarer en dbut de programme. En thorie seulement, car on va se numrotes de 0 5) :
servir directement de la valeur issue du capteur pour dfinir la valeur
de lintervalle de temps de dure dextinction et dure dallumage. On int capteur1 = 0; // dclaration de la variable
a donc besoin que de trois variables en tout. On va leur donner des identifiant le portanalogique 0 de la carte
noms arbitraires mais prcis afin de bien les reconnatre dans le
programme. 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
Le montage, ici ralis sur numriques numrotes de 1 13) :
une plaque
dexprimentation
int LED1 = 13; // dclaration de la variable
spcifique que lon peut identifiant le autre port numrique 13 de la carte
fixer sur lArduino
La ligne suivante dclare (et dnomme arbitrairement) la variable
Matriel:
-cellule photo-electrique qui correspond la valeur de luminosit envoye par le
-LED capteur. De plus, sa premire valeur lallumage de la carte
-2 rsistances sera (arbitrairement) 0 :

int lum1 = 0; // dclaration de la variable identifiant


on verra ce montage en la valeur de la luminosit du capteur 1
dtail plus loin dans le
livret

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:
2/ Configuration logicielle du
Rappel des premires lignes du programme: (Syntaxe en marron, paramtres utilisateur en vert)
matriel
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); // configure 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:
3/ Programmation des
interactions
Rappel des premires lignes du programme: (Syntaxe en marron, paramtres utilisateur en vert)

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


5/ Test et tlchargement
* 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 Vrifier
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); // configure la broche 13 comme une

Sil ny a pas derreurs on verra


sortie
}

void loop()
{
safficher: done compiling, suivi de
lum1 = analogRead( capteur1); // lire la donne capteur
digitalWrite(LED1, HIGH); // allumer la LED 1
la taille du programme.
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
}

On peut sauver le fichier sur


lordinateur, puis appuyer sur le
Tlcharger bouton de r-initialisation de la
carte, ci-dessous.
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 !

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

Masse (GND)
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
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 Variables

Variables
Structure gnrale char (variable caractre)
int (variable nombre entier)
void setup() (configuration-prparation) long (variable nombre entier de ts grande taille)
void loop() (excution) string (variable chaine de caractres)
array (tableau de variables)

Contrle et conditions
if (si...)
if...else (si...alors...) Niveaux logiques des connecteurs numriques
for (pour...) HIGH (tat 1)
switch case (dans le cas o...) LOW (tat 0)
while (pendant que ...) INPUT (configur en entre)
OUTPUT (configur en sortie)

Oprations de comparaison

== (quivalent ) Fonctions
!= (diffrent de)
< (infrieur ) Entres-sorties numriques
> (suprieur ) pinMode(broche, tat) (configuration des broches)
<= (infrieur ou gal ) digitalWrite(broche, tat) (crire un tat sur une broche num.)
>= (suprieur ou gal ) digitalRead(broche) (lire un tat sur une broche num.)
unsigned long pulseIn(broche, tat) (lire une impulsion sur une
Operations boolnnes broche num.)

&& (et) Entres analogiques


|| (ou) int analogRead(broche) (lire la valeur dune broche ana.)
! (et pas) analogWrite(broche, valeur) (PWM : crire une valeur analogique
sur les broches 9, 10 ou 11)
Autres commandes
Gestion du temps
// (commentaire simple ligne) unsigned long millis() (temps de fonctionnement du programme)
/* */ (commentaire multi-lignes) delay(ms) (attente, en millisecondes)
#define ( donner une valeur un nom) delayMicroseconds(us) (attente, en microsecondes)
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 difficiles.

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 Equipement en lectronique interactive
cabler de nombreux composants sans faire de soudure, et en Aller plus loin en lectronique
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 Dans ce
comme montr sur le site http://todbot.com/blog/2006/07/11/ sens, les
arduino-breadboard-shield/ trous
sont
connects
entre eux

Dans ce
sens, les
trous
sont
connects Dans ce sens, les trous ne sont pas
entre eux connects

La plaque dexprimentation Arduino officielle: 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 fils 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 dfinir 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 Les condensateurs Le transistor


Ils peuvent tre polariss ou non, dans Le transistor est gnralement utilis comme une
La rsistance soppose au passage Les condensateurs peuvent
des boitiers trs divers. Leur valeur sorte de multiplicateur de puissance: lorsquon lui fait
du courant, proportionnellement stocker un peu de courant si on
sexprime en Farad ( F) passer un courant faible, mais variable dans un de ses
sa rsistance exprime en les charge, mais comme un
tonneau perc, ils renvoient ce 3 pattes, il autorise proportionnellement le passage
Ohm. Un code de couleurs, ci
courant instantanment si ils dun gros courant dans une autre des 3 pattes.
dessous permet de reconnatre
cette valeur. sont branchs un organe
consommateur de courant.
non polaris polaris
Symbole europen
Symbole Symboles
Reconnaissance de leur valeur:
A cause de la diversit des modles, se reporter aux ressources sur le web
transistor NPN transistor PNP

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 1000 10000


220 K

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)


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

Le servo moteur Le potentiomtre Le relais

Le potentiomtre Le relais

Le potentiomtre, rotatif comme ici, ou glissire, est


Le servo-moteur est un moteur (rotatif) qui peut Le relais est un composant 4 broches minimum.
une rsistance variable. Entre les extrmits, il y a la
effectuer des rotations trs prcises (dans une Cest un interrupteur que lon peut commander
rsistance maximale. La patte centrale est le curseur.
portion de tour seulement) et en un certain nombre en envoyant un petit courant. Au repos, il est
Cest la rsistance entre cette patte centrale et une
de pas ( de micro-dplacements). Il y a toutes sortes normalement ferm, ou normalement ouvert,
extrmit que lon peut faire varier en tournant le
de servo moteurs.. Un des avantages des servo selon le modle. On peut sen servir avec
bouton. Le potentiomtre est donc un capteur. Il se
moteurs est sa possibilit de maintenir avec force une lArduino pour commander des machines en
branche sur les entres analogiques de lArduino.
position donne. On peut piloter des rotations avec haute tension ( 230V par exemple), ou pour
De trs nombreux capteurs sont bass sur le principe
lArduino, quelques fois directement avec la carte si le dclencher toute machine ou lumire.
de rsistance variable et se cablent presque de la
moteur nest pas trop puissant, sinon en passant par
mme faon: la cellule photo-lectrique, le capteur de
un montage associ.
pression, le fil rsistif, etc

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 /4
La diode La LED 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 configure 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 lectroluminescente (LED) met de la


lumire. Elle est polarise: la patte + est la plus
La diode ne laisse passer le longue, lautre patte est la patte - .
courant que dans un seul sens. Les broches numriques de lArduino, lorsquelles
Cest un composant polaris: on sont configures en sorties et quelles sont ltat
reconnait toujours son anneau 1 ou haut ( HIGH) , fournissent une tension de 5
color dun cot du composant, volts, suprieure ce que peut accepter une LED.
correspondant la cathode. 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 Le schma lectronique correspondant
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
Alimenter lArduino
en mode autonome sans ordinateur

Texte

Avec une pile 9V et un connecteur Avec un adaptateur secteur 9 12 V


Cest une solution trs pratique 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

-S rie >
l a d ap t a teur USB
A note r ici,

t eur sim ple


zo en cap Pilotage
ge du pie de LEDs
Monta par joyst
ick

nL CD
c r a e LE Ds
Pilote d Pilo t a g e d

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 Piloter du 230V ( attention):
(Rsistance, LED rouge, verte et bleue) (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 flexion, etc:

La rsistance additionnelle doit tre au moins quivalente la plus forte valeur de


rsistance du capteur

Conseil :Pour viter quun fil 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
Montage de boutons poussoirs et
Il y a deux solutions et donc deux configurations pour le montage de boutons
poussoirs ou dinterrupteurs: il est ncessaire de respecter le cablage suivant, qui interrupteurs
permet de se passer de rsistances, car elles sont incluses dans le microcontroleur
de lArduino.
Le montage ci-dessous comporte trois boutons poussoirs.

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
(non corrigs)
Sauriez-vous cabler ce capteur de temprature sur la carte ?
Ne pas oublier le condensateur
Attention, il est polaris...

Ain = analog in = entre analogique

Ce capteur de flexion ( 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
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 fine ( 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.
Lexique
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.

Lexique pour aborder les termes en anglais


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.
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 fil, 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, flickr,) 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
puredata.info processing.org

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

Vous aimerez peut-être aussi