Sunteți pe pagina 1din 37

Atelier Arduino

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
Initiation la mise en oeuvre matrielle et logicielle de lArduino
novembre 2006
Sommaire
1. Prsentation de lArduino
2. Description du projet Arduino
3. Tlchargement et installation du logiciel
4. Conguration du port srie-USB
5. Interface du logiciel Arduino et fonctionnement dun programme
6. Apprendre programmer un fonctionnement autonome
7. Structure dun programme
8. Introduction la syntaxe Arduino
9. Pas--pas: Introduction
10. Pas--pas: Dnition des variables
11. Pas--pas: Conguration logicielle de la carte
12. Pas--pas: Programmation des interactions
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
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.
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.
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.
lArduino USB lArduino mini
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
Description de la carte
Port USB:
pour le transport des
donnes et pour
lalimentation lectrique
Connecteur dalimentation
de lArduino (si besoin)
9v 12 V
Connecteur 2,1 mm
avec le + au centre
courant continu
(DC)
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 ci-
dessous
LED verte tmoin dalimentation
Trou de xation par vis
(xer sur un support non
conducteur)
Bouton de rinitialisation
(reset)
2 LEDs jaunes ou vertes, actives lors
dun tlchargement de programme
LED jaune de test
Source 5V faible puissance pour alimenter des montages divers
comme des capteurs 0-5 V par exemple
Microcontrleur
6 entres analogiques
numrotes de 0 5
Masse (2 connecteurs)
(GND)
Connecteurs pour le
tlchargement
du systme dexploitation
du microcontrleur
Trou de xation par vis
(xer sur un support non conducteur)
Source 9V faible puissance pour alimenter des montages
divers
13 entres/sorties numriques
numrotes de 1 13
Masse des connecteurs
numriques (GND)
Rfrence analogique (AREF)
Port Srie In/out
RX TX (supprime une entre-sortie numrique si utilis)
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
3 connecteurs numriques
pouvant galement tre utiliss en gnrateurs
dimpulsions
(par ex: sortie analogique avec montage spcique
PWM numrots de 0 2 )
Version USB
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
Avant premire utilisation de l Arduino modle USB
Tlchargement du logiciel et conguration de lordinateur:
Dsigner le bon port Srie (USB-Srie)
Conguration du logiciel Arduino pour une Arduino USB
Sur Windows
Sur MacOSX
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
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).
Le logiciel Arduino
Le logiciel:
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
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
Zone dcriture du programme
zone des messages derreur ou autres envoys par le programme
Bouton :Vrication du programme aprs criture = compilation
Bouton: Envoi du programme vers la carte (aprs rinitialisation de la carte)
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
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.
Programmer avec Arduino
Structure d'un programme
Il y a trois phases conscutives:
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
Commentaires
Commentaires multilignes pour se souvenir du patch ==>
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:
/* 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; // Dnition de la valeur 13 et du nom de la broche
utiliser
void setup()
{
pinMode(BrocheLED, OUTPUT); // congure BrocheLED comme une
sortie
}
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
}
Introduction la syntaxe des commandes Arduino
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
(Syntaxe en marron, paramtres utilisateur en vert)
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.
delay(temps en millisecondes) est la commande dattente entre
deux autres instruction
Chaque ligne dinstruction est termine par un point virgule
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

1/ Dfinition des variables

2/ Configuration logicielle du matriel

3/ Programmation des interactions

4/ Finitions

5/ Test et tlchargement

6/ Montage
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.
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.
Pas pas:
1/ Dfinition des variables
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.
(Syntaxe en marron, paramtres utilisateur en vert)
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
Au dbut de notre programme:
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 variable
identifiant le portanalogique 0 de la carte
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.
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
u n e p l a q u e
d e x p r i m e n t a t i o n
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
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)
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
Pas pas:
2/ Configuration logicielle du
matriel
(Syntaxe en marron, paramtres utilisateur en vert)
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
On peut maintenant passer la boucle, cest dire le coeur du programme, qui dfinit les actions effectuer avec ces variables.
Rappel des premires lignes du programme:
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.
}
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
}
Rappel des premires lignes du programme:
Pas pas:
3/ Programmation des
interactions
(Syntaxe en marron, paramtres utilisateur en vert)
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
Notre programme est termin, terminons les commentaires si cela nest pas dja fait
Pas pas:
4/ Finitions
/* 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
}
(Syntaxe en marron, paramtres utilisateur en vert)
-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:
5/ Test et tlchargement
/* 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); // 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
}
Sil ny a pas derreurs on verra
safficher: done compiling, suivi de
la taille du programme.
On peut sauver le fichier sur
lordinateur, puis appuyer sur le
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 !
Vrifier
R-initialiser
Tlcharger
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
Le montage du tutoriel : 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.

Matriel :une LED, une cellule photolectrique, du cable, deux rsistances ( appairer en fonction de la cellule et de la LED)...
Num13
Masse (GND)
Ana 0
Masse (GND)
5v
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:
6/ Montage des composants
Syntaxe du langage Arduino
Commandes de structure du programme
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.
Structure gnrale
void setup() (configuration-prparation)
void loop() (excution)
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 )
Operations boolnnes
&& (et)
|| (ou)
! (et pas)
Autres commandes
// (commentaire simple ligne)
/* */ (commentaire multi-lignes)
#define ( donner une valeur un nom)
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)
Variables
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)
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
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.)
Addenda au langage Arduino, suite
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
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
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.
Equipement en lectronique interactive
Aller plus loin en lectronique
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/
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.
La plaque dexprimentation Arduino ofcielle: ici dmonte,
car elle vient normalement couvrir lArduino
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.
Dans ce sens, les trous ne sont pas
connects
Dans ce
sens, les
trous
sont
connects
entre eux
Dans ce
sens, les
trous
sont
connects
entre eux
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
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
La rsistance soppose au passage
du courant, proportionnellement
sa rsistance exprime en
Ohm. Un code de couleurs, ci
dessous permet de reconnatre
cette valeur.
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)
non polaris polaris
Code des couleurs des rsistances
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.
transistor PNP transistor NPN
Symbole europen
Symbole
Symboles
100 1000 10000
au del de 1000 Ohms, on parle en KiloOhms, par exemple 10 K est 10 KiloOhms, puis en MegaOhms nots M
220 K
Reconnaissance de leur valeur:
A cause de la diversit des modles, se reporter aux ressources sur le web
Le piezo
Electronique interactive
Reconnaitre les composants /2
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.
La cellule photo-lectrique (LDR)
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.
Linterrupteur
La cellule photo-lectrique (LDR)
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 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 servo moteur Le potentiomtre
Le potentiomtre
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
Electronique interactive
Reconnaitre les composants /3
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 relais
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.
Le relais
La diode La LED
Electronique interactive Reconnaitre les composants /4
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.
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.
Comment calculer la rsistance appairer avec une LED ?
Rsistance (en Ohms) = (5-Vf) / If
Une LED branche sur la
broche 10 de lArduino, avec
sa rsistance en srie
Le schma lectronique correspondant
Symbole Etats-Unien
de la rsistance
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
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
M
ontage du piezo en capteur sim
ple
P
ilo
te
d

c
r
a
n
L
C
D
C
ap
te
u
r d
e
d
istan
ce
u
ltra-so
n
s
Pilotage de LED
s par joystick
A noter ici, ladaptateur USB-Srie >
Pilotage de LED
s
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
Piloter un moteur courant continu:
(Rsistance, transistor, moteur, diode, alim 5 V
Piloter du 230V ( attention):
(Rsistance, transistor, diode, alim 5 V, relais)
Piloter un clairage Leds RVB en milliers de couleurs, avec les sorties PWM
(Rsistance, LED rouge, verte et bleue)
Brancher un joystick
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, 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
Masse ( GND)
Signal
+5V
Schma lectronique ( symboles
U.S.A)
Montage dun capteur rsistif
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
cellule photolectrique
Montage de boutons poussoirs et
interrupteurs
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.
Le code impratif respecter est:
digitalWrite( nomdelabrochenumrique, HIGH);
premire solution:
avec des rsistances de 10K
deuxime solution:
sans rsistances mais avec ce code (ici
pour trois interrupteurs)
Sauriez-vous cabler ce capteur de temprature sur la carte ?
Ce capteur de exion ( Bend sensor) ?
A i n = a n a l o g i n = e n t r e a n a l o g i q u e
N
e

p
a
s

o
u
b
l
i
e
r


l
e

c
o
n
d
e
n
s
a
t
e
u
r
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
A
t
t
e
n
t
i
o
n
,

i
l

e
s
t

p
o
l
a
r
i
s

.
.
.
Exercices
(non corrigs)
Ce capteur piezo-lectrique,
en capteur de choc ?
Exercices
(non corrigs)
/ * Demo Ardui no 1 capt eur ( pot ent i omt re)
* et 2 act i oneur s ( 1 buzzer et 1 LED)
* - - - - - - - - - - - - - - -
*
* Ce progr amme gre un cl i gnot ement de l a LED et du buzzer s ui vant l e pot ent i omt re
*
* Br anchement :
* ' Di gi t al Pi n 13' et GND ( ground a cot du connect eur 5V/ 9V) : l a LED.
* ' Di gi t al Pi n 10' et GND ( s ur l e connect eur avec l es 14 pi ns di gi t al es ) : l e buzzer.
* ' Anal ogI n 0' et 5V et GND ( s ur l e connect eur 5V/ 9V) : l e pot ent i omt re.
*
* ( copyl ef t ) 2006 Maur i n Donneaud, Vi ncent Roudaut pour l e CRAS Mai ns d' Oeuvres ( cr as l ab. or g)
*/
i nt l edPi n = 13; / / at t ent i on l a pi n 13 cont i ent dej a une r s i s t ance
i nt buzzPi n = 10;
i nt pot Pi n = 0;

/ *
* i ni t i al i s at i on ( on y ent re qu' une s eul e f oi s au dbut )
*/
voi d s et up( )
{ / / conf i gure l e s ens des pi ns di gi t al es
pi nMode( l edPi n, OUTPUT) ;
pi nMode( buzzPi n, OUTPUT) ;
}
/ *
* boucl e
*/
voi d l oop( ) {
i nt at t ent e = anal ogRead( pot Pi n) / 8; / / cal cul o l on pas s e de 1024 maxi mum ( l a r s ol ut i on de l a car t e en
ent r e) a 256 maxi mum

di gi t al Wr i t e( l edPi n, HI GH) ; / / cl i gnot ement LED
di gi t al Wr i t e( buzzPi n, HI GH) ; / / beep!

del ay( at t ent e) ;

di gi t al Wr i t e( l edPi n, LOW) ; / / cl i gnot ement LED

di gi t al Wr i t e( buzzPi n, LOW) ; / / s i l ence pour l e buzzer

del ay( at t ent e) ;

di gi t al Wr i t e( buzzPi n, HI GH) ; / / beep!
}
Atelier matriel Libre au CRAS : le programme du montage livr avec votre Arduino
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
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
Squiper en composants
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 stockant
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.
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
Lexique pour aborder les termes en anglais
Lexique
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
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
puredata.info processing.org

S-ar putea să vă placă și