Vous êtes sur la page 1sur 17

Initiation Arduino

Vous avez dit Arduino ?


(extraits du manuel floss : http://fr.flossmanuals.net/arduino/index )
Arduino est une plate-forme de prototypage d'objets interactifs usage cratif constitue d'une
carte lectroni!ue et d'un en"ironnement de programmation.
#ans tout conna$tre ni tout comprendre de l'lectroni!ue% cet en"ironnement matriel et logiciel
permet l'utilisateur de formuler ses projets par l'exprimentation directe a"ec l'aide de
nombreuses ressources disponibles en ligne.
&ont tendu entre le monde rel et le monde numri!ue% Arduino permet
d'tendre les capacits de relations humain/machine ou
en"ironnement/machine.
Arduino est un projet en source ou"erte : la communaut importante
d'utilisateurs et de concepteurs permet chacun de trou"er les rponses
ses !uestions.
Matriel
'
(a carte Arduino repose sur un circuit intgr (un mini ordinateur appel
galement micro-contr)leur) associe des entres et sorties !ui
permettent l'utilisateur de brancher diffrents types d'lments externes.
*l existe un grand nombre de "ariantes :
le (ilipad% pour fixer sur des "+tements% le ,--- !ui est une carte tr.s
petite et conomi!ue etc...
http://arduino.cc/en//ain/0ard1are
le 2eensy% ne fait pas proprement partie des cartes Arduino% mais on peut le
programmer partir de l'en"ironnement Arduino. #on processeur est plus
puissant% les 3/# sont plus nombreuses% il est minuscule et on peut disposer
d'un interface 4#- /*5* natif...
http://111.pjrc.com/teensy/
(a srie /apple (et compatibles) est une
plateforme '66 fois plus puissante. (a
programmation est similaire celle de
l'Arduino.
Logiciel
('en"ironnement de programmation Arduino
(*53 en anglais) est une application crite
en 7a"a inspire du langage &rocessing.
('*53 permet d'crire% de modifier un
programme et de le con"ertir en une srie
d'instructions comprhensibles pour la
carte.
8uel!ues exemples d'applications :
http://111.semagee9.com/category/electroni!ue/arduino-electroni!ue/
New : pour crer un nou"eau programme (s9etch).
Open : ou"rir un programme existant. (e menu n'est pas droulant cause d'un bug...pour
obtenir un menu droulant passer par file/open
Save : sauvegarde le programme, si vous voulez le sauvegarder sous un autre nom, passer
par file/save as
Serial Monitor : pour ou"rir la fen+tre !ui permet de "isualiser les donnes transmise par le
port srie de l'Arduino (tr.s prati!ue pour le dbogage...)
:
historique
5'apr.s ;ired /aga<ine :
(e projet Arduino est n en hi"er :66=. /assimo -an<i enseigne dans une cole de 5esign *"rea
en *talie% et sou"ent ses tudiants se plaignent de ne pas a"oir acc.s des solutions bas prix pour
accomplir leurs projets de roboti!ue. -an<i en discute a"ec 5a"id >uartielles% un ingnieur
3spagnol spcialis sur les micro-contr)leurs?
*ls dcident de crer leur propre carte en embar!uant dans leur histoire un des tudiant de -an<i%
5a"id /ellis !ui sera charg de crer le langage de programmation allant a"ec la carte. 3n deux
jours 5a"id crira le code@ 2rois jours de plus et la carte tait cre?*ls dcid.rent de lAappeler
Arduino (un bar fr!uent par les l."es proximit de lAcole)?
>a de"ient un hit tout de suite aupr.s des tudiants. 2out le monde arri"e en faire !uel!uechose
tr.s rapidement sans m+me a"oir de connaissances particuli.re ni en lectroni!ue ni en
informati!ue: rponse des capteurs% faire clignoter des leds% contr)ler des moteurs? *ls publient
les schmas% in"estissent B666 euros pour crer le premier lots de cartes: :66.
(es =6 premi.res partent directement des l."es de lAcole. 3n :66C = 666 cartes "endues?3n
:66D plus de B6 666@ en :6'' : E':6 666% sans compter les clones @
&rototype de l'Arduino.
B
Structure d'un programme
(e programme est lu par le micro-contr)leur de haut "ers le bas.
4ne "ariable doit +tre dclare a"ant d'+tre utilise par une fonction.
(a structure minimale est constitue :
en t+te : dclaration des "ariables% des constantes% indication de l'utilisation de
biblioth.!ues etc...
un setup (F initialisation) cette partie n'est lue !u'une seule fois% elle comprend les fonctions
de"ant +tre ralises au dmarrage (utilisation des broches en entres ou en sortie% mise
en marche du midi% du port srie de l' *:> etc.....)
une loop (boucle) : cette partie est lue en boucle @ >'est ici !ue les fonctions sont ralises.
3n plus de cette structure minimale% on peut ajouter :
des G sous-programmes H ou G routines H !ui peu"ent +tre appeles tous moments dans
la boucle% tr.s prati!uer pour raliser des morceaux de codes rptitifs.
5es G callbac9s H% ce sont des fonctions !ui sont rappeles automati!uement depuis une
biblioth.!ue.
I
rfrence :
Structure
Fonctions de base
>es deux fonctions sont
obligatoires dans tout
programme en langage Arduino
:
"oid setup()
"oid loop()
Structures de contrle
if
if...else
for
s1itch case
1hile
do... 1hile
brea9
continue
return
goto
Syntaxe de base
J (point "irgule)
KL (accolades)
// (commentaire sur une
ligne)
/M M/ (commentaire sur
plusieurs lignes)
Ndefine
Ninclude
Oprateurs
arithmtiques
F (galit)
O (addition)
- (soustraction)
M (multiplication)
/ (di"ision)
P (modulo)
Oprateurs de
comparaison
FF (gal )
@F (diffrent de)
Q (infrieur )
E (suprieur )
QF (infrieur ou gal )
EF (suprieur ou gal )
Oprateurs
boolens
RR (32 boolen)
SS (T4 boolen)
@ (UTU boolen)
Pointeurs
M pointeur
R pointeur
Voir galement :
/anipulation des &orts
Oprateurs bit bit
R (32 bit bit)
S(T4 bit bit)
W(T4 3X>(4#*Y bit
bit)
Z(UTU bit bit)
QQ (dcalage gauche)
EE (dcalage droite)
Oprateurs composs
OO (incrmentation)
-- (dcrmentation) (
re"oir)
OF (addition compose)
-F (soustraction
compose)
MF (multiplication
compose)
/F (di"ision compose)
RF (32 bit bit
compos)
SF (T4 bit bit
compos)
=
Variables et constantes
(es "ariables sont des expressions !ue "ous pou"e< utilise< dans les programmes pour stoc9er
des "aleurs% telles !ue la tension de sortie d'un capteur prsente sur une broche analogi!ue.
Constantes prdfinies
(es constantes prdfinies du
langage Arduino sont des
"aleurs particuli.res ayant une
signification spcifi!ue.
0*[0 S (T;
*U&42 S T42&42
true S false
A ajouter : constantes
dcimales prdfinies
Expressions
numriques
3xpressions
numri!ues enti.res
3xpressions
numri!ues "irgule
Types des donnes
(es "ariables peu"ent +tre de
type "aris !ui sont dcrits ci-
dessous.
#ynth.se des types de
donnes Arduino
boolean
char
byte
int
unsigned int
long
unsigned long
float (nombres
"irgules)
double (nombres
"irgules)
(es cha$nes de
caract.res
objet #tring U3;
(es tableaux de
"ariables
le mot-cl "oid
(fonctions)
1ord
&,T[/3/
Voir galement :
5claration des
"ariables
&our info : les types de
donnes a"r-c
Conersion des types
de donnes
char()
byte()
int()
long()
float()
1ord()
Porte des ariables et
qualificateurs
&orte des "ariables
static
"olatile
const
!tilitaires
si<eof() (oprateur
si<eof )
Rfrence
>ode A#>**
C
Fonctions
Entres"Sorties
#umriques
pin/ode (broche% mode)
digital;rite (broche%
"aleur)
int digital,ead(broche)
Entres analo$iques
int analog,ead(broche)
analog,eference (type)
Sorties %analo$iques%
&$nration
d'impulsion(
analog;rite (broche%
"aleur) - &;/
Entres"Sorties
)ances
tone ()
no2one ()
shiftTut (broche%
-roche0orloge%
Trdre-it% "aleur)
unsigned long
pulse*n(broche% "aleur)
Communication
#erial
Temps
unsigned long millis()
unsigned long micros()
delay (ms)
delay/icroseconds (us)
*ath
min (x% y)
max (x% y)
abs (x)
constrain (x% a% b)
map ("aleur% to(o1%
from0igh% to(o1%
to0igh)
po1 (base% exposant)
s! (x)
s!rt (x)
&our da"antage de fonctions
mathmati!ues% "oir aussi la
librairie math.h : log% log'6%
asin% atan% acos% etc...
#ombres randomiss
&hasard(
random#eed (seed)
long random(max)
long random(min% max)
Tri$onomtrie
sin (rad)
cos (rad)
tan (rad)
+its et Octets
lo1-yte ()
high-yte ()
bit,ead ()
bit;rite ()
bit#et ()
bit>lear ()
bit ()
,nterruptions Externes
attach*nterrupt (interrupti
on% fonction% mode)
detach*nterrupt (interrupt
ion)
,nterruptions
interrupts ()
no*nterrupts ()
Voir galement la librairie
interrupt.h.
http://111.mon-club-elec.fr/pm1i9i\reference\arduino/pm1i9i.php]nF/ain.,eference3tendue
les bibliothques !librairies"#
(es utilisateurs les plus a"ertis concoctent des biblioth.!ues pour interfacer% le plus simplement
possible% une "aste di"ersit de composants (*:>% #&*...) et de fonctionnalits (/*5*% 3thernet%
T#>...)
#ans ces biblioth.!ues% la programmation serait "raiment plus complexe @ ^ utiliser sans
modration.
(es biblioth.!ues doi"ent +tre installes dans le rpertoire G libraries H et doi"ent +tre inclues
dans le programme (exemple : Ninclude Q/*5*.hE ).
D
$marrer avec Arduino sous %indo&s
- . Obtenir une carte )rduino et un c/ble !S+

0 . Tlchar$er l'enironnement )rduino
2lcharger le fichier ici : http://arduino.cc/en//ain/#oft1are
dcompresser le fichier et le copier dans G mes documents H
1 . 2accorder la carte l'ordinateur
(a diode "erte doit s'allumer.
3 . ,nstallation des pilotes du priphrique Srie4!S+
lors d'un premier raccordement d'une carte 4UT l'ordinateur% ce dernier recherche
automati!uement un pilote. Apr.s !uel!ues instants% l'ordinateur "a indi!uer !u'il n'a pas
trou" de pilote...
ou"rir G executer H en passant par le menu dmarrer
taper devmgmt#msc et taper sur la touche G entre H
>hercher et dployer la rubri!ue G ports (>T/ et (&2).
*l doit appara$tre une ligne GArduino 4UT (>T/xx) H
faire un clic9 droit sur GArduino 4UT (>T/xx) H et choisir G mettre jour le pilote... H.
>hoisir G rechercher un pilote sur mon ordinateur H
selectionner le fichier 'Arduino()O#inf'% !ui se trou"e dans le repertoire G dri"ers H de
l'installation de l'Arduino...
;indo1s "a terminer l'installation des pilotes.
5 . 6ancer l'aplication )rduino
5ouble -cli!uer sur
_
7 . Ourir l'exemple 8 blin9 :
Tu"rir le programme (s9etch)
File * +,amples * -#.asics * .lin/.
`
; . choisir la carte !#O
< . slectionner le port srie
>hoisir le port srie !ui est utilis par la carte arduino : tools E serial port E ?
pour conna$tre !uel port srie est utilis par la carte Arduino% lancer le gestionnaire de priphri!ue
("oir item I).
= . char$er le pro$ramme dans la carte )rduino
>li!uer sur la touche G upload H
apr.s !uel!ues secondes% la (35 orange !ui est raccorde la broche 'B de"rait clignoter.
3n cas de probl.me : troubleshooting suggestions.
2he text of the Arduino getting started guide is licensed under a >reati"e >ommons Attribution-
#hareAli9e B.6 (icense. >ode samples in the guide are released into the public domain.
'6
0onfronter la thorie 1 l'preuve de la ralit###
(a carte Arduino est une petite chose fragile% il con"ient de bien en
comprendre ses limites d'utilisation et "rifier la compatibilit a"ec les
matriels !ue l'on souhaite y raccorder...
Tension :
le microcontr)leur plac sur la carte est pr"u pour fonctionner entre
B%BV et =V.
Intensit :
le courant de sortie de cha!ue broche (56 5'B) ne doit pas dpasser
I6mA
le courant issu du port 4#- ne doit pas dpasser =66mA
le courant soutir la broche G B%BV H ne doit pas dpasser =6mA
exemple :
on souhaite actionner un moteur de C; sous =V par l'Arduino% aliment par l'4#-% est-ce
ralisable ]
& F 4.* FE * F &/4 FE * F '%:A
Au ni"eau du port 4#- ]
Au ni"eau d'une broche de sortie ]
''
Schmas de rfrence
LED :
4ne diode lectroluminescente ($+2 ou 2+$ " est un composant opto-
lectroni!ue capable dAmettre de la lumi.re lors!uAil est parcouru par un courant
lectri!ue.
4ne diode lectroluminescente ne laisse passer le courant lectri!ue !ue dans un
seul sens (le sens passant).
lors!u'elle est tra"erse par un courant% la (35 oppose une tension fixe
'%`V pour une (35 rouge%
B%:V pour les diodes blanches% ou autres couleurs
"oir les notices des diodes a"ant d'utiliser.
(e courant dans la (35 est aussi limit :
pour les (35 ordinaires de =mm% :ImA en"iron.
>ertaines (35 munies de = l.ments dans un m+me boitier absorbe jus!u' '66mA. (ces (35 ne
peu"ent donc pas +tre directement commandes par une sortie d'Arduino...)
raccordement l')rduino >
calcul de la rsistance de protection >
R=
tension d ' alimentationtension LED
intensit en Ampre
3xemple : pour une diode rouge% l'Arduino aliment en =V :
, F
':
bouton, interrupteur :
,emar!ue : lors!ue le bouton n'est pas actionn% la broche = est G en l'air H% le fil "a se comporter
comme une antenne de radio et l'tat de la broche "a "arier en permanence. *l faut donc !ue le
ni"eau logi!ue de la broche d'entre soit fix en permanence. &our cela on met en oeu"re une
rsistance de G pullup H !ui "a tirer le potentiel de la broche "ers le =V% lors!ue le bouton est au
repos.
Void setup() K
pin/ode(I% *U&42)J // la broche = se comporte comme une entre
digital;rite(I% 0*[0)J // une rsistance est raccorde entre la broche = et leO=V dans le microcontrolleur
L
"oid loop() K
?
if(digital,ead(I) FF (T;) // attention% logi!ue ngati"e...
K
//faire !uel!ue chose lors!u'on appuie sur le bouton.
L
L
'B
moteur :
(es moteur lectri!ues courant continu consomment trop de courant pour +tre commands
directement par une broche de l'Arduino% de plus ils sont inductifs : ils crent des surtensions
leurs bornes% il faut donc protger le montage a"ec une diode de roue libre.
*l en "a de m+me a"ec les relais.
Tn peut aussi utiliser un transistor effet de champ type U : par exemple *,Y aBIU
Servomoteur :
4n ser"omoteur est constitu d'un moteur% d'un
capteur de position et d'un rgulateur lectroni!ue. (e
fonctionnement du moteur est asser"i la position de
l'axe.
Tn le commande en lui indi!uant !uel angle doit
prendre son axe (entre 6 et '_6b) le moteur se met
alors en marche jus!u' ce !ue la position soit
atteinte.
3n utilisant une biblioth.!ue toute faite : Ninclude
Q#er"o.hE
il de"ient tr.s simple de mettre en cu"re des
ser"omoteurs de modlisme.
,accordement :
marron : masse
rouge : O=V
orange : commande% raccorder une broche de sortie de
l'Arduino
'I
potentiomtre, utilisation es entres analogi!ues
interface I"# :
'=
Entre mii
Sortie mii :
'C
les liens :
http://111.mon-club-elec.fr/pm1i9i\reference\arduino/pm1i9i.php]
nF/ain.5ebuter*nstallation;indo1s
http://111.mon-club-elec.fr/pm1i9i\reference\arduino/pm1i9i.php]
nF/ain.5ebuter&resentation(ogiciel
http://arduino.cc/fr//ain/5ebuter&resentation(ogiciel
http://arduino.cc/en/[uide/;indo1sNtoc'
licence : >>
sources : http://arduino.cc/
'D