Vous êtes sur la page 1sur 65

Cours d’Arduino

1
Arduino Board
• “Strong Friend” Created in Ivrea, Italy
• in 2005 by Massimo Banzi & David Cuartielles
• Open Source Hardware
• Processor
• Coding is accessible & transferrable  (C++, Processing, java)

2
Pourquoi Arduino…
• Déficulté hardaware (Réalisation d’un prototype)
• Déficulté softaware (programmation)

3
Le nécessaire
Le matériel

Le logiciel
http://arduino.cc/en/Main/Software

4
Simulation de la carte Arduino sous ISIS

• Téléchargement et installation du logiciel


Proteus
• Ajout de la librairy ArduinoLibs a la
bibliothèque ISIS
• Réalisation du montage sous ISIS
• Faire le lien entre l’environnement ISIS et
Arduino :Nom_fichier.cpp.hex
(C:\Users\admin\AppData\Local\Temp\buildxxx.tmp date heure)

5
Autres type de Cartes Arduino

6
Quelques types de cartes

LilyPad $20 Nano $26 Uno $30 Mega 2560 $60

7
Shields
• Ethernet
 MP3
• Wifi
 RS232
• GPS
• Data Logging  Smoke

• Cell Detector
• Video  Voltage
• Audio regulator
• Acelerometer
• XBee

8
Arduino Shields
PCB Built Shield Inserted Shield

9
Sparkfun Motor Driver Shield

Sparkfun Button LCD Shield


Empilement de shields
10
Arduino Hardware Variety
LilyPad DIY
(for clothing)
USB

Boarduino Kit

“Stamp”-sized
Bluetooth

many different variations to suite your needs 11


La carte Arduino Uno

12
PWR IN USB
(to Computer)

RESET

SCL\SDA
(I2C Bus)

POWER
5V / 3.3V / GND
Digital I\O
PWM(3, 5, 6, 9, 10, 11)

Analog
INPUTS

13
PWR IN USB
(to Computer)

RESET

SCL\SDA
(I2C Bus)

POWER
5V / 3.3V / GND
Digital I\O
PWM(3, 5, 6, 9, 10, 11)

Analog
INPUTS

14
Entrées/Sorties

15
Entrées
• Entrée Digital on or off (HIGH or LOW, respectivement).
– HIGH is 5VDC.
– LOW is 0VDC.
• Entrée Analogique 0 to 1023
– 0,0049 V par digit (4.9 mV)
– Temps réel est 100 de microsecondes (10,000 par second)

16
Le microcontrôleur AVR d’ATMEL
Architecture interne ATmega328

ATmega328 data sheet pp. 2, 5

17
http://www.adafruit.com/index.php?main_page=popup_image&pID=50
Caractéristiques ATmega328

ATmega328 data sheet p. 1

http://www.atmel.com/Images/Atmel-8271-8-bit-AVR-Microcontroller-
ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf 18
Absolute Maximums

ATmega328 data sheet p. 316

19
Installation de l’environnement
d’Arduino
Les Etapes
1. Télécharger le logiciel Arduino & et le décompresser
2. Connecter la carte Arduino
3. Installer le driver USB
4. Reboot
5. Rechercher le programme Blink dans la bibliothèque
des exemples
6. Compiler et télécharger le programme dans la carte

20
Charger et décompresser
• On the thumbdrives
– “arduino-0010-win.zip” for Windows
– “arduino-0010-mac.zip” for Mac OS X
• Unzip the zip file. Double-click on Mac

On Windows, right-click

Use “Extract All...”

• Find the “drivers” directory inside


21
Opération d’Installation du Driver
Sous Windows

22
Selection N°Port & Type de la carte connecté

Désigner le bon port Série (USB-Série)

pick “Diecimila”
23
Programmation de la carte Arduino
• Saisie du programme (sketch)

• Compilation du programme
(Controle sytaxique)

• Chargement du programme dans


la carte Arduino compilation

Essayer le programme“Blink” Chargement

TX/RX flash

sketch runs
24
Les différents Messages
Size depends on
complexity of your sketch

Uploading worked

Wrong serial port selected

Wrong board selected

nerdy cryptic error messages 25


Les différentsMessages
Taille du programme

Chargement réussit

Problème de Selection du port

Problème de selection de type de carte

26
Les opérations de chargement du programme

27
• void setup()
• {
• }

• void loop()
• {
• }

28
Syntaxe du langage Arduino
Commandes de structure du programme
Structure générale

Variables

Niveaux logiques des connecteurs numériques

29
Syntaxe du langage Arduino, suite

30
void setup()
{ Initialiser
}

void loop()
{ Répéter
}

31
Int Led=3;
#define Led 3
#define LedOn digitalWrite (Led, LOW)
#define LedOff digitalWrite (Led, HIGH)

void setup() {
PinMode (Led,OUTPUT)
}
void loop() {
LedOn;
delay(1000);
LedOff;
delay(1000);
}
32
If: le test de base
If (condition)
Test {
instruction
}

instruction If (condition){
instruction
}

La structure if est un test, ensuite le programme se poursuit

L’instruction peut s’exécuter 0 ou 1 fois

33
if…else: le test complet
If (condition)
Test
{
instruction1
}
else
instruction1 instruction2 {
instruction1
}

Avec if…else,
la condition fausse donne aussi lieu à une instruction.

Exactement 1 instruction s’exécute, soit instruction1, soit instruction2.


34
Introduction à la syntaxe des commandes Arduino
La cinquantaine d’éléments 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 téléchargé avec Arduino), également accessible dans le menu
“Aide” du logiciel.
Revoyons d’un peu plus près le programme de la page précédente, qui sert à faire clignoter une LED à partir d’une sortie numérique:

35
FadeOrBlink
Load “FadeOrBlink” sketch from the handout

Schematic is same as for


“Fading” sketch

Combines “Blink” & “Fading”


sketches into one, selected by
the button

36
Fading in and Fading Out
(Analog or Digital?)
• A few pins on the Arduino allow for us to
modify the output to mimic an analog signal.

• This is done by a technique called:


• Pulse Width Modulation (PWM)

37
Concepts: Analog vs. Digital
•To create an analog signal, the microcontroller uses a
technique called PWM. By varying the duty cycle, we
can mimic an “average” analog voltage.

•Pulse Width Modulation (PWM)

38
Project #2 – Fading
Introducing a new command…

•analogWrite(pin, val);

•pin – refers to the OUTPUT pin
(limited to pins 3, 5, 6, 9, 10, 11.) –
denoted by a ~ symbol

•val – 8 bit value (0 – 255).


• 0 => 0V | 255 => 5V

39
Move one of your LED pins over to Pin 9

• In Arduino, open up:


• File  Examples  01.Basics  Fade

40
Fade - Code Review

41
Fade - Code Review

42
Equipement en électronique interactive

Une plaque d’expérimentation (breadbord en anglais) permet de cabler de


nombreux composants sans faire de soudure, et en gardant un montage
entièrement démontable

43
Composants
Name Image Type Function Notes
Push Button Digital Input Switch - Closes Polarized, needs
or opens circuit resistor
Trim Analog Input Variable resistor Also called a
Trimpot.
potentiometer
Photoresistor Analog Input Light Dependent Resistance varies
Resistor (LDR) with light.
Relay Digital Output Switch driven by Used to control
a small signal larger voltages
Temp Sensor Analog Input Temp Dependent
Resistor
Flex Sensor Analog Input Variable resistor

Soft Trimpot Analog Input Variable resistor Careful of shorts

RGB LED Dig & Analog 16,777,216 Ooh... So pretty.


Output different colors
Components
46
Digital Input Sketch
Load “Sketchbook/Examples/Digital/Button”

Now you control the blinking

(How would you change it to blink the external LED you wired up?) 47
R G B

Color Mixing
Tri-color LED

• In the SIK, this is a standard –


Common Cathode LED

• This means the negative side


of the LED is all tied to Ground.

48
Project 3 – RGB LED

• Note: The longest


leg of the RGB
LED is the
Common
Cathode. This
goes to GND.

Use pins 5, 6, & 9

49
How many unique colors can you
create?

Use Colorpicker.com or
experiment on your own.
Pick out a few colors that
you want to try re-
creating for a lamp or
lighting display...
Play around with this with
the analogWrite()
command.

50
RGB LED Color Mixing
• int redPin = 5;
• int greenPin = 6;
• int bluePin = 9;

• void setup()
• {
• pinMode(redPin, OUTPUT);
• pinMode(greenPin, OUTPUT);
• pinMode(bluePin, OUTPUT);
• }

51
RGB LED Color Mixing

• void loop()
• {
• analogWrite(redPin, 255);
• analogWrite (greenPin, 255);
• analogWrite (bluePin, 255);
• }

52
Project: Mood Lamp / Light Sculpture

53
54
Connexion des Boutons poussoirs

void loop ()
{
if (digtalRead (Poussoir)==LOW)
{delay (2);
digitalWrite ( Led, LOW) ;
}
}
Bouton poussoir, interrupteur et micro rupteur
Le bouton poussoir est un interrupteur qui
ferme le circuit lorsqu’on appuie dessus et
l’ouvre lorsqu’on relâche.
Le micro rupteur est un bouton poussoir auquel
est ajouté une languette pour détecter un
contact.
Nom à utiliser dans le
Connecté à la broche
programme
bp1 D8 Bouton poussoir Micro rupteur

bp2 D7
bp3 D6 Exemple : fait tourner le
moteur dans un sens si on
bp4 D5 appuie sur le bouton
poussoir connecté à D8
Fonctions Commentaires

lire(nom); Permet de lire la valeur d’un void loop()


bouton poussoir.
If(etatnom==HIGH) Déclenche une action si le {
{ bouton poussoir est appuyé. lire(bp1);
ACTION DESIREE Sinon, déclenche une autre if (etatbp1==HIGH)
action désirée. { avancer(); }
}
else
else
HIGH : il est appuyé { arret(); }
{
LOW : il est relâché
ATION DESIREE }
}
Photorésistance (LDR)
La photorésistance est une résistance qui varie
en fonction de la luminosité.

La carte renvoie un nombre compris entre 0


(absence de lumière) et 1023 (luminosité
maximum).
Nom à utiliser dans le
Connecté à la broche
programme
ldr A0
lumiere -
Exemple : allume la LED si la quantité de lumière captée est
Fonctions Commentaires inférieure au seuil.

lirecapteur(ldr); Permet de lire une valeur de


luminosité. void loop()

If(lumiere>=seuil) Déclenche une action si la {


{ luminosité est supérieure ou lirecapteur(ldr) ;
ACTION DESIREE inférieure au seuil. Sinon, if(lumiere<=500)
déclenche une autre action {allumer(led1)}
} désirée.
else
else
seuil : {eteindre(led1)}
{ nombre entre 0 (luminosité }
ATION DESIREE min.) et 1023 (luminosité max.)
} Comparaisons possibles :
> ou < ou >= ou <=
Analog Sensors
2 Pin Analog Sensors = var. resistor
•Take two sensors -- Use the
Serial Monitor and find the
range of input values you get
for each sensor.

•MaxAnalogRead = _________

•MinAnalogRead = _________
Capteur de température
Le capteur de température permet à la carte de
calculer la température à proximité de ce
dernier.

Nom à utiliser dans le


Connecté à la broche
programme
- A2
temperature -

Fonctions Commentaires Exemple : allume la LED si la quantité de lumière captée est


inférieure au seuil.
liretemp(); Permet de lire une valeur de
luminosité.
void loop()
if(temperature>=seuil) Déclenche une action si la
{
{ température est supérieure
ou inférieure au seuil. Sinon, liretemp() ;
ACTION DESIREE if(temperature<=28)
déclenche une autre action
} désirée. {sens1() ;}
else seuil : else
{ nombre entre 0 et 50 en {arret() ;}
ATION DESIREE degré Celius. }
} Comparaisons possibles :
> ou < ou >= ou <=
Barrière infrarouge
Le module barrière infrarouge connecté à l’entrée analogique A3 permet de
détecter le passage d’un objet entre la LED infrarouge émettrice et le
phototransistor infrarouge récepteur.
Le nombre récupéré par l’interface arduino est compris entre 0 et 1023.
1023 est le nombre renvoyé si le faisceau infrarouge est coupé.

Nom à utiliser dans le


Connecté à la broche
programme
ir A3
barriere -

Fonctions Commentaires
Exemple : allume la LED si la quantité de lumière captée est
lirecapteur(irr); Permet de lire une valeur de inférieure au seuil.
luminosité.

If(barriere>=seuil) Déclenche une action si la si void loop()


{ le faisceau lumineux est
ACTION DESIREE coupé. Sinon, déclenche une {
autre action désirée. lirecapteur(ir) ;
}
seuil : if(barriere<=900)
else
nombre entre 0 (luminosité {allumer(led1)}
{ min.) et 1023 (luminosité max.)
ATION DESIREE
else
Comparaisons possibles : {eteindre(led1)}
} > ou < ou >= ou <= }
Servomoteur

Un servomoteur est un moteur dont on peut


commander la position angulaire, de 0° à 180°
avec précision.
Le fil jaune ou blanc se connecte à D9.

Fils Connecté à la broche


D9

Fil noir Gnd


Fil rouge 5V
Fil jaune ou blanc D9 Exemple : faire tourner le servomoteur de 0° à 45° par pas de

void loop()
Fonctions Commentaires {
angleservo(angle); angle est compris entre 0 et angleservo(0);
180. Il correspond à l’angle
auquel le servomoteur se
for(int i=0; i<=45; i+=5)
déplacera. {
angleservo(i);
pendant(500) ;
}

}
Connection d’un préactionneur

transistor relay solenoid valve

5V 5V

C
1kW 1kW C
B B
Arduino Arduino
E E
digital pin digital pin
Vue d’ensemble code
void setup() {
pinMode(8,OUTPUT);
}

void loop() {
digitalWrite(8, HIGH);
delay(500);
digitalWrite(8, LOW);
delay(2000);
}

wire to digital pin 8


12V
silver stripe toward
positive side

5V
solenoid
valve

63
En langue anglaise

http://www.arduino.cc/ : le site officiel.


http://tronixstuff.wordpress.com/tutorials/ : le blog tronixstuff avec plus de 50
tutoriels pour Arduino.
http://shieldlist.org/ : un site référençant des centaines de shields pour Arduino.
EathShine Design - Arduino Starters Kit Manual : un autre manuel pour débuter.
Adafruit learning system : une série de tutoriels pour débuter.
Arduino Projects to save the World : on peut aussi le télécharger gratuitement.
http://www.arduinoevilgenius.com/ : 30 Arduino Projects for the Evil Genius,
existe aussi gratuitement en version PDF.

64
Bibliographie et sitographie
En langue française▲
http://fr.flossmanuals.net/arduino/ : un manuel francophone à licence C.C très complet,
qui peut être commandé en version imprimée, exporté en PDF ou ePUB.
http://www.mon-club-elec.fr/ : le site de Xavier HINAULT, très complet également avec
des traductions en français du site officiel.
Atelier Arduino - Initiation à la mise en œuvre matérielle et logicielle de l'Arduino : un
livret un peu ancien, mais très bien fait pour débuter vos premiers bidouillages.
Arduino - Maîtrisez sa programmation et ses cartes d'interface (shields) par Christian
Tavernier.
Processing - Le manuel : le manuel du logiciel de création multimédia, un complément
indispensable pour interfacer vos applications Arduino.

65