Sie sind auf Seite 1von 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
Configuration 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: Dfinition des variables
Pas--pas: Configuration 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

Description de la carte

Rfrence analogique (AREF)

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

Masse des connecteurs


numriques (GND)

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)

Connecteurs pour le
tlchargement
du systme dexploitation
du microcontrleur

3 broches, avec un cavalier de


slection dalimentation:
-cavalier sur les deux broches du
haut: alimentation par le port USB,
comme sur cette photo

Microcontrleur

-cavalier sur les deux broches du bas


si alimentation par connecteur cidessous

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

Trou de fixation par vis


(fixer sur un support non
conducteur)

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 spcifique
PWM numrots de 0 2 )

6 entres analogiques
numrotes de 0 5
Masse (2 connecteurs)
(GND)

Source 5V faible puissance pour alimenter des montages divers


comme des capteurs 0-5 V par exemple

Source 9V faible puissance pour alimenter des montages


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

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
(compilation)
-Des messages derreur apparaissent
ventuellement...on corrige puis vrifie nouveau...

Bouton: Envoi du programme vers la carte (aprs rinitialisation de la carte)

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
automatique quelques secondes plus tard ou ses
prochains branchements sur une alimentation
lectrique ( Alim 9/12V ou port USB).

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 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
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 //
Dfinition 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 dfinie et nomme
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():
Les broches numriques de lArduino peuvent aussi bien
tre configures en entres numriques ou en sorties
numriques. Ici on va configurer 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 dfinit 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.

(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;

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

utiliser

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

// configure BrocheLED comme une

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);
}

// 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:

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);
sortie
}

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
}

Tlcharger

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 !
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


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 ...)

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)

Niveaux logiques des connecteurs numriques


HIGH (tat 1)
LOW (tat 0)
INPUT (configur en entre)
OUTPUT (configur en sortie)

Oprations de comparaison

== (quivalent )
!= (diffrent de)
< (infrieur )
> (suprieur )
<= (infrieur ou gal )
>= (suprieur ou gal )

Operations boolnnes

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

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)

Autres commandes

// (commentaire simple ligne)


/* */ (commentaire multi-lignes)
#define ( donner une valeur un nom)

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

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


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 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.

Les condensateurs

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 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.

Le transistor

Ils peuvent tre polariss ou non, dans


des boitiers trs divers. Leur valeur
sexprime en Farad ( F)

non polaris

polaris

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

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.

Symboles
transistor NPN

transistor PNP

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)


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 potentiomtre

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 fil rsistif, etc

Le relais

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.

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 diode

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 configures 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 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 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.

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


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

-S
teur USB
a
t
p
a
d
a
l
r ici,

rie >

A note

ple

eur sim
t
p
a
c
n
e
zo
ge du pie

Pilotage

Monta

nL
a
r
c

te d

CD

de LEDs

par joyst

ick

Ds

e LE
d
e
g
a
t
Pilo

Pilo

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

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

Montage de boutons poussoirs et


interrupteurs

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

Attention, il est polaris...

Ne pas oublier le condensateur

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

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

(non corrigs)

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

Lexique

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

Das könnte Ihnen auch gefallen