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 lectronique et d'un environnement de programmation.
Sans tout connatre ni tout comprendre de l'lectronique, cet environnement matriel et logiciel
permet l'utilisateur de formuler ses projets par l'exprimentation directe avec l'aide de
nombreuses ressources disponibles en ligne.
Pont tendu entre le monde rel et le monde numrique, Arduino permet
d'tendre les capacits de relations humain/machine ou
environnement/machine.
Arduino est un projet en source ouverte : la communaut importante
d'utilisateurs et de concepteurs permet chacun de trouver les rponses
ses questions.

Matriel

La carte Arduino repose sur un circuit intgr (un mini ordinateur appel
galement micro-contrleur) associe des entres et sorties qui
permettent l'utilisateur de brancher diffrents types d'lments externes.
Il existe un grand nombre de variantes :
le Lilipad, pour fixer sur des vtements, le RBBB qui est une carte trs
petite et conomique etc...
http://arduino.cc/en/Main/Hardware
le Teensy, ne fait pas proprement partie des cartes Arduino, mais on peut le
programmer partir de l'environnement Arduino. Son processeur est plus
puissant, les E/S sont plus nombreuses, il est minuscule et on peut disposer
d'un interface USB MIDI natif...
http://www.pjrc.com/teensy/
La srie Mapple (et compatibles) est une
plateforme 100 fois plus puissante. La
programmation est similaire celle de
l'Arduino.

Logiciel
L'environnement de programmation Arduino
(IDE en anglais) est une application crite
en Java inspire du langage Processing.
L'IDE permet d'crire, de modifier un
programme et de le convertir en une srie
d'instructions comprhensibles pour la
carte.

Quelques exemples d'applications :


http://www.semageek.com/category/electronique/arduino-electronique/
New : pour crer un nouveau programme (sketch).
Open : ouvrir un programme existant. Le 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 ouvrir la fentre qui permet de visualiser les donnes transmise par le
port srie de l'Arduino (trs pratique pour le dbogage...)

historique

D'aprs Wired Magazine :


Le projet Arduino est n en hiver 2005. Massimo Banzi enseigne dans une cole de Design Ivrea
en Italie, et souvent ses tudiants se plaignent de ne pas avoir accs des solutions bas prix pour
accomplir leurs projets de robotique. Banzi en discute avec David Cuartielles, un ingnieur
Espagnol spcialis sur les micro-contrleurs
Ils dcident de crer leur propre carte en embarquant dans leur histoire un des tudiant de Banzi,
David Mellis qui sera charg de crer le langage de programmation allant avec la carte. En deux
jours David crira le code! Trois jours de plus et la carte tait creIls dcidrent de lappeler
Arduino (un bar frquent par les lves proximit de lcole)
Ca devient un hit tout de suite auprs des tudiants. Tout le monde arrive en faire quelquechose
trs rapidement sans mme avoir de connaissances particulire ni en lectronique ni en
informatique: rponse des capteurs, faire clignoter des leds, contrler des moteurs Ils publient
les schmas, investissent 3000 euros pour crer le premier lots de cartes: 200.
Les 50 premires partent directement des lves de lcole. En 2006 5 000 cartes venduesEn
2007 plus de 30 000! en 2011 : >120 000, sans compter les clones !

Prototype de l'Arduino.

Structure d'un programme

Le programme est lu par le micro-contrleur de haut vers le bas.


Une variable doit tre dclare avant d'tre utilise par une fonction.
La structure minimale est constitue :

en tte : dclaration des variables, des constantes, indication de l'utilisation de


bibliothques etc...

un setup (= initialisation) cette partie n'est lue qu'une seule fois, elle comprend les fonctions
devant tre ralises au dmarrage (utilisation des broches en entres ou en sortie, mise
en marche du midi, du port srie de l' I2C etc.....)

une loop (boucle) : cette partie est lue en boucle ! C'est ici que les fonctions sont ralises.

En plus de cette structure minimale, on peut ajouter :

des sous-programmes ou routines qui peuvent tre appeles tous moments dans
la boucle, trs pratiquer pour raliser des morceaux de codes rptitifs.

Des callbacks , ce sont des fonctions qui sont rappeles automatiquement depuis une
bibliothque.

rfrence :
Structure
Fonctions de base
Ces deux fonctions sont
obligatoires dans tout
programme en langage Arduino
:
void setup()
void loop()

Oprateurs
arithmtiques

= (galit)
+ (addition)
- (soustraction)
* (multiplication)
/ (division)
% (modulo)

Pointeurs
* pointeur
& pointeur
Voir galement :
Manipulation des Ports

Structures de contrle Syntaxe de base

if
if...else
for
switch case
while
do... while
break
continue
return
goto

Oprateurs de
comparaison

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

Oprateurs bit bit


& (ET bit bit)
|(OU bit bit)
^(OU EXCLUSIF bit
bit)
(NON bit bit)
<< (dcalage gauche)
>> (dcalage droite)

; (point virgule)
{} (accolades)
// (commentaire sur une
ligne)
/* */ (commentaire sur
plusieurs lignes)
#define
#include

Oprateurs
boolens
&& (ET boolen)
|| (OU boolen)
! (NON boolen)

Oprateurs composs
++ (incrmentation)
-- (dcrmentation) (
revoir)
+= (addition compose)
-= (soustraction
compose)
*= (multiplication
compose)
/= (division compose)
&= (ET bit bit
compos)
|= (OU bit bit
compos)

Variables et constantes
Les variables sont des expressions que vous pouvez utilisez dans les programmes pour stocker
des valeurs, telles que la tension de sortie d'un capteur prsente sur une broche analogique.

Constantes prdfinies Types des donnes


Les constantes prdfinies du
langage Arduino sont des
valeurs particulires ayant une
signification spcifique.
HIGH | LOW
INPUT | OUTPUT
true | false
A ajouter : constantes
dcimales prdfinies

Expressions
numriques
Expressions
numriques entires
Expressions
numriques virgule

Les variables peuvent tre de


type varis qui sont dcrits cidessous.
Synthse des types de
donnes Arduino
boolean
char
byte
int
unsigned int
long
unsigned long
float (nombres
virgules)
double (nombres
virgules)
Les chanes de
caractres
objet String NEW
Les tableaux de
variables
le mot-cl void
(fonctions)
word
PROGMEM
Voir galement :
Dclaration des
variables
Pour info : les types de
donnes avr-c

Conversion des types


de donnes

char()
byte()
int()
long()
float()
word()

Porte des variables et


qualificateurs

Porte des variables


static
volatile
const

Utilitaires
sizeof() (oprateur
sizeof )

Rfrence
Code ASCII

Fonctions
Entres/Sorties
Numriques
pinMode(broche, mode)
digitalWrite(broche,
valeur)
int digitalRead(broche)

Entres analogiques
int analogRead(broche)
analogReference(type)

Sorties "analogiques"
(gnration
d'impulsion)
analogWrite(broche,
valeur) - PWM

Entres/Sorties
Avances
tone()
noTone()
shiftOut(broche,
BrocheHorloge,
OrdreBit, valeur)
unsigned long
pulseIn(broche, valeur)

Communication
Serial

Temps

Trigonomtrie

unsigned long millis()


unsigned long micros()
delay(ms)
delayMicroseconds(us)

sin(rad)
cos(rad)
tan(rad)

Bits et Octets

Math
min(x, y)
max(x, y)
abs(x)
constrain(x, a, b)
map(valeur, toLow,
fromHigh, toLow,
toHigh)
pow(base, exposant)
sq(x)
sqrt(x)

Pour davantage de fonctions


mathmatiques, voir aussi la
librairie math.h : log, log10,
asin, atan, acos, etc...

lowByte()
highByte()
bitRead()
bitWrite()
bitSet()
bitClear()
bit()

Interruptions Externes
attachInterrupt(interrupti
on, fonction, mode)
detachInterrupt(interrupt
ion)

Interruptions
Nombres randomiss
(hasard)
randomSeed(seed)
long random(max)
long random(min, max)

interrupts()
noInterrupts()
Voir galement la librairie
interrupt.h.

http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.ReferenceEtendue

les bibliothques (librairies).


Les utilisateurs les plus avertis concoctent des bibliothques pour interfacer, le plus simplement
possible, une vaste diversit de composants (I2C, SPI...) et de fonctionnalits (MIDI, Ethernet,
OSC...)
Sans ces bibliothques, la programmation serait vraiment plus complexe ! utiliser sans
modration.
Les bibliothques doivent tre installes dans le rpertoire libraries et doivent tre inclues
dans le programme (exemple : #include <MIDI.h> ).

Dmarrer avec Arduino sous Windows


1 | Obtenir une carte Arduino et un cble USB

2 | Tlcharger l'environnement Arduino


Tlcharger le fichier ici : http://arduino.cc/en/Main/Software
dcompresser le fichier et le copier dans mes documents

3 | Raccorder la carte l'ordinateur


La diode verte doit s'allumer.

4 | Installation des pilotes du priphrique Srie-USB

lors d'un premier raccordement d'une carte UNO l'ordinateur, ce dernier recherche
automatiquement un pilote. Aprs quelques instants, l'ordinateur va indiquer qu'il n'a pas
trouv de pilote...

ouvrir executer en passant par le menu dmarrer

taper devmgmt.msc et taper sur la touche entre

Chercher et dployer la rubrique ports (COM et LPT).

Il doit apparatre une ligne Arduino UNO (COMxx)

faire un click droit sur Arduino UNO (COMxx) et choisir mettre jour le pilote... .

Choisir rechercher un pilote sur mon ordinateur

selectionner le fichier "ArduinoUNO.inf", qui se trouve dans le repertoire drivers de


l'installation de l'Arduino...

Windows va terminer l'installation des pilotes.

5 | Lancer l'aplication Arduino


Double -cliquer sur

6 | Ouvrir l'exemple blink


Ouvrir le programme (sketch)
File > Examples > 1.Basics > Blink.

7 | choisir la carte UNO

8 | slectionner le port srie


Choisir le port srie qui est utilis par la carte arduino : tools > serial port >
pour connatre quel port srie est utilis par la carte Arduino, lancer le gestionnaire de priphrique
(voir item 4).

9 | charger le programme dans la carte Arduino


Cliquer sur la touche upload

aprs quelques secondes, la LED orange qui est raccorde la broche 13 devrait clignoter.
En cas de problme : troubleshooting suggestions.
The text of the Arduino getting started guide is licensed under a Creative Commons AttributionShareAlike 3.0 License. Code samples in the guide are released into the public domain.

10

Confronter la thorie l'preuve de la ralit...


La carte Arduino est une petite chose fragile, il convient de bien en
comprendre ses limites d'utilisation et vrifier la compatibilit avec les
matriels que l'on souhaite y raccorder...

Tension :
le microcontrleur plac sur la carte est prvu pour fonctionner entre
3,3V et 5V.

Intensit :
le courant de sortie de chaque broche (D0 D13) ne doit pas dpasser
40mA
le courant issu du port USB ne doit pas dpasser 500mA
le courant soutir la broche 3,3V ne doit pas dpasser 50mA

exemple :
on souhaite actionner un moteur de 6W sous 5V par l'Arduino, aliment par l'USB, est-ce
ralisable ?
P = U.I

=> I = P/U => I = 1,2A

Au niveau du port USB ?


Au niveau d'une broche de sortie ?

11

Schmas de rfrence
LED :
Une diode lectroluminescente (DEL ou LED ) est un composant optolectronique capable dmettre de la lumire lorsquil est parcouru par un courant
lectrique.
Une diode lectroluminescente ne laisse passer le courant lectrique que dans un
seul sens (le sens passant).

lorsqu'elle est traverse par un courant, la LED oppose une tension fixe
1,9V pour une LED rouge,
3,2V pour les diodes blanches, ou autres couleurs
voir les notices des diodes avant d'utiliser.

Le courant dans la LED est aussi limit :


pour les LED ordinaires de 5mm, 24mA environ.
Certaines LED munies de 5 lments dans un mme boitier absorbe jusqu' 100mA. (ces LED ne
peuvent donc pas tre directement commandes par une sortie d'Arduino...)

raccordement l'Arduino :

calcul de la rsistance de protection :


R=

tension d ' alimentationtension LED


intensit en Ampre

Exemple : pour une diode rouge, l'Arduino aliment en 5V :


R=

12

bouton, interrupteur :

Remarque : lorsque le bouton n'est pas actionn, la broche 5 est en l'air , le fil va se comporter
comme une antenne de radio et l'tat de la broche va varier en permanence. Il faut donc que le
niveau logique de la broche d'entre soit fix en permanence. Pour cela on met en oeuvre une
rsistance de pullup qui va tirer le potentiel de la broche vers le 5V, lorsque le bouton est au
repos.
Void setup() {
pinMode(4, INPUT); // la broche 5 se comporte comme une entre
digitalWrite(4, HIGH); // une rsistance est raccorde entre la broche 5 et le+5V dans le microcontrolleur
}
void loop() {

if(digitalRead(4) == LOW) // attention, logique ngative...


{
//faire quelque chose lorsqu'on appuie sur le bouton.
}
}

13

moteur :

Les moteur lectriques 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 avec une diode de roue libre.
Il en va de mme avec les relais.
On peut aussi utiliser un transistor effet de champ type N : par exemple IRF Z34N

Servomoteur :
Un servomoteur est constitu d'un moteur, d'un
capteur de position et d'un rgulateur lectronique. Le
fonctionnement du moteur est asservi la position de
l'axe.
On le commande en lui indiquant quel angle doit
prendre son axe (entre 0 et 180) le moteur se met
alors en marche jusqu' ce que la position soit
atteinte.
En utilisant une bibliothque toute faite : #include
<Servo.h>
il devient trs simple de mettre en uvre des
servomoteurs de modlisme.
Raccordement :
marron : masse
rouge : +5V
orange : commande, raccorder une broche de sortie de
l'Arduino

14

potentiomtre, utilisation des entres analogiques

interface I2C :

15

Entre midi

Sortie midi :

16

les liens :
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?
n=Main.DebuterInstallationWindows
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?
n=Main.DebuterPresentationLogiciel
http://arduino.cc/fr/Main/DebuterPresentationLogiciel
http://arduino.cc/en/Guide/Windows#toc1
licence : CC
sources : http://arduino.cc/

17