Vous êtes sur la page 1sur 78

Arduino

lcole
Apprendre aux lves programmer sur Arduino, c'est non seulement leur donner
la cl d'accs aux ordinateurs, mais aussi aux objets qui les entourent

v1.0 - janvier 2013


Frdric Genevey

Diduino Arduino

Merci Damien, Lionel, Kristijan et Nikola, lves de loption robotique 2012 des coles
dEcublens, qui ont eu la difficile tche de tester ce cours.

Merci Arnold Pasche de mavoir mis le pied ltrier et pour ses conseils en matire de
soudure et dlectricit.

Et enfin un merci tout particulier au Professeur Jean-Daniel Nicoud pour sa prcieuse aide
et son soutien.

http://www.edurobot.ch - 2012

Diduino Arduino
Prface !

propos dArduino et rfrences!

Objectifs du plan dtudes romand!

propos des schmas lectroniques!

10

Se procurer le matriel!

11

Installer Arduino sur Mac: aide-mmoire!


Pilote!
Installation du pilote!

12
12
12

Installation du logiciel Arduino!

13

Configuration du logiciel Arduino!

13

Slection du port srie!

13

Slection du type de carte Arduino!

13

Aide!

13

Matriel minimum!

14

Leons 1 8!

14

LEON 1: Dcouverte de la plateforme Arduino!

15

Arduino ou Diduino?!

16

Constitution de la carte!

17

Le microcontrleur!

18

Alimentation!

18

La connectique!

19

Connecteurs Diduino!

21

La platine dexprimentation!

21

Leon 2: la soudure!
http://www.edurobot.ch - 2012

22
3

Diduino Arduino
Leon 3: Les bases de llectronique !

23

Llectricit!

23

Le circuit lectrique!

25

Les diodes!

26

Les rsistances!

27

Leon 4: faire clignoter la LED!

30

Introduction!

30

Le menu!

31

La LED!

32

Code 1!

32

Introduction au code!

33

Le droulement du programme!

33

Le code minimal!

34

La fonction!

34

Les instructions!

35

Les points virgules ;!

35

Les accolades { }!

35

Les commentaires!

36

Les accents!

36

Analyse du code 1!

37

toi de jouer!!

38

Monter une LED!

39

Code 2!
Variante: faire clignoter deux LEDs!
Exercice 1:!

http://www.edurobot.ch - 2012

40
41
41

Diduino Arduino
Exercice 2:!

Leon 5: les variables !


Une variable, qu'est ce que c'est ?!
Le nom d'une variable!

41

42
42
42

Dfinir une variable!

43

Lincrmentation!

44

Faire clignoter une LED 10 fois!

45

Code 3!

45

Analyse du code!

46

Faire clignoter deux LED 20 fois!

47

Dfinir les pattes du microcontrleur!

48

Rsumons!!

valuation: K2000!

49

50

Introduction!

50

Les objectifs!

51

tape1: Schmas!

52

tape2: Programme!

53

Les feux de circulation!

54

tape1: Schmas!

55

tape2: Programme!

56

Corrig!

57

Variantes!

57

Leon 6: Input!

58

Le bouton poussoir!
Le bouton poussoir normalement ouvert (NO)!
http://www.edurobot.ch - 2012

58
58
5

Diduino Arduino
Le bouton poussoir normalement ferm (NF)!

58

Les interrupteurs!

58

Exercice 1: allumons cette LED!

59

Exercice 2: mais par o passe le courant?!

60

Protger lArduino!

61

Rsistance Pull-Down / Pull-Up!

62

Circuit avec une une rsistance pull-down!

62

Circuit avec une rsistance pull-up!

63

Rsistance pull-down ou pull-up?!

63

Exercice 3: montage avec rsistance pull-down (rappel au moins) !

64

Une petite variation de code!

67

Petits exercices: bouton poussoir et LED qui clignote!

68

Evaluation: vers linfini et au-del!!

69

Les objectifs!

69

Etape 1: les schmas!

71

tape2: Programme!

72

Leon 7: le barregraphe!

73

Introduction!

73

Schmas!

73

http://www.edurobot.ch - 2012

Diduino Arduino
Prface
propos dArduino et rfrences
Arduino est une plateforme open-source d'lectronique programme qui est base sur une
carte microcontrleur et un logiciel.
Arduino peut tre utilis pour dvelopper des objets interactifs, munis d'interrupteurs ou de
capteurs, et peut contrler une grande varit de lumires, moteurs ou toutes autres
sorties matrielles.
Nous pensons quArdiuno a sa place lcole. Ce document est donc principalement
destin aux enseignants et aux lves. Il sagit dune compilation de textes et dexercices,
parfois repris in extenso depuis les sources suivantes:

http://arduino.cc/fr/
http://sciences.siteduzero.com/tutoriel-3-515602-arduino-pour-bien-commencer-enelectronique-et-en-programmation.html
http://mediawiki.e-apprendre.net/index.php/Diduino-Robot
http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ARDUINO
http://www.didel.com/diduino/Cours01.pdf
http://www.didel.com/diduino/Cours02.pdf
http://chamayou.franck.free.fr/spip/spip.php?article177
http://www.hexapod-arduino.com
http://www.lagrottedubarbu.com
http://blog.makezine.com/arduino/
http://www.ladyada.net/learn/arduino/
http://www.craslab.org/arduino/livrethtml/LivretArduinoCRAS.html
http://arduino103.blogspot.ch
http://www.semageek.com

En cas dutilisation de ce document, partiellement ou dans sa totalit, vous tes


pris dy inclure ces sources.
Ce cours ne permet quune introduction llectronique. Un cours bien plus complet et
trs bien fait est disponible ici:
http://sciences.siteduzero.com/tutoriel-3-483697-l-electronique-de-zero.html

http://www.edurobot.ch - 2012

Diduino Arduino
Objectifs du plan dtudes romand
Voici une partie des objectifs du PER abords avec ce cours:

Objectifs de la discipline MSN


MSN 33 Rsoudre des problmes numriques et algbriques
-

en reconnaissant les caractristiques mathmatiques d'une situation et en la traduisant en


critures numrique ou littrale
en utilisant des proprits des oprations (+, -, x , :, puissance, racine carre et cubique)
en choisissant l'outil de calcul le mieux appropri la situation propose
en mobilisant l'algbre comme outil de calcul (quations), de preuve ou de gnralisation
en construisant, en exerant et en utilisant des procdures de calcul (calcul rflchi, algorithmes,
calculatrice, rpertoire mmoris) avec des nombres rels
en estimant un rsultat et en exerant un regard critique sur le rsultat obtenu

MSN 34 Mobiliser la mesure pour comparer des grandeurs


-

en connaissant le systme international d'units de mesures


en explorant des aspects culturels et historiques lis au systme d'units
en mobilisant l'instrument et l'unit de mesure adapts
en exprimant une mesure dans diffrentes units
en estimant l'importance relative des grandeurs dans un phnomne naturel ou social
en estimant la mesure des grandeurs
en calculant des grandeurs (rsistances, courant,)

MSN 35 Modliser des phnomnes naturels, techniques, sociaux ou des


situations mathmatiques
-

en mobilisant des reprsentations graphiques (codes, schmas, tableaux, graphiques,)


en associant aux grandeurs observables des paramtres
en triant, organisant et interprtant des donnes
en communiquant ses rsultats et en prsentant des modlisations

MSN 36 Analyser des phnomnes naturels et des technologies l'aide de


dmarches caractristiques des sciences exprimentales
-

en formulant des hypothses


en confrontant les hypothses mises des rsultats exprimentaux
en dfinissant des stratgies d'exploration et d'exprimentation en lien avec les hypothses
mises
en proposant des explications et en les confrontant celles de ses pairs et aux informations de
mdias varis

http://www.edurobot.ch - 2012

Diduino Arduino
Objectifs de la discipline AC&M
A 33 AC&M Exercer diverses techniques plastiques et artisanales
-

en matrisant des habilets de motricit globale et fine (souplesse, prcision, coordination,


rapidit du geste,)
en choisissant et utilisant divers outils et matriaux en fonction d'un projet
en matrisant des gestes artisanaux spcifiques, en exerant la prcision
en utilisant des techniques numriques

Objectifs de (FG) MITIC


FG 31 Exercer des lectures multiples dans la consommation et la production de
mdias et d'informations
-

en tudiant les manifestations de la socit de l'information et de la communication et


certaines de ses consquences
en analysant des images fixes et animes au moyen de la grammaire de l'image
en vrifiant les informations reues des mdias et en en produisant selon les mmes modes

Objectifs de (FG) Vivre ensemble et exercice de la dmocratie


FG 34 Planifier, raliser, valuer un projet et dvelopper une attitude
participative et responsable
-

en prenant une part active et des responsabilits dans un projet


en valuant ses actes et ses attitudes, en les ajustant si ncessaire
en laborant les tapes du projet, en recourant aux ressources pertinentes et en les valuant
en ngociant une dcision commune tout en tenant compte des intrts et des besoins
particuliers
en dbattant et en recherchant des rponses face des problmes concrets et des questions
thiques

Objectifs de la discipline MEP


MEP 34 Dvelopper des sujets, des projets favorisant une ouverture sur les
sciences du pass, actuelles et du futur...
-

Familiarisation avec des faons de faire et de raisonner propres la logique robotique,


notamment en:
identifiant les objectifs dune activit ainsi que les notions thoriques et pratiques qui en rsultent
planifiant, construisant et programmant le robot en fonction des observations et des mesures
effectues
testant le robot afin didentifier dventuelles erreurs de conception et en mettant en place des
stratgies de remdiation
Initiation l'utilisation d'outils et de procds simples afin de faire fonctionner un robot de
manire autonome

http://www.edurobot.ch - 2012

Diduino Arduino
propos des schmas lectroniques
Llectronique a ceci dintressant quon passe dun schma lectronique un montage,
ou au contraire, du schma lectronique au montage. Dans les deux cas, cest une activit
qui permet de travailler les objectifs suivants:

Objectifs de la discipline MSN


MSN 35 Modliser des phnomnes naturels, techniques, sociaux ou des
situations mathmatiques
-

en mobilisant des reprsentations graphiques (codes, schmas, tableaux, graphiques,)


en associant aux grandeurs observables des paramtres
en triant, organisant et interprtant des donnes
en communiquant ses rsultats et en prsentant des modlisations

MSN 36 Analyser des phnomnes naturels et des technologies l'aide de


dmarches caractristiques des sciences exprimentales
-

en formulant des hypothses


en confrontant les hypothses mises des rsultats exprimentaux
en dfinissant des stratgies d'exploration et d'exprimentation en lien avec les hypothses
mises
en proposant des explications et en les confrontant celles de ses pairs et aux informations de
mdias varis

Pour raliser les schmas lectroniques, nous utilisons les outils suivants, disponibles
gratuitement sur Mac et PC:
Solve Elec: !

http://www.physicsbox.com/indexsolveelec2fr.html

Fido Cadj:!

http://davbucci.chez-alice.fr/index.php?argument=elettronica/fidocadj/fidocadj.inc

Fritzing:!

http://fritzing.org

http://www.edurobot.ch - 2012

10

Diduino Arduino
Se procurer le matriel
Ce cours est bas sur un module compatible Arduino, appel Diduino.

Nous avons choisi le Diduino, car il possde une platine dexprimentation directement
intgre, et est livr avec de nombreux accessoires, tels que des rsistances, des LEDs,
des capteurs... bref, tout ce quil est ncessaire pour dbuter sur Arduino.
Enfin, le Diduino ncessite que lon soude les connecteurs. Cela ajoute ainsi une
comptence nos lves.
Le matriel ncessaire est donc:
Un Diduino (ou un Arduino)
Du matriel lectronique de base: LEDs, rsistances, fils, boutons poussoirs...
1 fer souder et de ltain
Le Diduino et tout le matriel ncessaire peuvent tre commands cette adresse:
http://www.didel.com
Il est aussi possible de commander du matriel Arduino et lectronique ces adresses:
Suisse:

http://www.play-zone.ch
http://www.conrad.ch

France & Belgique:

http://mchobby.be
http://www.conrad.fr
http://www.zartronic.fr
http://boutique.semageek.com/fr/
http://www.edurobot.ch - 2012

11

Diduino Arduino
Installer Arduino sur Mac 1: aide-mmoire
!

Pilote
Afin de pouvoir connecter un Diduino sur un Mac, il faut au pralable installer un pilote
srie-USB.
La dernire version du pilote se trouve ici: http://www.ftdichip.com/Drivers/VCP.htm

Mac dot dun processeur PowerPC (G4, G5):


choisir PPC
Mac dot dun processeur Intel:
10.3 10.5: choisir x86 (32-bit)
10.6 et 10.7: choisir x86 (64-bit)
Deux pilotes sont fournis: lun pour Mac OS 10.3 et
lautre pour Mac OS 10.4 10.6. Ce dernier fonctionne
aussi sous Mac OS 10.7 Lion.
Installation du pilote
Dcompresser larchive et ouvrir le pilote choisi. Suivre ensuite le processus dinstallation
standard.

Pour installer le logiciel sur PC: http://arduino.cc/fr/Main/DebuterInstallationWindows


http://www.edurobot.ch - 2012

12

Diduino Arduino

Installation du logiciel Arduino


Tlcharger le logiciel Arduino depuis cette page: http://arduino.cc/en/Main/
Software
Une fois larchive dcompresse, glisser le logiciel dans les applications.

Configuration du logiciel Arduino


Slection du port srie
Aller dans le menu Tools/Serial Port et slectionner
choix /dev/tty.usbserial-A1015M7N ou /dev/
cu.usbserial-A1015M7N.
Selon lusage, utiliser celui qui fonctionne le mieux.
Slection du type de carte Arduino
Aller dans le menu Tools/Board et slectionner
Arduino Duemilanive w/ ATmega328

Aide
Erreur programmer is not responding lors de lenvoi
du programme (upload) sur le robot: appuyer sur le
bouton reset du robot avant chaque envoi du
programme. Dbrancher et rebrancher le cble
USB produit le mme effet.

Sources
http://www.didel.com/diduino/Start.pdf
http://arduino.cc/en/Guide/MacOSX
http://fr.flossmanuals.net/_booki/arduino/arduino.pdf
http://myarduino.blogspot.com
http://www.edurobot.ch - 2012

13

Diduino Arduino

Matriel minimum
Voici le matriel ncessaire pour raliser les exercices de ce cours:

Leons 1 8
1 Diduino ou 1 Arduino Uno avec une platine dexprimentation
6 LEDs rouges
2 LEDs jaunes ou oranges
2 LEDs vertes
6 rsistances de 220 ou 470
1 rsistance de 10k
1 condensateur de 10nF (en option)
2 boutons poussoirs
Des cbles lectriques

http://www.edurobot.ch - 2012

14

Diduino Arduino
LEON 1: Dcouverte de la plateforme Arduino
Quest-ce quun ordinateur? La rponse la plus vidente est sans doute de dire quun
ordinateur, cest a:

Source: apple.com

Mais est-ce aussi simple? Car un ordinateur, cest aussi, cela:

Source: arduino.cc

cris ta dfinition du mot ordinateur:


!.................................................................................................................................
!.................................................................................................................................
Cite des objets qui contiennent des ordinateurs:

!.................................................................................................................................
!.................................................................................................................................
!.................................................................................................................................

http://www.edurobot.ch - 2012

15

Diduino Arduino
Arduino ou Diduino?
Arduino est un projet open-source. Cela signifie que tout le monde a accs librement aux
plans, au logiciel (et son code-source), ainsi quau langage de programmation. Tout le
monde peut donc modifier lArduino, crer des accessoires ou mme faire des copies de
lArduino et les vendre.
Les cartes originelles sont vendues par Arduino. Mais de nombreux autres fabricants en
commercialisent, plus ou moins proches des originaux. Cest le cas de lentreprise Didel2 ,
qui commercialise le Diduino.
Nous avons choisi de travailler avec le Diduino pour plusieurs raisons:

Didel est une entreprise locale. Cela compte aussi.


Le Diduino possde une platine dexprimentation (breadboard) intgre, ce qui
facilite son utilisation en classe

Le Diduino possde des connecteurs pour les Kidules3, ce qui permet dajouter de
nombreuses fonctions et de raliser de nombreuses expriences.

Le Diduino doit en partie tre mont et soud. Cest un excellent travail pour les
lves.
Ce cours reste nanmoins parfaitement utilisable avec un Arduino ou un compatible
Arduino

Cherche et note les dfinitions suivantes:


Open-source
!.................................................................................................................................
!.................................................................................................................................
!.................................................................................................................................
Code source
!.................................................................................................................................
!.................................................................................................................................

http://www.didel.com

http://www.didel.com/KidulesPub.pdf
http://www.edurobot.ch - 2012

16

Diduino Arduino
Constitution de la carte

http://www.edurobot.ch - 2012

17

Diduino Arduino
Le microcontrleur
Voil le cerveau de notre carte. Cest lui qui va recevoir le programme que nous allons
crer et qui va le stocker dans sa mmoire puis lexcuter. Grce ce programme, il va
savoir faire des choses, qui peuvent tre : faire clignoter une LED, afficher des caractres
sur un cran, envoyer des donnes un ordinateur...
Sur le Diduino, le processeur est cach sous la platine dexprimentation.

Avant de fixer la platine dexprimentation sur ton Diduino, fais un schma


aussi prcis que possible de la carte et entoure en rouge le microcontrleur.

Alimentation
Pour fonctionner, une carte Arduino a besoin d'une alimentation. Le microcontrleur
fonctionnant sous 5V, la carte peut tre alimente en 5V par le port USB ou bien par une
alimentation externe qui est comprise entre 7V et 12V. Un rgulateur se charge ensuite de
rduire la tension 5V pour le bon fonctionnement de la carte. Pas de danger de tout
griller donc! Veuillez seulement respecter l'intervalle de 7V 15V (mme si le rgulateur
peut supporter plus, pas la peine de le retrancher dans ses limites).
Attention: ne surtout pas mettre de plus de 6V sur la carte Diduino. Il n'y a pas de
rgulateur et donc pas de connecteur pour une alimentation extrieure. On peut mettre un
bloc de 3 ou 4 accus (ou piles). La tension accepte va de 3 6V.

http://www.edurobot.ch - 2012

18

Diduino Arduino
La connectique
La carte Arduino ne possdant pas de composants
(rsistances, diodes, moteurs...) qui peuvent tre
utiliss pour un programme, il est ncessaire de les
rajouter. Mais pour ce faire, il faut les connecter la
carte. C'est l qu'interviennent les connecteurs de la
carte.
Sur les Arduino et sur beaucoup de cartes
compatibles Arduino, les connecteurs se trouvent au
mme endroit. Cela permet de fixer des cartes
dextension, appele shields.

http://www.edurobot.ch - 2012

19

Diduino Arduino

Sur Diduino, les sorties analogiques sont numrotes A14 A19.


Sur Arduino, les sorties analogiques sont numrotes A0 A5.

http://www.edurobot.ch - 2012

20

Diduino Arduino
Connecteurs Diduino
+5V: ! !
Gnd: !!
D0-D13:!
A14-A19:!
Kidules:!

tension +5V
masse (tension 0V)
Connexions aux pattes du micro-contrleur
Entres analogiques pour capteurs
Connecteurs pour Kidules

La platine dexprimentation
La platine dexprimentation est intgre sur le Diduino.
Elle permet de connecter les composants entre eux et de crer des
circuits. Il y a 17 ranges. Dans chaque range, il y a deux groupes
de 5 colonnes, spars par une tranche au milieu.
Tous les connecteurs dans une range de 5 sont connects entre
eux. Donc si on branche deux lments dans un groupe de 5
connecteurs, ils seront relis entre eux.

Sur la plupart des autres cartes Arduino, il ny a pas de breadboard. Il faut donc lacqurir
part. Il en existe de plusieurs types et de plusieurs tailles.

http://www.edurobot.ch - 2012

21

Diduino Arduino
Leon 2: la soudure
Certains modules Arduino, comme le Diduino, ncessitent un petit travail de soudure.
Pour raliser cette tape: nous avons besoin:

Dun fer souder, panne 4 fine

De fil souder, fin

De tresse dessouder, en cas derreur

ventuellement, de graisse souder

Dun support pour le module

Dune pince coupante fine

Apprendre souder:

http://www.didel.com/Soudure.pdf

http://mightyohm.com/files/soldercomic/translations/Souder%20c'est
%20facile_FR.pdf

Attention!

Le fer souder va devenir trs chaud! Attention aux brlures!


Ne pas respirer les vapeurs de soudure! Toxique!
La soudure doit tre ralise aussi soigneusement que possible. Il faut prendre son temps
et tre soigneux.
4

La panne est la pointe du fer souder


http://www.edurobot.ch - 2012

22

Diduino Arduino
Leon 3: Les bases de llectronique
Llectricit
Llectricit est un dplacement dlectrons dans un milieu conducteur.
Pour que ces lectrons se dplacent tous dans un mme sens, il faut qu'il y ait une
diffrence du nombre d'lectrons entre les deux extrmits du circuit lectrique.
Pour maintenir cette diffrence du nombre d'lectrons, on utilise un gnrateur (pile,
accumulateur, alternateur...)
La diffrence de quantit dlectrons entre deux parties dun circuit sappelle la diffrence
de potentiel et elle se mesure en Volts (V).

On peut comparer le fonctionnement dun circuit lectrique celui dun barrage


hydrolectrique:

Les lectrons seraient leau


Le gnrateur serait le rservoir deau
Les conducteurs sont naturellement les conduites forces
Le consommateur (une ampoule ou une diode, par exemple) est la turbine, qui
exploite lnergie du dplacement des lectrons
http://www.edurobot.ch - 2012

23

Diduino Arduino

Sur un barrage, plus la diffrence entre laltitude du niveau du rservoir et celui de la


turbine est importante, plus la pression de leau sera importante. Pour un barrage on
appelle cette diffrence daltitude hauteur de chute. Cela quivaut sur un circuit lectrique
la diffrence de potentiel, qui se mesure en Volts (V) et se note U.
Le dbit de leau (=la quantit deau qui scoule par unit de temps) correspond
lintensit, aussi appele courant, qui est donc le dbit dlectrons. Elle se mesure en
Ampres (A) et se note I.
La puissance lectrique se note P et se mesure en Watts (W). Elle exprime la quantit de
courant (I), transforme en chaleur ou en mouvement. Sur un barrage, elle correspond
lnergie produite par la turbine.

La puissance P est le produit de la tension U et du courant I

Complte les expressions suivantes:

Pour une dcouverte ludique de llectricit, je vous conseille de regarder le Cest pas
sorcier consacr ce thme:
Partie 1: http://00.lc/cl
Partie 2: http://00.lc/cm

http://www.edurobot.ch - 2012

24

Diduino Arduino
Le circuit lectrique
Ainsi, une pile est constitue dun milieu contenant de nombreux lectrons en trop, et dun
second milieu en manque dlectrons. Quand on relie les deux ples de la pile (le + et le -)
avec un fil lectrique (le conducteur), les lectrons vont alors se dplacer du milieu riche
vers le milieu pauvre. Si on intercale une lampe lectrique, le passage des lectrons va
gnrer de la lumire.

Circuit lectrique
Voici le schma lectrique du circuit ci-dessus:

Pile

+
Lampe
-

Interrupteur

http://www.edurobot.ch - 2012

25

Diduino Arduino
Les diodes
Il est possible de remplacer lampoule par une diode lectroluminescente, aussi appele
LED 5. Elle a la particularit de ne laisser passer le courant lectrique que dans un sens.
Rsine poxy
Fil de liaison
Cavit rflchissante
Puce semi-conductrice
Enclume
Borne

Anode

Grille de connexion

Mplat

Cathode

Le courant lectrique ne peut traverser la diode que dans le sens de lanode vers la
cathode.
On reconnait lanode, car il sagit de la patte la plus longue.
Lorsque les deux pattes sont de mme longueur, on peut
distinguer lanode de la cathode, par un mplat du ct de cette
dernire.
Le symbole de la LED est le suivant:

Attention: le courant produit par lArduino est trop important pour y brancher directement
une LED dessus. Lutilisation dune rsistance est obligatoire, pour ne pas endommager la
LED.

http://fr.wikipedia.org/wiki/Diode_lectroluminescente
http://www.edurobot.ch - 2012

26

Diduino Arduino
Les rsistances
Une rsistance est un composant lectronique ou lectrique dont la
principale caractristique est d'opposer une plus ou moins grande
rsistance (mesure en ohms: ) la circulation du courant lectrique.
On peut alors comparer, le dbit deau au courant lectrique I (qui est
dailleurs le dbit dlectrons), la diffrence de pression la diffrence de
potentiel lectrique (qui est la tension U) et, enfin, le rtrcissement la rsistance R.

Courant de l'eau

Rtrcissement

Rsistance
(milieu peu conducteur)
Courant lectrique

Ainsi, pour une tension fixe, plus la rsistance est faible, plus le courant la traversant est
fort. Cette proportion est vrifie par la loi dOhm:

http://www.edurobot.ch - 2012

27

Diduino Arduino

Une rsistance est un milieu peu conducteur; les lectrons peinent sy


dplacer. Leur nergie se dissipe alors en gnral sous forme de chaleur. Cest
ce principe utilis pour les bouilloires lectriques ou les ampoules filaments.
La valeur de la rsistance se mesure en Ohms (). La valeur dune rsistance
est dtermine par ses bandes de couleurs.

Outre le tableau ci-dessus, on peut saider du petit mode demploi qui se trouve ici:
http://www.apprendre-en-ligne.net/crypto/passecret/resistances.pdf
La rsistance est schmatise de ces deux manires:

Un calculateur de valeurs de rsistances est disponible cette adresse:


http://edurobot.ch/resistance/
http://www.edurobot.ch - 2012

28

Diduino Arduino

Quelle est la valeur de ces rsistances?

Et celle-ci?

http://www.edurobot.ch - 2012

29

Diduino Arduino
Leon 4: faire clignoter la LED
Introduction
Le Diduino possde une LED monte sur le port 13.

Comme premier programme, nous allons la faire clignoter. La programmation se fait dans
le logiciel Arduino.

http://www.edurobot.ch - 2012

30

Diduino Arduino

Le menu

Bouton 1 : !
!
!
Bouton 2 : !
Bouton 3 : !
Bouton 4 : !
Bouton 5 : !

Ce bouton permet de vrifier le programme, il actionne un module qui


cherche les erreurs dans le programme
Envoi du programme sur lArduino
Crer un nouveau fichier
Ouvrir un fichier existant
Enregistrer un fichier

Commenons tout de suite par un petit code. Nous lanalyserons ensuite:

http://www.edurobot.ch - 2012

31

Diduino Arduino

La LED
Code 1
/*
Code 1 - Edurobot.ch, destin au Diduino/Arduino
Objectif: faire clignoter la LED monte sur le port 13
*/
//***** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est excute en premier et une seule fois, au dmarrage
du programme
void setup()

// dbut de la fonction setup()

{
pinMode(13, OUTPUT);
Serial.begin(9600);

// Initialise la patte 13 comme sortie


// Ouvre le port srie 9600 bauds

// fin de la fonction setup()

//***** FONCTION LOOP = Boucle sans fin = coeur du programme *****


// la fonction loop() s'excute sans fin en boucle aussi longtemps
l'Arduino est sous tension
void loop()

que

// dbut de la fonction loop()

{
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}

Tlcharger le code: !

//
//
//
//

Met la patte 13 au niveau haut = allume la LED


Pause de 500ms
Met la patte 13 au niveau bas = teint la LED
Pause 500ms

// fin de la fonction setup()

http://www.edurobot.ch/code/code1.txt

Une fois le code crit (ou coll) dans la fentre de programmation, il faut lenvoyer sur le
Diduino. Pour cela, il faut cliquer sur le bouton upload (tlverser), naturellement aprs
avoir connect le Diduino lordinateur!
http://www.edurobot.ch - 2012

32

Diduino Arduino
Introduction au code
Le droulement du programme
Le programme se droule de la faon suivante :
1. Prise en compte des instructions de la partie dclarative
2. Excution de la partie configuration ( fonction setup( ) ),
3. Excution de la boucle sans fin ( fonction loop ( ) ): le code compris dans la boucle sans
fin est excut indfiniment.

Droulement du programme

En-tte dclarative

Fichiers d'inclusion
Dclaration des constantes
Dclaration des variables globales

Conguration initiale

Fonction Loop

Dclaration des variables locales


Conguration des pattes
Initialisation des variables
Initialisation des fonctionnalits
Initialisation des interruptions

Instructions excutes en boucle

Boucle sans n

Fonction Setup

Nous verrons petit petit les divers lments prsents dans le schma. Limportant pour le
moment est de savoir quun programme est divis en trois parties: en-tte dclarative,
fonction setup et fonction loop.
La suite va nous permettre dentrer dans le code minimal: les fonctions setup et loop.

http://www.edurobot.ch - 2012

33

Diduino Arduino
Le code minimal6
Avec Arduino, nous devons utiliser un code minimal lorsque l'on cre un programme. Ce
code permet de diviser le programme que nous allons crer en deux grosses parties.
void setup()
{

//fonction d'initialisation de la carte


//contenu de l'initialisation

}
void loop()
{

//fonction principale, elle se rpte (sexcute) l'infini


//contenu du programme

Nous avons donc devant nous le code minimal qu'il faut insrer dans notre programme.
Mais que peut-il bien signifier pour quelqu'un qui n'a jamais programm ?
La fonction
Dans ce code se trouvent deux fonctions. Les fonctions sont en fait des portions de code.
void setup()
{

//fonction d'initialisation de la carte


//contenu de l'initialisation
//on crit le code l'intrieur

Cette fonction setup() est appele une seule fois lorsque le programme commence. C'est
pourquoi c'est dans cette fonction que l'on va crire le code qui n'a besoin d'tre excut
quune seule fois. On appelle cette fonction : "fonction d'initialisation". On y retrouvera la
mise en place des diffrentes sorties et quelques autres rglages. C'est un peu le checkup de dmarrage. Imaginons un pilote d'avion dans sa cabine qui fait l'inventaire :
- patte 2 en sortie, tat haut ?
- OK
- timer 3 15 millisecondes ?
- OK

Source de cette partie: http://sciences.siteduzero.com/tutoriel-3-515617-le-langage-arduino-1-2.html


http://www.edurobot.ch - 2012

34

Diduino Arduino
Une fois que l'on a initialis le programme, il faut ensuite crer son "cur", autrement dit
le programme en lui mme.
void loop()
{

//fonction principale, elle se rpte (sexcute) l'infini


//contenu du programme

C'est donc dans cette fonction loop() que lon va crire le contenu du programme. Il faut
savoir que cette fonction est appele en permanence, c'est--dire qu'elle est excute une
fois, puis lorsque son excution est termine, on la rexcute et encore et encore. On
parle de boucle infinie.
Les instructions
Maintenant que nous avons vu la structure des fonctions, regardons ce quelles peuvent
contenir.
Les instructions sont des lignes de code qui disent au programme : "fait ceci, fait cela..."
C'est tout bte, mais trs puissant, car c'est ce qui va orchestrer notre programme.
Les points virgules ;
Les points virgules terminent les instructions. Si par exemple je dis dans mon
programme : "appelle la fonction couperDuSaucisson" je dois mettre un point virgule aprs
l'appel de cette fonction.
Les points virgules ( ; ) sont synonymes d'erreurs, car il arrive trs souvent de les oublier
la fin des instructions. Par consquent le code ne fonctionne pas. Il faut donc tre trs
attentif ne pas oublier de point virgule!
Les accolades { }
Les accolades sont les "conteneurs" du code du programme. Elles sont propres aux
fonctions, aux conditions et aux boucles. Les instructions du programme sont crites
l'intrieur de ces accolades.
Pour ouvrir une accolade sur Mac, taper alt-8 et alt-9 pour la fermer.

http://www.edurobot.ch - 2012

35

Diduino Arduino
Les commentaires
Les commentaires sont des lignes de codes qui seront ignores par le programme. Elles
ne servent en rien lors de l'excution du programme.
Mais alors c'est inutile ?
Non, car cela va nous permettre nous et aux programmeurs qui lirons notre code (s'il y
en a) de savoir ce que signifie la ligne de code que nous avons crite. C'est trs important
de mettre des commentaires et cela permet aussi de reprendre un programme laiss dans
l'oubli plus facilement !
Ligne unique de commentaire :
//cette ligne est un commentaire sur UNE SEULE ligne

Ligne ou paragraphe sur plusieurs lignes :


/*cette ligne est un commentaire, sur PLUSIEURS lignes
qui sera ignor par le programme, mais pas par celui qui lit le code ;) */

Les accents
Il est formellement interdit de mettre des accents en programmation! Sauf dans les
commentaires.

http://www.edurobot.ch - 2012

36

Diduino Arduino
Analyse du code 1 7
Revenons maintenant notre code.

La ligne pinMode(13, OUTPUT); initialise la patte 13 du microcontrleur comme sortie,


c'est--dire que des donnes seront envoyes depuis le microcontrleur vers cette
patte.
La ligne Serial.begin(9600); initialise le port srie qui permet au robot d'envoyer et de
recevoir des informations l'ordinateur.
Avec l'instruction digitalWrite(13, HIGH);, le microcontrleur connecte la patte D13 au
+5V ce qui a pour effet d'allumer la LED.
L'instruction delay(500); indique au microcontrleur de ne rien faire pendant 500
millisecondes, soit seconde.
Avec l'instruction digitalWrite(13, LOW);, le microcontrleur connecte la patte D13 la
masse (Gnd) ce qui a pour effet d'teindre la LED.
L'instruction delay(500); indique au microcontrleur nouveau de ne rien faire pendant
500ms soit seconde.
Le rsultat est donc que la LED s'allume pendant seconde, puis s'teint pendant une
seconde puis s'allume pendant seconde... elle clignote donc.

Source: http://00.lc/ce
http://www.edurobot.ch - 2012

37

Diduino Arduino
toi de jouer!
Fais varier les valeurs de linstruction delay. Indique ci-dessous la valeur choisie et le
rsultat obtenu:
Essai 1:
digitalWrite(13, HIGH);
delay(.....);
digitalWrite(13, LOW);
delay(.....);

Rsultat:!_______________________________________________________________

Essai 2:
digitalWrite(13, HIGH);
delay(.....);
digitalWrite(13, LOW);
delay(.....);

Rsultat:!_______________________________________________________________

Essai 3:
digitalWrite(13, HIGH);
delay(.....);
digitalWrite(13, LOW);
delay(.....);

Rsultat:!_______________________________________________________________

http://www.edurobot.ch - 2012

38

Diduino Arduino
Monter une LED
Nous allons maintenant raliser le schma suivant:
Gnd

D10

Fais attention ne pas te tromper de rsistance et bien monter la LED dans le bon sens.

http://www.edurobot.ch - 2012

39

Diduino Arduino
Code 2
Modifie le code ci-dessous, afin de faire clignoter la LED sur la patte 13.
/*
Code 2 - Edurobot.ch, destin au Diduino
Objectif: faire clignoter la LED monte sur la patte 13
*/
void setup() {
// Initialise la patte 13 comme sortie
pinMode(13, OUTPUT);
// Ouvre le port srie 9600 bauds
Serial.begin(9600);
}
void loop() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}

//
//
//
//

allume
attend
teint
attend

la LED
500ms
la LED
500ms

Tu trouveras le corrig ici: http://edurobot.ch/code/code2.txt


Remplace maintenant la rsistance par une autre de 220 . Que constates-tu, et
comment lexpliques-tu?

Ralise le schma lectronique du montage que tu viens de raliser.

http://www.edurobot.ch - 2012

40

Diduino Arduino
Variante: faire clignoter deux LEDs
Ralise le montage suivant:

Exercice 1:
Modifie le code 2 pour faire clignoter les deux LEDs en mme temps.
Corrig: http://www.edurobot.ch/code/code2-1.txt

Exercice 2:
Modifie ton code pour faire clignoter les LEDs en alternance.
Corrig: http://www.edurobot.ch/code/code2-2.txt

http://www.edurobot.ch - 2012

41

Diduino Arduino
Leon 5: les variables
Nous l'avons vu, dans un microcontrleur, il y a plusieurs types de mmoire. Nous nous
occuperons seulement de la mmoire "vive" (RAM) et de la mmoire "morte" (EEPROM).
Je vais vous poser un problme. Imaginons que vous avez connect un bouton poussoir
sur votre carte Arduino. Comment allez-vous stocker l'tat du bouton (appuy ou pas) ?

Une variable, qu'est ce que c'est ?


Une variable est un nombre. Ce nombre est stock dans un espace de la mmoire vive
(RAM) du microcontrleur. La manire qui permet de les stocker est semblable celle
utilise pour ranger des chaussures : dans un casier numrot.
Ce nombre a la particularit de changer de valeur. trange n'est-ce pas ? Et bien pas tant
que a, car une variable est en fait le conteneur du nombre en question. Et ce conteneur
va tre stock dans une case de la mmoire. Si on matrialise cette explication par un
schma, cela donnerait :
nombre variable mmoire
le symbole "" signifiant : "est contenu dans..."
Imagine que tu stockes ta variable dans un container. Chaque container est lui, dpos
dans une case bien prcise, afin de le retrouver.

Le nom d'une variable


Le nom de variable n'accepte que l'alphabet alphanumrique ([a-z], [A-Z], [0-9]) et _
(underscore)
http://www.edurobot.ch - 2012

42

Diduino Arduino
Dfinir une variable
Si on donne un nombre notre programme, il ne sait pas si c'est une variable ou pas. Il
faut le lui indiquer. Pour cela, on donne un type aux variables. Oui, car il existe plusieurs
types de variables ! Par exemple la variable "x" vaut 4 :
x = 4;

Et bien ce code ne fonctionnerait pas car il ne suffit pas ! En effet, il existe une multitude
de nombres : les nombres entiers, les nombres dcimaux, ... C'est pour cela qu'il faut
assigner une variable un type.
Voil les types de variables les plus rpandus

Par exemple, si notre variable "x" ne prend que des valeurs dcimales, on utilisera les
types int, long, ou char. Si maintenant la variable "x" ne dpasse pas la valeur 64 ou 87,
alors on utilisera le type char.
char x = 0;

Si en revanche x = 260, alors on utilisera le type suprieur (qui accepte une plus grande
quantit de nombre) char, autrement dit int ou long.
Mais t'es pas malin, pour viter les dpassements de valeur ont met tout dans des double
ou long !
Oui, mais NON. Un microcontrleur, ce n'est pas un ordinateur 2GHz multicore, 4Go de
RAM ! Ici on parle d'un systme qui fonctionne avec un CPU 16MHz (soit 0,016 GHz) et
2 Ko de SRAM pour la mmoire vive. Donc deux raisons font qu'il faut choisir ses
variables de manire judicieuse :
- La RAM n'est pas extensible, quand il y en a plus, y en a plus !

http://www.edurobot.ch - 2012

43

Diduino Arduino
Le processeur est de type 8 bits (sur Arduino UNO), donc il est optimis pour faire des
traitements sur des variables de taille 8 bits, un traitement sur une variable 32 bits prendra
donc (beaucoup) plus de temps !
Si prsent notre variable "x" ne prend jamais une valeur ngative (-20, -78, ...), alors on
utilisera un type non-sign. C'est dire, dans notre cas, un char dont la valeur n'est plus
de -128 +127, mais de 0 255.
Voici le tableau des types non signs, on repre ces types par le mot unsigned (de
l'anglais : non-sign) qui les prcde :

Une des particularits du langage Arduino est qu'il accepte un nombre plus important de
types de variables, listes dans ce tableau:

Lincrmentation
Il est possible dappliquer des variables diverses oprations mathmatiques.
Commenons tout de suite par un petit exemple: lincrmentation. Il sagit simplement
dadditionner 1 la variable. A chaque fois quon rpte le code, on ajoute 1 la variable.
Cela se fait grce ce code (var tant une variable choix):
var++;
var++; revient crire : "var = var + 1;"

http://www.edurobot.ch - 2012

44

Diduino Arduino

Faire clignoter une LED 10 fois


Code 3
Lobjectif est de faire clignoter une LED 10 fois. Le
montage est toujours le mme.
/*
Code 3 - Edurobot.ch, destin au Diduino/Arduino
Objectif: faire clignoter 10 fois la LED monte
sur le port 10
*/
//***** EN-TETE DECLARATIVE *****
// On dclare les variables, les constantes,...
byte compteur;

//On dfinit la variable "compteur"

//***** FONCTION SETUP = Code d'initialisation *****


// La fonction setup() est excute en premier et une seule fois, au dmarrage
du programme
void setup()
{
pinMode(10, OUTPUT);

// Initialise la patte 10 comme sortie

Serial.begin(9600);

// Ouvre le port srie 9600 bauds

// Excute le programme entre accolades en partant de zro et en incrmentant


chaque fois la valeur de +1: 0+1/2+1/3+1... jusqu ce que la variable
compteur soit gale 10.
for(compteur=0 ; compteur<10 ; compteur++)
{
digitalWrite(10, HIGH);
delay(500);
digitalWrite(10, LOW);
delay(500);

//
//
//
//
//

dbut du programme excut 10 fois


allume la LED
attend 500ms
teint la LED
attend 500ms

}
}

// fin du programme excut 10 fois

void loop() {
}

// vide, car programme dj excut dans setup

Tlcharger le code: http://edurobot.ch/code/code3.txt


http://www.edurobot.ch - 2012

45

Diduino Arduino
Analyse du code 8
La ligne byte compteur; permet de crer une variable compteur. Byte indique le type de la
variable, c'est--dire le type de donnes que l'on pourra stocker dans cette variable.
Comme nous lavons dj vu, le type byte permet de stocker des valeurs comprises entre
0 et 255.
La ligne for(compteur=0; compteur<10; compteur++) { instructions } sert faire varier la
variable compteur de 0 9 (en l'augmentant chaque fois de 1: c'est ce que fait
l'instruction compteur++) et chaque fois excute toutes les instructions jusqu'
l'accolade }. Cela va donc avoir l'effet de rpter le code suivant 10 fois:
digitalWrite(12, HIGH);
delay(500);
digitalWrite(12, LOW);
delay(500);

//
//
//
//

allume
attend
teint
attend

la LED
500ms
la LED
500ms

Que se passe-t-il si tu remplaces la ligne for(compteur=0 ; compteur<10 ; compteur++)


en for(compteur=0 ; compteur<20 ; compteur++) ?

Que se passe-t-il si tu remplaces la ligne for(compteur=0 ; compteur<10 ; compteur++)


en for(compteur=15 ; compteur<20 ; compteur++) ?

Source: http://mediawiki.e-apprendre.net/index.php/Dcouverte_des_microcontrleurs_avec_le_Diduino
http://www.edurobot.ch - 2012

46

Diduino Arduino
Faire clignoter deux LED 20 fois
Ralise le montage suivant:

Modifie ton code pour que les deux LED clignotent en mme temps vingt fois.
Tu trouveras le corrig ici: http://edurobot.ch/code/code4-1.txt

Modifie maintenant le programme pour que les LED clignotent en alternance vingt fois.
Tu trouveras le corrig ici: http://edurobot.ch/code/code4-2.txt

Comment faire pour augmenter la frquence du clignotement?

Tu trouveras une vido dexemple cette adresse: http://00.lc/cq

http://www.edurobot.ch - 2012

47

Diduino Arduino
Dfinir les pattes du microcontrleur
Jusqu maintenant, nous avons identifi les pattes du microcontrleur laide de leurs
numros, comme dans lexemple suivant: pinMode(10, OUTPUT);.
Il est aussi possible de crer une variable dfinissant la broche utilise, ensuite, dfinir si
la patte utilise doit tre une entre du microcontrleur ou une sortie.
Premirement, donc, dfinissons la patte utilise du microcontrleur :
const int led_rouge = 2;
variable

//dfinition de la patte 2 de la carte en tant que

Le terme const signifie que l'on dfinit la variable comme tant constante. Par consquent,
on change la nature de la variable qui devient alors constante.
Le terme int correspond un type de variable. En dfinissant une variable de ce type, elle
peut stocker un nombre allant de -2147483648 +2147483647 ! Cela nous suffit
amplement ! Ainsi, la patte 2 devient led_rouge.
Nous sommes donc en prsence d'une variable, nomme led_rouge, qui est en fait une
constante, qui peut prendre une valeur allant de -2147483648 +2147483647. Dans notre
cas, cette constante est assigne 2. Le chiffre 2.
Lorsque le code sera compil, le microcontrleur saura ainsi que sur sa broche numro 2,
il y a un lment connect.
Profitons maintenant pour voir ce que signifie le terme Output utilis jusqu prsent.
Il sagit de prciser si cette patte est une entre ou une sortie. Oui, car le microcontrleur a
la capacit d'utiliser certaines de ses pattes en entre ou en sortie. C'est fabuleux ! En
effet, il suffit simplement dinterchanger UNE ligne de code pour dire qu'il faut utiliser une
patte en entre (rcupration de donne) ou en sortie (envoi de donne).
Cette ligne de code justement, parlons-en ! Elle doit se trouver dans la fonction setup().
La fonction se trouve tre pinMode(). Pour utiliser cette fonction, il faut lui envoyer deux
paramtres :
Le nom de la variable que l'on a dfini la broche
Le type de broche que cela va tre (entre ou sortie)
void setup()
{
pinMode(led_rouge, OUTPUT); //initialisation de la patte 2 comme tant une
sortie
}

Ce code va donc dfinir la led_rouge (qui est la broche numro 2 du microcontrleur) en


sortie, car OUTPUT signifie en franais : sortie.
http://www.edurobot.ch - 2012

48

Diduino Arduino
Rsumons!
Concrtement, quest-ce que cela signifie?
Et bien, dans notre code 1, nous avions dfini la patte du microcontrleur de cette faon:
void setup() {
// Initialise la patte 13 comme sortie
pinMode(13, OUTPUT);
// Ouvre le port srie 9600 bauds
Serial.begin(9600);
}
void loop() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}

//
//
//
//

allume
attend
teint
attend

la LED
500ms
la LED
500ms

Ainsi, nous pouvons aussi dfinir la patte de cette manire:


const int led_rouge = 13;

//La patte 13 devient led_rouge

void setup() {
// Initialise led_rouge comme patte de sortie
pinMode(led_rouge, OUTPUT);
// Ouvre le port srie 9600 bauds
Serial.begin(9600);
}
void loop() {
digitalWrite(led_rouge, HIGH);
//
delay(500);
// attend
digitalWrite(led_rouge, LOW);
//
delay(500);
// attend
}

allume la LED
500ms
teint la LED
500ms

quoi est-ce que cela sert? Quand nous aurons de nombreuses pattes en fonction, cela
nous permettra de les identifier plus facilement. Ainsi, si nous avons plusieurs LED, nous
pouvons les appeler L1, L2, L3,... et si nous utilisons des LED de plusieurs couleurs, nous
pourrons les appeler rouge, vert, bleu,...
Enfin, si on veut changer la patte utilise, il suffit de corriger la variable, sans devoir
corriger tout le code.
http://www.edurobot.ch - 2012

49

Diduino Arduino
valuation: K2000
Introduction
Les exploits dun chevalier solitaire, dans un monde dangereux; le chevalier et sa
monture...
Il y longtemps de cela, du temps de ma jeunesse (soit peu de temps aprs la disparition
du dernier mammouth), un hros hantait la petite lucarne: Michael Knight et sa voiture
parlante, Kitt.
Je tinvite revoir le gnrique de cette srie danthologies (en terme de mauvais got
capillaire) ici: http://www.youtube.com/watch?v=PI_1sNt1cl8 9
Comme tu peux le voir, la voiture possde sur son capot des LED qui simulent un
mouvement de droite gauche et de gauche droite (avec un magnifique son du style
fschouiiii-fschouiiiii).

Ta mission, si tu lacceptes (mais tu as intrt... cest quand mme une valuation!), est de
reproduire cet accessoire indispensable toute automobile qui se respecte: le bandeau de
LED... mais sans le son (le mauvais got des limites).
Pour cela, tu auras besoin de 6 LED rouges ( priori... mais tout est possible) et de 6
rsistances (des 220 470 feront parfaitement laffaire).
Pour taider, nhsite pas regarder cette petite vido dexemple: http://00.lc/k2000
Corrig 10: http://www.edurobot.ch/code/k2000.pdf
9

Lien court: http://00.lc/cp

10

Fichier protg par un mot de passe. Pour lobtenir: info [at] edurobot.ch

http://www.edurobot.ch - 2012

50

Diduino Arduino
Les objectifs

Objectifs de la discipline MSN


MSN 35 Modliser des phnomnes naturels, techniques, sociaux ou des
situations mathmatiques
-

en mobilisant des reprsentations graphiques (codes, schmas, tableaux, graphiques,)


en associant aux grandeurs observables des paramtres
en triant, organisant et interprtant des donnes
en communiquant ses rsultats et en prsentant des modlisations

MSN 36 Analyser des phnomnes naturels et des technologies l'aide de


dmarches caractristiques des sciences exprimentales
-

en formulant des hypothses


en confrontant les hypothses mises des rsultats exprimentaux
en dfinissant des stratgies d'exploration et d'exprimentation en lien avec les hypothses
mises
en proposant des explications et en les confrontant celles de ses pairs et aux informations de
mdias varis

Si applicable:
Objectifs de la discipline MEP
MEP 34 Dvelopper des sujets, des projets favorisant
une ouverture sur les sciences du pass, actuelles et du futur...
Familiarisation avec des faons de faire et de raisonner propres la logique robotique, notamment
en:
-

identifiant les objectifs dune activit ainsi que les notions thoriques et pratiques qui en rsultent
planifiant, construisant et programmant le robot en fonction des observations et des mesures
effectues
testant le robot afin didentifier dventuelles erreurs de conception et en mettant en place des
stratgies de remdiation
Initiation l'utilisation d'outils et de procds simples afin de faire fonctionner un robot de
manire autonome

Capacits transversales exerces: stratgies dapprentissage, dmarche rflexive

http://www.edurobot.ch - 2012

51

Diduino Arduino
tape1: Schmas
Ralise le plan du montage que tu vas utiliser:

D0

+5V

Gnd

A19

D1

A18

D2

A17

D3

A16

D4

A15

D5

A14

D6
D7
+5V
D8

+5V

Gnd

Gnd

D9

Gnd

D10

+5V

D11

Gnd

D12

reset

D13
Gnd
+5V

Ralise maintenant le schma lectrique du montage:

D....
D....
D....
D....
D....
D....

http://www.edurobot.ch - 2012

52

Diduino Arduino
tape2: Programme
Rdige ton programme ici:

http://www.edurobot.ch - 2012

53

Diduino Arduino
Les feux de circulation
Lobjectif est de crer deux feux de circulation et de les faire fonctionner de manire
synchrone.
Voici les phases de deux feux de circulation que tu dois recrer:

Feu 1
phases

1 2 3 4

Feu 2
60 sec

5 sec

60 sec

5 sec

Tu peux visionner une vido de prsentation ici: http://00.lc/ct

tablis la liste des composants que tu auras besoin pour raliser le projet:

http://www.edurobot.ch - 2012

54

Diduino Arduino
tape1: Schmas
Ralise le plan du montage que tu vas utiliser:

D0

+5V

Gnd

A19

D1

A18

D2

A17

D3

A16

D4

A15

D5

A14

D6
D7
+5V
D8

+5V

Gnd

Gnd

D9

Gnd

D10

+5V

D11

Gnd

D12

reset

D13
Gnd
+5V

Ralise maintenant le schma lectrique du montage:

D....
D....
D....
D....
D....
D....

http://www.edurobot.ch - 2012

55

Diduino Arduino
tape2: Programme
Rdige ton programme ici:

http://www.edurobot.ch - 2012

56

Diduino Arduino
Corrig
Tu trouveras le corrig ladresse suivante: http://edurobot.ch/code/code5.txt

Variantes
Variante 1
Il y a souvent un dcalage entre le passage dun feu au rouge et le passage au vert de
lautre feu. Cest en particulier le cas pour les feux de chantier. Cela permet aux voitures
encore engages dans la zone de chantier de la quitter, avant de laisser la place aux
voitures venant en face.
Dcrire les phases des feux et les programmer pour tenir compte du dlai.
Variante 2
Intgrer un troisime feu, qui passe du rouge au vert en alternance avec les deux autres
feux.
Raliser le schma lectronique et programmer les feux.
Variante 3
Raliser les feux pour un carrefour:

Source: http://minne.romain.free.fr/MPI/tp10_carrefour/Gestion_d_un_carrefour.html
http://www.edurobot.ch - 2012

57

Diduino Arduino
Leon 6: Input
Le bouton poussoir
Le bouton poussoir normalement ouvert (NO)
Cest le bouton le plus frquemment rencontr:
- Relch : le courant ne passe pas, le circuit est
dconnect ; on dit que le circuit est ouvert.
- Appuy : le courant passe, on dit que le circuit est ferm.
Habituellement le bouton poussoir a deux broches, mais
en gnral ils en ont 4 relies deux deux.
Le bouton poussoir normalement ferm (NF)
Ce type de bouton est l'oppos du type prcdent, c'est--dire que lorsque le bouton est
relch, il laisse passer le courant. Et inversement :
- Relch : le courant passe, le circuit est connect ; on dit que le circuit est ferm.
- Appuy : le courant ne passe pas, on dit que le circuit est ouvert.
Les interrupteurs
la diffrence d'un bouton poussoir, l'interrupteur agit
comme une bascule. Un appui ferme le circuit et il faut un
second appui pour l'ouvrir de nouveau. Il possde donc des
tats stables (ouvert ou ferm). Nous en rencontrons tous les
jours lorsque nous allumons la lumire.

Bouton poussoir NO

http://www.edurobot.ch - 2012

Bouton poussoir NF

Interrupteur

58

Diduino Arduino
Exercice 1: allumons cette LED
Ralise le circuit suivant:

Gnd

+5V
Lorsquon appuie sur le bouton poussoir, on ferme le circuit. Le courant passe alors et la
LED sallume.

http://www.edurobot.ch - 2012

59

Diduino Arduino
Exercice 2: mais par o passe le courant?
Ralise le circuit suivant:

Gnd

+5V
Il y a plus de rsistance au passage du courant lorsquil traverse une LED quun bouton
poussoir. Or, le courant passera l o il rencontrera le moins de rsistance.
Cest pourquoi, quand le bouton poussoir est relch, le courant passe par la LED. Mais
lorsque tu appuies sur le bouton, la LED steint. En effet, le courant prfre passer au
travers du bouton poussoir.

http://www.edurobot.ch - 2012

60

Diduino Arduino
Protger lArduino
Jusqu maintenant, nous nous sommes toujours contents de faire circuler du courant du
microcontrleur la masse.
Au lieu dutiliser les pattes du microcontrleur seulement sous forme de sortie (OUTPUT),
nous allons aussi les utiliser sous forme dentre (INPUT); cest--dire quau lieu dtre
raccorde la masse, la patte sera raccorde au +5V. Tout se passera bien, si au niveau
du programme, la patte est configure comme input. Mais si elle devait tre configure en
output par erreur, il est presque certain que le microcontrleur finira immdiatement au
paradis des puces lectroniques grilles.
Ainsi, pour viter de condamner notre microcontrleur la chaise lectrique, nous allons
devoir le protger. Cela peut se faire en connectant sur la patte du microcontrleur utilis
comme input une rsistance dune centaine dOhms. Comme le Diduino est fourni avec
des rsistances de 220 , cest celle que nous utiliserons.

ATTENTION!
Lorsque vous branchez le Diduino lordinateur, le dernier programme reu est excut.
Avant de commencer un nouveau montage, il est plus que conseill denvoyer un
programme dinitialisation, du modle de celui-ci:
//Programme vide dinitialisation
void setup() {
}
void loop() {
}

Maintenant que ce point est rgl, voyons comment utiliser le bouton poussoir avec le
microcontrleur.

http://www.edurobot.ch - 2012

61

Diduino Arduino
Rsistance Pull-Down / Pull-Up
Circuit avec une une rsistance pull-down
Observons ce schma:

Lorsque lon presse le bouton poussoir, on envoie +5 Volts sur D4, qui sera interprt
comme un 1.
Lorsquon relche le bouton, il ny a plus de courant qui arrive sur D4, ce qui sera
interprt comme un 0. On a donc un signal binaire: allum/teint (on/off).
Ce montage contient une rsistance de 10 k (soit 10000 ), quon appelle pull-down
(littralement tirer-en-bas). Cette rsistance permet de tirer le potentiel vers le bas (pulldown). En franais, on appelle aussi ceci un rappel au moins.
En effet, contrairement au cas thorique, fermer ou ouvrir un circuit (via un interrupteur ou
un bouton poussoir) ne gnre pas forcment un signal clair:
Le circuit non connect la source peut agir comme une antenne dans un
environnement pollu d'ondes lectromagntiques (proches des moteurs par exemple).
Cela va gnrer dans le circuit un courant qui peut tre interprt comme un signal.
Il peut rester dans un circuit rcemment ouvert un niveau d'nergie. Cela provoque des
cas d'indtermination. Le signal qui a t coup peut tre considr comme encore actif
par un microcontrleur.
Le but d'une rsistance de pull-down est donc dvacuer les courants vagabonds et
de donner un signal clair.
Si on presse le bouton, 5 Volts sont alors appliqus sur l'entre. Le courant va prendre le
chemin le plus simple, soit par la rsistance de 220 et finit par arriver sur D4. Si on
relche le bouton, la rsistance pull-down ramne l'entre la masse (puisquelle est
connecte la masse).
http://www.edurobot.ch - 2012

62

Diduino Arduino
Circuit avec une rsistance pull-up
Observons maintenant ce schma:

Si on le compare au schma dun circuit avec une rsistance pull-down, on constate une
inversion entre la terre et le +5V.
En effet, lorsque le circuit est ouvert, une tension de +5V est applique lentre D4.
Lorsquon appuie sur le bouton poussoir, le courant lectrique va passer par le chemin
offrant le moins de rsistance, soit directement par la masse (Gnd), sans passer par
lentre D4.
Le fonctionnement est donc invers par rapport la rsistance pull-down.
Rsistance pull-down ou pull-up?
A notre niveau, la seule chose qui va changer entre une rsistance pull-down et une
rsistance pull-up est la lecture de linformation:
Avec une rsistance pull-down, par dfaut, lentre sur la patte est gale 0.
Avec une rsistance pull-up, par dfaut, lentre sur la patte est gale 1.
Dans le code if (digitalRead(bouton) == 1 ) , sera respectivement la valeur dentre
lorsque le circuit est ferm (pull-down) ou ouvert (pull-up).

http://www.edurobot.ch - 2012

63

Diduino Arduino
Exercice 3: montage avec rsistance pull-down (rappel au moins)11
Ralisons maintenant le circuit suivant:

Gnd

+5V
D4

D12

Indique sur le schma ci-dessus o se trouve


la rsistance pull down et la rsistance de
protection du microcontrleur
Lorsquon appuie sur le bouton poussoir, La LED doit sallumer. Et naturellement,
lorsquon relche le bouton poussoir, la LED steint.
Nous allons utiliser une nouvelle instruction: if ... else (si ... sinon). Cest donc une
condition.
Voici ce qui va se passer:
Si le bouton poussoir est press (digitalRead(4) == 1), allumer la LED (digitalWrite(12,
HIGH)), sinon teindre la LED (digitalWrite(12, LOW)).
Linstruction == vrifie si deux expressions sont gales. Si elles le sont, alors le rsultat
sera vrai (true) sinon le rsultat sera faux (false).

11

Plus dinformations ici: http://00.lc/dn

http://www.edurobot.ch - 2012

64

Diduino Arduino
Observons maintenant le code:
/*
Code 7 - Edurobot.ch, destin au Diduino
Allume LED en fonction de l'tat du bouton poussoir
*/

// On dclare les variables


const int bouton = 4;
const int led = 12;

// la patte 4 devient bouton


// la patte 12 devient led

void setup()
{
pinMode(bouton, INPUT);

// Initialise la patte 4 comme entre

pinMode(led, OUTPUT);

// Initialise la patte 12 comme sortie

Serial.begin(9600);

// Ouvre le port srie 9600 bauds

}
void loop()
{
// Si boutton poussoir appuy
if (digitalRead(bouton) == 1 )
{
digitalWrite(led, HIGH);
}
// Sinon
else
{
digitalWrite(led, LOW);
}

//teste si le bouton a une valeur de 1

// allume la LED

//teste si le bouton a une valeur de 0


// teint la LED

Tlcharger le code: http://www.edurobot.ch/code/code7.txt

http://www.edurobot.ch - 2012

65

Diduino Arduino
Analysons le code:
const int bouton = 4;
const int led = 12;

// la patte 4 devient bouton


// la patte 12 devient led

On renomme les pattes 4 et 12 respectivement bouton et led. Cela facilitera la lecture du


code.
void setup() {
// Initialise la patte 4 comme entre
pinMode(bouton, INPUT);
// Initialise la patte 12 comme sortie
pinMode(led, OUTPUT);
// Ouvre le port srie 9600 bauds
Serial.begin(9600);
}

Voil, maintenant notre microcontrleur sait qu'il y a quelque chose de connect sur sa
patte 4 et quelle est configure en entre (input). De mme, la patte 12 est configure en
sortie (output).
Maintenant que le bouton est paramtr, nous allons chercher savoir quel est son tat
(appuy ou relch).
Si le microcontrleur dtecte une diffrence de potientiel de +5V sa patte 4, alors il
stockera une valeur de 1.
Dans le cas contraire (diffrence de potientiel de 0V), il stockera une valeur de 0.
Pour lire ltat de la patte 4, nous allons utiliser lexpression digitalRead. Ainsi:
if (digitalRead(bouton) == 1 )
digitalWrite(led, HIGH);
// allume la LED

doit se comprendre comme:


si la patte 4 a une valeur gale 1
alors la patte 12 est en position haute = LED allume

et les lignes:
else {
digitalWrite(led, LOW);

// teint la LED

doivent se comprendre comme:


sinon (cest dire: la patte 4 a une valeur gale 0)
la patte 12 est en position basse = LED teinte

Voici une petite vido qui prsente lactivit: http://00.lc/cx


http://www.edurobot.ch - 2012

66

Diduino Arduino
Une petite variation de code
Le code prcdent est simple, mais manque un peu de finesse; un peu comme un barbare
avec une hache deux mains dans une rception de Monsieur lAmbassadeur. Voici donc
une autre solution:
/*
Code 8 - Edurobot.ch, destin au Diduino
Allume LED en fonction de l'tat du bouton poussoir
*/
const int bouton = 4;
const int led = 12;
int etatbouton;

// la patte 4 devient bouton


// la patte 12 devient led
// variable qui enregistre ltat du bouton

void setup()
{
pinMode(bouton, INPUT);
pinMode(led, OUTPUT);
etatbouton = LOW;

// Initialise le bouton comme entre


// Initialise la led comme sortie
// Initialise ltat du bouton comme relch

Serial.begin(9600);

// Ouvre le port srie 9600 bauds

}
void loop()
{
etatbouton = digitalRead(bouton); //On mmorise ltat du bouton
if(etatbouton == LOW) //teste si le bouton a un niveau logique BAS
{
digitalWrite(led,LOW); //la LED reste teinte
}
else //teste si le bouton a un niveau logique diffrent de BAS (donc HAUT)
{
digitalWrite(led,HIGH); //le bouton est appuy, la LED est allume
}
}

Pour commencer, nous allons crer une variable que nous choisirons dappeler
etatbouton. Elle servira stocker ltat du bouton (logique, non?):
int etatbouton;

On inscrit ltat du bouton dans la variable de cette manire, avec la fonction digitalRead:
etatbouton = digitalRead(bouton);

http://www.edurobot.ch - 2012

67

Diduino Arduino
Il ne nous reste plus qu appeler ltat du bouton, stock dans la variable etatbouton, et
lui faire passer un petit test avec if... else (si... sinon):
Si (if) ltat du bouton est LOW (cest--dire = 0), alors la LED est LOW (teinte). Sinon
(else), la LED est HIGH (en effet, si ltat du bouton nest pas LOW, il ne peut tre que
HIGH, soit allume...)
Et cela donne donc ceci:
if(etatbouton == LOW) //teste si le bouton a un niveau logique BAS
{
digitalWrite(led,LOW); //la LED reste teinte
}
else //teste si le bouton a un niveau logique diffrent de BAS (donc HAUT)
{
digitalWrite(led,HIGH); //le bouton est appuy, la LED est allume
}

Rappelons que linstruction == vrifie si deux expressions sont gales.

Petits exercices: bouton poussoir et LED qui clignote


Imaginons maintenant le cas de figure suivant: avec le mme circuit: lorsque nous
appuyons sur le bouton, la LED commence clignoter.
Modifie le programme pour arriver ce rsultat.
Tlcharger la rponse: http://www.edurobot.ch/code/code10.txt
Et maintenant, modifie le programme pour que lorsque nous branchons le Diduino
lordinateur la LED sallume, et reste allume. Par contre, quand nous appuyons sur le
bouton, la LED clignote.
Tlcharger la rponse: http://www.edurobot.ch/code/code11.txt

http://www.edurobot.ch - 2012

68

Diduino Arduino
Evaluation: vers linfini et au-del!
Bienvenue bord, Astronaute! Lheure est grave! La galaxie est menace par les infmes
VoRteX. Pour la sauver, tu dois concevoir un pistolet protoplasmique dodcaneutrino.
Voici le montage que tu devras raliser (tu peux carter LEDs pour avoir plus de place):
Gnd

+5V
D4

D8 D10 D12

Son fonctionnement est on ne peut plus simple: quand le pistolet protoplasmatique


dodcaneutrino est sous tension, une LED verte est allume, pour montrer que tout
fonctionne parfaitement. Quand on appuie sur le bouton, La LED verte steint et les LEDs
rouges et bleues se mettent clignoter alternativement, gnrant un plasma positronique.

Les objectifs

Objectifs de la discipline AC&M


A 33 AC&M Exercer diverses techniques plastiques et artisanales
-

en matrisant des habilets de motricit globale et fine (souplesse, prcision, coordination,


rapidit du geste,)
en choisissant et utilisant divers outils et matriaux en fonction d'un projet
en matrisant des gestes artisanaux spcifiques, en exerant la prcision
en utilisant des techniques numriques

http://www.edurobot.ch - 2012

69

Diduino Arduino
Objectifs de la discipline MSN
MSN 35 Modliser des phnomnes naturels, techniques, sociaux ou des
situations mathmatiques
-

en mobilisant des reprsentations graphiques (codes, schmas, tableaux, graphiques,)


en associant aux grandeurs observables des paramtres
en triant, organisant et interprtant des donnes
en communiquant ses rsultats et en prsentant des modlisations

MSN 36 Analyser des phnomnes naturels et des technologies l'aide de


dmarches caractristiques des sciences exprimentales
-

en formulant des hypothses


en confrontant les hypothses mises des rsultats exprimentaux
en dfinissant des stratgies d'exploration et d'exprimentation en lien avec les hypothses
mises
en proposant des explications et en les confrontant celles de ses pairs et aux informations de
mdias varis

Si applicable:
Objectifs de la discipline MEP
MEP 34 Dvelopper des sujets, des projets favorisant
une ouverture sur les sciences du pass, actuelles et du futur...
Familiarisation avec des faons de faire et de raisonner propres la logique robotique, notamment
en:
-

identifiant les objectifs dune activit ainsi que les notions thoriques et pratiques qui en rsultent
planifiant, construisant et programmant le robot en fonction des observations et des mesures
effectues
testant le robot afin didentifier dventuelles erreurs de conception et en mettant en place des
stratgies de remdiation
Initiation l'utilisation d'outils et de procds simples afin de faire fonctionner un robot de
manire autonome

Llve est capable de:


Raliser un montage laide dun bouton poussoir, de LEDs et dune rsistance pull
down.
Dutiliser lArduino de manire sre
De programmer correctement lArduino, pour lui faire excuter la tche demande

http://www.edurobot.ch - 2012

70

Diduino Arduino
Etape 1: les schmas
Commence par raliser le schma lectronique:

3V3 5V

Vin
Power

D13

RST

D12

AREF

D11

PWM

D10

PWM

D9

PWM

IO REF

Arduino

N/C

Digital Input/Output

D8

A0
A1

A3
A4

D6

PWM

D5

PWM

D4
D3

Analog Input

A2

D7

PWM

D2
D1
D0

TX
RX

SCL

A5
GND

SDA

Sur ton schma, entoure en rouge la rsistance pull down.


A quoi sert-elle?!_________________________________________________________
Observe la vido suivante: http://00.lc/d2
Liste la ou les pattes qui sont programmes en INPUT et celles qui le sont en OUTPUT:
INPUT

http://www.edurobot.ch - 2012

OUTPUT

71

Diduino Arduino
tape2: Programme
Rdige ton programme ici:

Tu peux naturellement aussi limprimer et le joindre ton valuation.


http://www.edurobot.ch - 2012

72

Diduino Arduino

Leon 7: le barregraphe
Introduction
Un barregraphe est un afficheur qui indique une quantit, provenant d'une information
quelconque (niveau d'eau, puissance sonore, etc.), sous une forme lumineuse. Le plus
souvent, on utilise des LEDs alignes en guise d'affichage.

Lobjectif de cet exercice est de raliser un barregraphe de 4 LEDs, avec deux boutons
poussoirs. Lun deux servira incrmenter la valeur sur le barregraphe ( savoir
augmenter le nombre de LEDs allumes), alors que lautre servira le dcrmenter.

Schmas
Voici le schma du circuit construire:
5V

Arduino1

3V3 5V

Vin
Power

4 LEDs choix

RST

D13

AREF

D12

A0

A4

Analog Input

A3

PWM

D10

PWM

D9

PWM

D8
D7
D6

PWM

D5

PWM

D3

Rsistances
de protection

R7
100

D4

A1
A2

D11

5V

Digital Input/Output

Arduino

R1
220
R2
220
R3
220
R4
220

PWM

D2
D1
D0

A5
GND

http://www.edurobot.ch - 2012

TX
RX

R8
100

R5
10k

R6
10k

Rsistances pull-down

73

Diduino Arduino

Normalement, ce stade, nous devrions tre capable dexcuter le montage laide du


schma lectronique!
Dans le cas contraire, voici le montage raliser:

+5V

Gnd

D8
D9
D10
D11

D0
D1
D2
D3
D4
D5
D6
D7

+5V

Il ne faut pas hsiter carter un peu plus les LEDs si ncessaire!


Le code complet est ici: http://www.edurobot.ch/code/code13.txt

http://www.edurobot.ch - 2012

74

Diduino Arduino
Analysons le code, maintenant:
En se rfrant au schma de montage, on dclare les constantes pour chaque patte: les
boutons poussoirs sont connects sur les pattes 2 et 3, alors que les LEDs sont
connectes aux pattes 8 11.
/*
Dclaration des constantes pour les noms des pattes
*/
const int
allums
const int
allums
const int
const int
const int
const int

btn_minus = 2;

//Bouton 1 pour dcrmenter le nombre de LEDs

btn_plus = 3;

//Bouton 2 pour incrmenter le nombre de LEDs

led_0
led_1
led_2
led_3

=
=
=
=

8;
9;
10;
11;

//Led
//Led
//Led
//Led

0
1
2
3

On cr ensuite les variables ncessaires et les initialise leur tat.


/*
Dclaration des variables utilises pour le comptage et le dcomptage
*/
int nombre_led = 0;
//le nombre qui sera incrment et dcrment
int etat_bouton;
//lecture de l'tat des boutons (un seul la fois
mais une variable suffit; en effet, il n'est pas prvu d'appuyer sur les deux
boutons simultanment)
int memoire_plus = HIGH;
//tat relch par dfaut pour le bouton 2
int memoire_minus = HIGH; //tat relch par dfaut pour le bouton 1

On initilaise ensuite les pattes, selon quil sagit des entres (les boutons) ou des sorties
(les LEDs).
/*
Initilisation des pattes en entre/sortie: entres pour les boutons, sorties
pour les LEDs
*/
void setup()
{
pinMode(btn_plus, INPUT);
pinMode(btn_minus, INPUT);
pinMode(led_0, OUTPUT);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
}
http://www.edurobot.ch - 2012

75

Diduino Arduino

Allons-y pour la partie du programme dans la boucle sans fin (loop)


On utilise digitalRead pour lire ltat du bouton (btn_plus) et inscrire cet tat dans la
variable etat_bouton.
void loop()
{
//lecture de l'tat du bouton d'incrmentation (on lit l'tat du btn_plus et
on l'inscrit dans la variable etat_bouton)
etat_bouton = digitalRead(btn_plus);

Maintenant, a devient srieux. Regardons ce qui suit:


//Si le bouton a un tat diffrent que celui enregistr ET que cet tat est
"appuy"
if((etat_bouton != memoire_plus) && (etat_bouton == LOW))

Traduisons cela en franais: si ltat du bouton 2 est diffrent de celui enregistr, et que
quelquun appuye sur le bouton, alors...
Le != signifie est diffrent de (teste la diffrence entre deux variables) et loprateur
logique && signifie ET ( Pour tre prcis, nous avons: si ... et... avec le if ... &&... Exemple:
si il fait beau et chaud, alors on va la plage).
Rappelons-nous maintenant de lopration ++, qui incrmente une variable (variable =
variable + 1, cest--dire; on ajoute chaque fois 1 la variable). Dans notre cas, il sagit
de la valeur de la variable nombre_led quon incrmente.
{
nombre_led++; //on incrmente la variable qui indique combien de LEDs
devrons s'allumer
}

Et zou! On enregistre le nouvel tat du bouton pour la suite!


memoire_plus = etat_bouton; //on enregistre l'tat du bouton pour le tour
suivant

Maintenant, on recommence le tout, mais pour le bouton 1.


//et maintenant pareil pour le bouton qui dcrmente
etat_bouton = digitalRead(btn_minus); //lecture de son tat
//Si le bouton a un tat diffrent que celui enregistr ET que cet tat est
"appuy"
http://www.edurobot.ch - 2012

76

Diduino Arduino
if((etat_bouton != memoire_minus) && (etat_bouton == LOW))
{
nombre_led--; //on dcrmente la valeur de nombre_led
}
memoire_minus = etat_bouton; //on enregistre l'tat du bouton pour le tour
suivant

Nous allons maintenant limiter le nombre de LEDs connecter. En effet, dans notre cas,
nous avons 4 LEDs. Alors si on appuie 10 fois sur le bouton 2, cela nallumera que les 4
LEDs.
//on applique des limites au nombre pour ne pas dpasser 4 ou 0 (puisqu'on a
4 LEDs)
if(nombre_led > 4)
{
nombre_led = 4;
}

Traduisons: si on appuie plus de 4 fois sur le bouton, le rsultat sera gal 4


Mme chose maintenant pour le bouton 1.
if(nombre_led < 0)
{
nombre_led = 0;
}

Maintenant, nous devons grer lallumage des LEDs. Pour cela, on va crer une fonction
daffichage appelle affiche, avec une variable int valeur_recue.
//On cr une fonction affiche() pour l'affichage du rsultat
//on lui envoie alors en paramtre la valeur du nombre de LED clairer
affiche(nombre_led);
}
void affiche(int valeur_recue)

On commence dabord par teindre toutes les LEDs.


{
//on teint toutes les leds
digitalWrite(led_0, HIGH);
digitalWrite(led_1, HIGH);
digitalWrite(led_2, HIGH);
digitalWrite(led_3, HIGH);

http://www.edurobot.ch - 2012

77

Diduino Arduino
Si la fonction reoit le nombre 1, on allume la LED 1. Si elle reoit le nombre 2, elle allume
la LED 1 et 2. Si elle reoit 3, elle allume la LED 1, 2 et 3. Enfin, si elle reoit 4, alors elle
allume toutes les LEDs:
//Puis on les allume une une
if(valeur_recue >= 1)
// "si la valeur reue est plus grande ou
gale 1..."
{
digitalWrite(led_0, LOW);
// "on allume la LED 0
}
if(valeur_recue >= 2)
// "si la valeur reue est plus grande ou
gale 2..."
{
digitalWrite(led_1, LOW);
// "on allume la LED 1 (sous-entendu que
la LED 0 est allume, puisque la valeur est plus grande que 1)
}
if(valeur_recue >= 3)
// "si la valeur reue est plus grande ou
gale 3..."
{
digitalWrite(led_2, LOW);
// "on allume la LED 2
}
if(valeur_recue >= 4)
// "si la valeur reue est plus grande ou
gale 4..."
{
digitalWrite(led_3, LOW);
// "on allume la LED 3
}
}

!
Le symbole >= signife: ...est suprieur ou gal .... Il sagit de tester la supriorit ou
l'galit d'une variable par rapport une valeur. Ainsi, dans:
if(valeur_recue >= 4)
{
digitalWrite(led_3, LOW);
}

// "on allume la LED 3

Il faut lire: si la variable valeur_recue est suprieure ou gale 4, alors on allume la LED
3.

http://www.edurobot.ch - 2012

78

Vous aimerez peut-être aussi