Académique Documents
Professionnel Documents
Culture Documents
Diduino 2014
Diduino 2014
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
v3 - avril 2014
Frdric Genevey
Arduino lcole
Ce cours est publi par la communaut Arduino dEdurobot.ch. Il sagit dune ressource ducative libre1,
sous licence CC BY-NC-SA2.
Merci Damien, Lionel, Kristijan et Nikola, lves de loption robotique 2012-2013 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.
Merci Philippe Krhenbuhl, enseignant Vevey, pour les nombreuses ides dactivits et pour sa
prcieuse aide grce sa parfaite matrise du sujet.
Et enfin un merci tout particulier au Professeur Jean-Daniel Nicoud pour sa prcieuse aide et son soutien et
pour avoir cr le Diduino en pensant aux besoins des coles.
Vous apprciez ce cours? Nhsitez pas me le faire savoir et me faire parvenir vos commentaires,
corrections ou suggestions!
info@edurobot.ch
http://00.lc/rn
http://creativecommons.org/licenses/by-nc-sa/3.0/ch/
http://www.edurobot.ch
Arduino lcole
Consignes de scurit
Llectricit peut tre mortelle! Pour viter tout risque, en particulier avec des lves, il convient de ne
travailler quavec de la trs basse tension (TBT). La tension de fonctionnement de lArduino se situe autour
de 5 Volts. Avec les lves, je me suis volontairement limit travailler en courant continu avec une
diffrence de potentiel maximum de 24 Volts.
http://www.edurobot.ch
Arduino lcole
Prface !
Introduction!
Rfrences !
Bibliographie!
10
11
Suisse!
11
12
15
Utilisation de Fritzing!
16
Arduino: prsentation!
Arduino, Diduino, Seeduino, Freeduino...!
17
17
Le matriel!
19
21
Pilote!
Installation du pilote!
21
21
22
22
22
22
Aide!
22
La gestion de classe !
23
Grer le matriel!
23
23
23
24
Constitution de la carte!
24
Le microcontrleur!
25
Lalimentation!
25
La connectique!
26
26
Connecteurs Diduino!
27
La platine dexprimentation!
28
http://www.edurobot.ch
Arduino lcole
La soudure !
29
30
30
30
Observations !
31
Llectricit!
31
32
Le circuit lectrique!
33
Les diodes!
34
Les rsistances!
35
37
Introduction!
37
Le menu!
38
39
Code 1!
39
Introduction au code!
40
Le droulement du programme!
40
Le code minimal!
41
La fonction!
41
Les instructions!
42
42
Les accolades { }!
42
Les commentaires!
42
Les accents!
42
Analyse du code 1!
43
toi de jouer!!
44
45
Schma!
46
46
47
Les variables!
Une variable, qu'est ce que c'est ?!
http://www.edurobot.ch
48
49
Arduino lcole
Le nom d'une variable!
49
50
Lincrmentation!
51
Analyse du code!
51
52
53
valuation: K2000!
54
Introduction!
54
tape1: Schmas!
55
tape2: Programme!
56
57
tape1: Schmas!
58
tape2: Programme!
59
Corrig!
60
Variantes!
60
Leon 6: Input !
Le bouton poussoir!
61
61
61
61
Les interrupteurs!
61
62
63
Protger lArduino!
64
65
65
66
66
67
70
71
http://www.edurobot.ch
72
72
Arduino lcole
tape2: Programme!
74
Leon 7: le barregraphe !
75
Introduction!
75
Schmas!
75
Le code!
77
81
82
83
88
Objectif!
88
88
Plan de montage!
89
Le code!
90
Conclusion!
http://www.edurobot.ch
95
Arduino lcole
Prface
Lorsque Massimo Banzi et ses collgues de lInteraction Design Institute dIvrea, en Italie, ont dvelopp
lArduino, lobjectif tait de permettre aux tudiants de pouvoir disposer dune plateforme valant le prix dune
pizza pour raliser des projets interactifs3.
Ainsi, lArduino a t conu pour tre bon march, dot dune grande quantit dentres et de sorties,
compatible Mac, Windows et Linux, programmable avec un langage trs simple et open source. Il ny a l
que des avantages pour le monde scolaire, en particulier parce que lArduino se situe au croisement entre
linformatique, llectronique et les travaux manuels4.
Lapproche pdagogique de lArduino est particulire. Il ne sagit pas daborder la matire dune manire
linaire, mais en bricolant et en bidouillant: on cble, on branche et on regarde ce que cela donne. Cest
une approche par la pratique et lexprimentation, qui convient trs bien des lves, mme (et surtout) peu
scolaires. Il y a bien sr un risque de griller un Arduino; mais il ne sagit que de 30 francs de matriel, et
pas dun ordinateur 1200 francs! LArduino est un excellent outil pour le learning by doing et le project
based learning. Une approche par la thorie, mme si elle reste possible, serait contre-productive.
La meilleure preuve que lArduino est parfaitement adapt aux lves est, quen quelques leons, ils sont
dj prts raliser des projets concrets.
Ce cours a t pens pour des lves (et des enseignants) qui nont aucune notion en programmation et en
lectronique. Par rapport au gigantesque potentiel de lArduino, il est volontairement limit, mais il sefforce
dtre progressif et surtout ax sur la pratique.
Mes lves tant les premiers bnficiaires de ce cours, je me suis permis dutiliser le tutoiement.
!
4
Histoire de lArduino: !
!
!
http://www.framablog.org/index.php/post/2011/12/10/arduino-histoire
http://fr.flossmanuals.net/arduino/ch002_historique-du-projet-arduino
http://www.edurobot.ch
Arduino lcole
Introduction
Rfrences
Ce document est une compilation et une adaptation de textes et dexercices, depuis les sources suivantes:
Sources principales:
http://arduino.cc/fr/
http://fr.openclassrooms.com/sciences/cours/arduino-pour-bien-commencer-en-electronique-et-enprogrammation
http://mediawiki.e-apprendre.net/index.php/Diduino-Robot
Sources annexes:
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://fr.openclassrooms.com/sciences/cours/l-electronique-de-zero
http://www.edurobot.ch
Arduino lcole
Bibliographie
Il existe de nombreux livres sur Arduino et sur llectronique. Voici les deux livres que je vous conseille, pour
leur ct progressif et didactique:
Electronique:
Llectronique en pratique, de Charles Platt
ISBN:978-2212135077
Lapproche pdagogique de ce livre est lapprentissage par la
pratique. On commence par exprimenter et dcouvrir, et ensuite
seulement vient la thorie pour affermir et expliciter les dcouvertes.
Cela en fait donc un ouvrage de rfrence pour lapprentissage de
llectronique lcole; en particulier en complment des Arduino et
Raspberry Pi.
Feuilleter ce livre sur Amazon.fr
Commander sur Amazon.fr
Arduino:
Le grand livre dArduino, dErik Bartmann
ISBN:978-2212137019
Ce livre est sans doute lun des meilleurs pour dbuter sur Arduino. Il
offre une introduction rapide llectronique et surtout le code est trs
bien expliqu, agrment de schmas. Il ne se limite enfin pas
quelques notions de base, mais va assez loin.
A feuilleter sur Amazon.fr
Commander sur Amazon.fr
http://www.edurobot.ch
10
Arduino lcole
Intgration dArduino dans les plans dtudes
Suisse
Vaud
OCOM
OS MH-PH
Gymnase
Lors de loption spcifique MH-PH, deux sujets sont choix en 2me et 3me anne.
Llectronique et Arduino pourraient ainsi sinsrer dans ces moments.
En Arts visuels, lun des objectifs est dexprimenter, en abordant differentes techniques,
traditionnelles, contemporaines et experimentales. LArduino peut devenir un composant
intressant pour une installation interactive ou anime.
Enfin, en option complmentaire Informatique, lArduino est un outil privilgi pour
lapprentissage de la programmation.
http://www.edurobot.ch
11
Arduino lcole
Objectifs du plan dtudes romand
Voici une partie des objectifs du PER abords avec ce cours:
http://www.edurobot.ch
12
Arduino lcole
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
13
Arduino lcole
Objectifs de (FG) Choix et projets personnels
FG 33 Construire un ou des projets personnels vise scolaire et/ou professionnelle
Identification d'une large palette de mtiers
Slection de quelques mtiers en fonction des intrts et comptences personnels
Description du quotidien d'un mtier slectionn
Description des voies de formation suivre pour raliser un mtier
Analyse des exigences de formation
Information sur les diffrentes filires de formation et perspectives d'emploi
Description de ses intrts, valeurs, comptences, qualits et motivations en lien avec son projet
personnel
http://www.edurobot.ch
14
Arduino lcole
propos des schmas lectroniques
Llectronique a ceci dintressant quon passe dun schma lectronique un montage, ou au contraire, du
montage au schma lectronique. Dans les deux cas, il sagit dune activit qui permet de travailler les
objectifs suivants:
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
Payant:
iCircuit! (10CHF)!
http://icircuitapp.com
http://www.edurobot.ch
15
Arduino lcole
Utilisation de Fritzing
Fritzing est un logiciel gratuit fonctionnant sur Mac, Windows et Linux, dvelopp lUniversit de Potsdam.
Il permet la fois de raliser des schmas lectroniques, mais aussi des vues des montages lectroniques.
Il inclut par dfaut les modules officiels Arduino, ainsi que de nombreux composants des firmes Adafruit et
Sparkfun.
http://www.edurobot.ch
16
Arduino lcole
Arduino: prsentation
LArduino est une plateforme open source d'lectronique
programme qui est base sur une carte microcontrleur et
un logiciel. Plus simplement, on peut dire que lArduino est un
module lectronique, dot dun microcontrleur programmable.
Il 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.
Le principe de fonctionnement est simple:
1.
2.
3.
4.
http://processing.org
http://www.edurobot.ch
17
Arduino lcole
Les drivs Arduino sont bass sur la technologie Arduino, mais proposent souvent des diffrences
matrielles, ou de nouvelles fonctions. Cest le cas du Diduino.
Les compatibles Arduino sont souvent du matriel trs loign du concept de base, parfois avec des
processeurs diffrents. Ces produits sont en gnral ddis des utilisations spcifiques.
Les contrefaons sont des copies illgales dArduino, qui ressemblent loriginal, en portent la marque et le
logo, ainsi que les signes distinctifs et qui, en gnral, fonctionnent comme loriginal. Le problme nest pas
la qualit, mais labus du consommateur, qui pense acheter un module officiel, et ce faisant supporter la
communaut open source Arduino.
Il faut en particulier se mfier des modules Arduino vendus sur des sites denchres ou sur Amazon; ils sont
la plupart du temps des contrefaons9.
La liste officielle des distributeurs de matriel Arduino est disponible ici:
http://arduino.cc/en/Main/Buy
http://www.edurobot.ch
18
Arduino lcole
Le matriel
Ce cours est prvu pour un Arduino ou un module driv dArduino, appel Diduino.
Le Diduino possde une platine dexprimentation directement intgre et se trouve livr avec de nombreux
accessoires, tels que des rsistances, des LEDs, des capteurs... bref, tout ce qui est ncessaire pour
dbuter sur Arduino. Le Diduino possde aussi de nombreuses alimentations +5V, ainsi que de nombreuses
terres. Cela facilite le montage de circuits complexes. Enfin, le Diduino peut tre livr avec les connecteurs
non-souds, ce qui ajoute ainsi une comptence nos lves.
Il est tout fait possible de suivre ce cours avec un module Arduino original ou une copie
dArduino. Dans ce cas, il vous faudra une platine dexprimentation. LArduino Starter
Kit convient trs bien.
Attention: ce cours part du principe que le voltage de travail est de 5V! Il nest pas
prvu pour un Arduino Due. Le modle recommand est lArduino Uno ou
Duemilanove.
Il est possible dacqurir un Arduino Starter Kit10 officiel, trs bien fourni. La documentation est nanmoins
en anglais.
10
http://www.edurobot.ch
19
Arduino lcole
Dans lidal, il faut prvoir un Arduino/Diduino par lve.
Note: sauf avis contraire, dans les montages de ce cours, une rsistance de 220 peut tre remplace par
une autre jusqu 470, et une rsistance de 1k par une autre dune valeur allant jusqu 10k.
Le Diduino et tout le matriel lectronique ncessaire peuvent tre commands cette adresse:
http://www.play-zone.ch
http://shop.boxtec.ch (point de vente Diduino, y compris pour lEurope)
http://www.conrad.ch
http://mchobby.be
http://www.conrad.fr
http://www.zartronic.fr
http://boutique.semageek.com/fr/
11
Par exemple, Kingbright DC-10EWA ou DC7G3EWA, disponibles ici: http://00.lc/gy ou ici: http://00.lc/gz.
12
Par exemple, le Kingbright SA56-11 SRWA, disponible ici: Disponible ici: http://00.lc/hp
http://www.edurobot.ch
20
Arduino lcole
Installer Arduino sur Mac 13: aide-mmoire
!
Pilote
Afin de pouvoir connecter un Diduino ou un Arduino sur un Mac, il faut au pralable installer un pilote srieUSB.
La dernire version du pilote se trouve ici: http://www.ftdichip.com/Drivers/VCP.htm
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.9
Installation du pilote
Dcompresser larchive et ouvrir le pilote choisi. Suivre ensuite le processus dinstallation standard.
13
http://www.edurobot.ch
21
Arduino lcole
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
22
Arduino lcole
La gestion de classe
Ce cours est prvu pour lenseignement de linformatique et de llectronique sur Arduino pour des lves de
14 16 ans lcole. En Suisse Romande, cela correspond aux classes 10 et 11 Harmos. Ce cours peut
aussi tre adapt pour un enseignement en 9 Harmos, avec quelques amnagements.
Devant la richesse du sujet, il est tout fait possible de travailler avec ce cours sur une anne complte,
avec une dotation hebdomadaire de deux priodes de 45 minutes.
Grer le matriel
Lorsque cela est possible, et devant le faible prix du kit Diduino, lidal est den offrir (ou den faire acheter)
un par lve. Cela apporte quelques avantages, comme linitiation la soudure, le respect du matriel, la
possibilit pour llve de travailler la maison...
Il est aussi possible de monter son propre kit Arduino, pour un cot sensiblement quivalent.
Lenseignant devrait avoir une rserve de petit matriel lectronique (cbles, LEDs, rsistances,...)
disposition des lves, afin de complter le kit, dautant plus que ce matriel est lui aussi trs avantageux.
14
15
http://www.edurobot.ch
23
Arduino lcole
Dcouverte de la plateforme Arduino
Constitution de la carte
http://www.edurobot.ch
24
Arduino lcole
Le microcontrleur
Cest le cerveau de notre carte. Il va recevoir le programme que nous allons crer et va le stocker dans sa
mmoire avant de 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...
Il existe deux modles dArduino Uno: lun avec un microcontrleur de grande taille, et un autre avec un
microcontrleur dit SMD (SMD: Surface Mounted Device, soit composants monts en surface, en opposition
aux composants qui traversent la carte lectronique et qui sont souds du ct oppos). Dun point de vue
utilisation, il ny a pas de diffrence entre les deux types de microcontrleurs. Sur le Diduino, le processeur
est cach sous la platine dexprimentation.
Arduino Uno
Lalimentation
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.
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.
Attention (oui, encore!): les nouvelles cartes Arduino Due fonctionnent avec un voltage de 3.3V au
niveau des sorties! Le voltage de lalimentation est similaire lArduino Uno. Dans ce cours, nous
partons du principe que le voltage des montages est en 5 Volts.
http://www.edurobot.ch
25
Arduino lcole
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 en les empilant.
Entres/sorties numriques
Entres/sorties analogiques
Terre (0V)
Alimentation +5V
Alimentation +3.3V
Alimentation non stabilise (= le mme voltage que celui lentre de la carte)
http://www.edurobot.ch
26
Arduino lcole
Connecteurs Diduino
+5V!
!
Gnd! !
D0-D13!!
A14-A19!
Kidules!
Alimentation +5V
Terre (0V)
Connexions aux broches du micro-contrleur
Entres analogiques pour capteurs
Connecteurs pour Kidules
http://www.edurobot.ch
27
Arduino lcole
La platine dexprimentation
Une platine dexprimentation (appele breadboard) permet de raliser des prototypes de montages
lectroniques sans soudure et donc de pouvoir rutiliser les composants.
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.
FAUX!
10
15 JUSTE!
20
10
15
20
A
B
C
D
E
F
G
H
I
J
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.
Dans chaque colonne, 5 connecteurs sont lis entre-eux. Il en est de mme des alignements de connecteurs
rouges (pour lalimentation) et bleus (pour la terre). Ainsi, les liens peuvent tre schmatiss ainsi:
http://www.edurobot.ch
28
Arduino lcole
La soudure
Certains modules Arduino, comme le Diduino, ncessitent un petit travail de soudure.
Pour raliser cette tape: nous avons besoin:
Apprendre souder:
http://www.didel.com/Soudure.pdf
http://mightyohm.com/files/soldercomic/translations/Souder%20c'est%20facile_FR.pdf
Attention!
16
http://www.edurobot.ch
29
Arduino lcole
Les bases de llectronique
Exercice: le circuit lectrique
Ralise le circuit suivant:
Arduino
Diduino
http://www.edurobot.ch
30
Arduino lcole
Observations
Tu viens de raliser le circuit suivant:
Alimentation +5V
Led
Terre (Gnd)
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).
http://www.edurobot.ch
31
Arduino lcole
On peut comparer le fonctionnement dun circuit lectrique celui dun barrage hydrolectrique:
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.
Partie 2: http://00.lc/cm! !
En entier: http://00.lc/rs
http://www.edurobot.ch
32
Arduino lcole
Le circuit lectrique
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 en lectrons vers le milieu pauvre. Si on
place une lampe lectrique entre les deux, le passage des lectrons va gnrer de la lumire.
Circuit lectrique
Pile
+
Lampe
-
Interrupteur
http://www.edurobot.ch
33
Arduino lcole
Les diodes
Il est possible de remplacer lampoule par une diode lectroluminescente, aussi appele LED17. 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
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.
17
http://fr.wikipedia.org/wiki/Diode_lectroluminescente
http://www.edurobot.ch
34
Arduino lcole
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
35
Arduino lcole
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:
http://www.edurobot.ch
36
Arduino lcole
Faire clignoter la LED intgre
Introduction
LArduino tout comme le Diduino possde une LED monte sur le port 13.
Arduino Uno
Diduino
Comme premier programme, nous allons faire clignoter la LED. La programmation se fait dans le logiciel
Arduino.
http://www.edurobot.ch
37
Arduino lcole
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
http://www.edurobot.ch
38
Arduino lcole
{
pinMode(13, OUTPUT);
Serial.begin(9600);
que
{
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}
Tlcharger le code: !
//
//
//
//
http://www.edurobot.ch/code/code1.txt
Une fois le code crit (ou coll) dans la fentre de programmation, il faut lenvoyer sur lArduino. Pour cela, il
faut cliquer sur le bouton tlverser (upload), naturellement aprs avoir connect lArduino lordinateur!
http://www.edurobot.ch
39
Arduino lcole
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
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
40
Arduino lcole
Le code minimal18
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()
{
}
void loop()
{
}
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 le code 1, se trouvent deux fonctions. Les fonctions sont en fait des portions de code.
Premire fonction:
void setup()
{
}
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 check-up de dmarrage. Imaginons un pilote d'avion dans sa cabine qui fait
l'inventaire :
- broche 2 en sortie, tat haut ?
- OK
- timer 3 15 millisecondes ?
- OK
Une fois que l'on a initialis le programme, il faut ensuite crer son "cur", autrement dit le programme en
lui-mme.
Deuxime fonction:
void loop()
{
}
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.
18
http://www.edurobot.ch
41
Arduino lcole
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..." Ce sont donc les
ordres qui seront excuts par lArduino.
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.
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, pourquoi faire des commentaires?
Les commentaires vont 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 facilement comprendre un programme quon a ralis il y a plusieurs semaines et quon
aurait oubli!
Ligne unique de commentaire :
//cette ligne est un commentaire sur UNE SEULE ligne
Les accents
Il est formellement interdit de mettre des accents en programmation! Sauf dans les commentaires.
http://www.edurobot.ch
42
Arduino lcole
Analyse du code 1 19
Revenons maintenant notre code.
La ligne pinMode(13, OUTPUT); initialise la broche 13 du microcontrleur comme sortie, c'est--dire que
des donnes seront envoyes depuis le microcontrleur vers cette broche.
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 broche 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 broche 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.
Profitons maintenant pour voir ce que signifie le terme Output. Il sagit de prciser si la broche est une entre
ou une sortie. En effet, le microcontrleur a la capacit d'utiliser certaines de ses broches en entre (INPUT)
ou en sortie (OUTPUT). Il suffit simplement dinterchanger une ligne de code pour dire qu'il faut utiliser une
broche en entre (rcupration de donnes) 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().
19
Source: http://00.lc/ce
http://www.edurobot.ch
43
Arduino lcole
toi de jouer!
Fais varier les valeurs de linstruction delay et modifie le code selon les exemples ci-dessous.
Essai 1:
digitalWrite(13, HIGH);
delay(50);
digitalWrite(13, LOW);
delay(50);
Essai 2:
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(2000);
Essai 3:
digitalWrite(13, HIGH);
delay(50);
digitalWrite(13, LOW);
delay(50);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
http://www.edurobot.ch
44
Arduino lcole
Monter une LED
Nous allons maintenant raliser le schma suivant:
Arduino Uno
Diduino
Fais attention ne pas te tromper de rsistance et bien monter la LED dans le bon sens.
http://www.edurobot.ch
45
Arduino lcole
Schma
D10
Led
Terre (Gnd)
//
//
//
//
allume
attend
teint
attend
la LED
500ms
la LED
500ms
http://www.edurobot.ch
46
Arduino lcole
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
Exercice 3:
En observant le code ci-dessous, seras-tu capable de prdire ce qui va se passer?
void setup()
{
pinMode(10, OUTPUT);
pinMode(12, OUTPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(10, LOW);
digitalWrite(12, HIGH);
delay(500);
digitalWrite(10, HIGH);
digitalWrite(12, HIGH);
delay(2000);
}
Envoie le code sur ton Arduino et vrifie si tu avais raison. Lien vers le code:
http://www.edurobot.ch
47
Arduino lcole
Les variables
D10
Led
Terre (Gnd)
Serial.begin(9600);
//
//
//
//
//
}
}
void loop() {
}
48
Arduino lcole
Dans notre code, nous devons compter de 0 10. Pour cela, nous devons nous souvenir du nombre de fois
que le code destin allumer la LED a t excut. A la 10me fois, le code doit sarrter.
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).
http://www.edurobot.ch
49
Arduino lcole
Dfinir une variable
Imaginons que nous voulons stocker le nombre 4 dans une variable. Il tiendrait dans un petit carton. Mais on
pourrait le stocker dans un grand container. Oui... mais non! Un microcontrleur, ce n'est pas un ordinateur
3GHz multicore, 8Go de RAM ! Ici, il sagit d'un systme qui fonctionne avec un CPU 16MHz (soit 0,016
GHz) et 2 Ko de SRAM pour la mmoire vive. Il y a donc au moins deux raisons font qu'il faut choisir ses
variables de manire judicieuse :
1. La RAM n'est pas extensible, quand il y en a plus, y en a plus! Dans un mme volume, on peut stocker
bien plus de petits cartons de que gros containers. Il faut donc optimiser la place.
2. Le processeur est de type 8 bits (sur un 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 les variables de la taille dun container sont sur 32 bits, autant prendre un carton qui noccupe
que 8 bits quand la variable tient dedans!
Type de
variable
Type de nombre
stock
Nombre doctets
int
entier
-32768 +32767
16 bits
2 octets
long
entier
-2147483648 +2147483647
32 bits
4 octets
char
entier
-128 +127
8 bits
1 octet
float
dcimale
32 bits
4 octets
double
dcimale
32 bits
4 octets
Prenons maintenant une variable que nous allons appeler x. 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.
int x = 0;
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 :
Type de variable
Type de nombre
stock
unsigned char
unsigned float
unsigned double
Nombre doctets
0 255
8 bits
1 octet
0 65535
16 bits
2 octets
0 4294967295
32 bits
4 octets
http://www.edurobot.ch
50
Arduino lcole
Une des particularits du langage Arduino est qu'il accepte un nombre plus important de types de variables,
listes dans ce tableau:
Type de variable
Type de nombre
stock
byte
word
boolean
Nombre doctets
0 255
8 bits
1 octet
0 65535
16 bits
2 octets
01
1 bits
1 octets
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;".
Analyse du code 20
Revenons notre code et analysons-le.
La ligne byte compteur; permet de crer une variable appele 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++) sert faire varier la variable compteur de 0 9 (en
l'augmentant chaque fois de 1: c'est ce que fait l'instruction compteur++)
20
Source: http://mediawiki.e-apprendre.net/index.php/Dcouverte_des_microcontrleurs_avec_le_Diduino
http://www.edurobot.ch
51
Arduino lcole
La suite, savoir compteur=0 ; compteur<10 ; compteur++ doit tre compris comme suit: la valeur de la
variable compteur est comprise entre 0 et 9 (<10 signifie plus petit que 10) et ajoute un la valeur de
compteur (cest le compteur++).
En conclusion, cette ligne signifie:
Au commencement, ta variable compteur est gale zro. Tu vas excuter le code en boucle. A chaque
fois, tu ajoute +1 ta variable compteur, jusqu ce que tu arrives 9. A ce moment, tu tarrtes.
Le code qui est excut chaque fois est celui qui est compris jusqu laccolade }. Dans notre cas, cest e
code suivant qui est excut 10 fois:
digitalWrite(12, HIGH);
delay(500);
digitalWrite(12, LOW);
delay(500);
//
//
//
//
allume
attend
teint
attend
la LED
500ms
la LED
500ms
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
52
Arduino lcole
Dfinir les broches du microcontrleur
Jusqu maintenant, nous avons identifi les broches du microcontrleur laide de leurs numros, comme
dans lexemple suivant: pinMode(10, OUTPUT);. Cela ne pose pas de problme quand on a une ou deux
LEDs connectes. Mais ds quon a des montages plus comliqus, cela devient difficile de savoir qui fait
quoi. Il est donc possible de renommer chaque broche du microcontrleur.
Premirement, dfinissons la broche utilise du microcontrleur en tant que variable.
const int led_rouge = 2;
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. Dans une variable de ce type, on peut stocker un nombre
allant de -2147483648 +2147483647 ! Cela va suffire! Ainsi, la broche 2 sappellera 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 au
chiffre 2.
Concrtement, quest-ce que cela signifie? Observons la diffrence entre les deux codes.
Broche non-dfinie
void setup() {
pinMode(13, OUTPUT);
// Initialise la broche 13 comme sortie
Serial.begin(9600);
}
void loop() {
digitalWrite(13, HIGH);
// allume la LED
delay(500);
// attend 500ms
digitalWrite(13, LOW);
// teint la LED
delay(500);
// attend 500ms
}
Broche dfinie
const int led_rouge = 13;
//La broche 13 devient led_rouge
void setup() {
pinMode(led_rouge, OUTPUT);
// Initialise led_rouge comme broche de sortie
Serial.begin(9600);
}
void loop() {
digitalWrite(led_rouge, HIGH);
// allume la LED
delay(500);
// attend 500ms
digitalWrite(led_rouge, LOW);
// teint la LED
delay(500);
// attend 500ms
}
On peut trouver que de dfinir les broches allonge le code. Mais quand nous aurons de nombreuses
broches en fonction, cela nous permettra de les identifier plus facilement. Ainsi, si nous avons plusieurs
LED, nous pouvons les appeler Led1, Led2, Led3,... et si nous utilisons des LED de plusieurs couleurs, nous
pourrons les appeler rouge, vert, bleu,...
Enfin (et surtout!), si on veut changer la broche utilise, il suffit de corriger la variable au dpart, sans devoir
corriger tout le code.
http://www.edurobot.ch
53
Arduino lcole
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 21
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
Corrig22: http://www.edurobot.ch/code/k2000.pdf
21
22
Fichier protg par un mot de passe. Pour lobtenir: info [at] edurobot.ch
http://www.edurobot.ch
54
Arduino lcole
tape1: Schmas
Ralise le plan du montage que tu vas utiliser:
D....
D....
D....
D....
D....
D....
http://www.edurobot.ch
55
Arduino lcole
tape2: Programme
Rdige ton programme ici:
http://www.edurobot.ch
56
Arduino lcole
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
tablis la liste des composants que tu auras besoin pour raliser le projet:
http://www.edurobot.ch
57
Arduino lcole
tape1: Schmas
Ralise le plan du montage que tu vas utiliser:
D....
D....
D....
D....
D....
D....
http://www.edurobot.ch
58
Arduino lcole
tape2: Programme
Rdige ton programme ici:
http://www.edurobot.ch
59
Arduino lcole
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
60
Arduino lcole
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.
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
Bouton poussoir NF
Interrupteur
61
Arduino lcole
Exercice 1: allumons cette LED
Ralise le circuit suivant:
Lorsquon appuie sur le bouton poussoir, on ferme le circuit. Le courant passe alors et la LED sallume.
http://www.edurobot.ch
62
Arduino lcole
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
63
Arduino lcole
Protger lArduino
Jusqu maintenant, nous nous sommes toujours contents de faire circuler du courant du microcontrleur
la masse.
Au lieu dutiliser les broches 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 broche
sera raccorde au +5V. Tout se passera bien, si au niveau du programme, la broche 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 broche 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
64
Arduino lcole
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-enbas). Cette rsistance permet de tirer le potentiel vers le bas (pull-down). 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 pulldown ramne l'entre la masse (puisquelle est connecte la masse).
http://www.edurobot.ch
65
Arduino lcole
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.
http://www.edurobot.ch
66
Arduino lcole
Exercice 3: montage avec rsistance pull-down (rappel au moins)23
Ralisons maintenant le circuit suivant:
Gnd
+5V
D4
D12
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).
23
http://www.edurobot.ch
67
Arduino lcole
Observons maintenant le code:
/*
Code 7 - Edurobot.ch, destin au Diduino
Allume LED en fonction de l'tat du bouton poussoir
*/
void setup()
{
pinMode(bouton, INPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop()
{
// Si bouton poussoir appuy
if (digitalRead(bouton) == 1 )
{
digitalWrite(led, HIGH);
}
// Sinon
else
{
digitalWrite(led, LOW);
}
// allume la LED
http://www.edurobot.ch
68
Arduino lcole
Analysons le code:
const int bouton = 4;
const int led = 12;
On renomme les broches 4 et 12 respectivement bouton et led. Cela facilitera la lecture du code.
void setup() {
// Initialise la broche 4 comme entre
pinMode(bouton, INPUT);
// Initialise la broche 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 broche 4 et quelle
est configure en entre (input). De mme, la broche 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 potentiel de +5V sa broche 4, alors il stockera une valeur
de 1.
Dans le cas contraire (diffrence de potentiel de 0V), il stockera une valeur de 0.
Pour lire ltat de la broche 4, nous allons utiliser lexpression digitalRead. Ainsi:
if (digitalRead(bouton) == 1 )
digitalWrite(led, HIGH);
// allume la LED
doit se comprendre comme:
si la broche 4 a une valeur gale 1
alors la broche 12 est en position haute = LED allume
et les lignes:
else {
digitalWrite(led, LOW);
// teint la LED
http://www.edurobot.ch
69
Arduino lcole
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;
void setup()
{
pinMode(bouton, INPUT);
pinMode(led, OUTPUT);
etatbouton = LOW;
Serial.begin(9600);
}
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
}
}
Tlcharger le code: http://www.edurobot.ch/code/code8.txt
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
70
Arduino lcole
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.
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
71
Arduino lcole
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.
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
http://www.edurobot.ch
SDA
72
Arduino lcole
http://www.edurobot.ch
OUTPUT
73
Arduino lcole
tape2: Programme
Rdige ton programme ici:
http://www.edurobot.ch
74
Arduino lcole
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:
Arduino1
LED1
3V3 5V
LED2
LED3
LED4
Vin
Power
4 LEDs choix
D13
RST
AREF
D12
A0
Analog Input
A4
PWM
D10
PWM
D9
PWM
D8
D7
D6
PWM
D5
PWM
D3
PWM
D2
D1
D0
A5
GND
http://www.edurobot.ch
Rsistances
de protection
R7
100
D4
A1
A3
D11
5V
Digital Input/Output
Arduino
A2
R1
220
R2
220
R3
220
R4
220
TX
RX
R8
100
R5
10k
R6
10k
Rsistances pull-down
75
Arduino lcole
Comme on peut lobserver, les rsistances R5 et R6 sont montes en pull-down (rappel au moins). Ce circuit
pourrait tout fait tre mont avec des rsistances pull-up.
Normalement, ce stade, nous devrions tre capables dexcuter le montage laide du schma
lectronique!
+5V
Gnd
Gnd
+5V
Gnd
Reset
A19
A18
A17
A16
A15
A14
+5V
+5V
D8
D9
D10
D11
D12
D13
Gnd
+5V
Gnd
D0
D1
D2
D3
D4
D5
D6
D7
Gnd
http://www.edurobot.ch
76
Arduino lcole
Le code
Analysons le code, maintenant:
En se rfrant au schma de montage, on dclare les constantes pour chaque broche: les boutons
poussoirs sont connects sur les broches 2 et 3, alors que les LEDs sont connectes aux broches 8 11.
/*
Dclaration des constantes pour les noms des broches
*/
const int
allums
const int
allums
const int
const int
const int
const int
btn_minus = 2;
btn_plus = 3;
led_0
led_1
led_2
led_3
=
=
=
=
8;
9;
10;
11;
//Led
//Led
//Led
//Led
0
1
2
3
On initialise ensuite les broches, selon quil sagit des entres (les boutons) ou des sorties (les LEDs).
/*
Initialisation des broches 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
77
Arduino lcole
78
Arduino lcole
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 simplifier le code, on va crer une fonction qui
servira grer laffichage. Nous allons appeler cette fonction affiche, avec un paramtre int valeur_recue.
Ce paramtre reprsente le nombre ! afficher.
//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, LOW);
digitalWrite(led_1, LOW);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
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)
gale 1..."
{
digitalWrite(led_0, HIGH);
}
http://www.edurobot.ch
79
Arduino lcole
if(valeur_recue >= 2)
// "si la valeur reue est plus grande ou
gale 2..."
{
digitalWrite(led_1, HIGH);
// "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, HIGH);
// "on allume la LED 2
}
if(valeur_recue >= 4)
// "si la valeur reue est plus grande ou
gale 4..."
{
digitalWrite(led_3, HIGH;
// "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, HIGH);
}
Il faut lire: si la variable valeur_recue est suprieure ou gale 4, alors on allume la LED 3.
http://www.edurobot.ch
80
Arduino lcole
Variation: Le barregraphe 10 LEDs
DC-7G3EWA
GREEN
HIGH EFFICIENCY RED
Features
Description
END STACKABLE.
MECHANICALLY
RUGGED.
Il existe des barregraphes intgrants 10 LEDs24. On peut
les utiliser
en remplacement des 4 LEDs du
BI-COLOR VERSION AVAILABLE.
prcdent montage.
STANDARD : GRAY FACE, WHITE SEGMENT.
Rfrences utilises dans cet exercice: Kingbright DC-10EWA ou DC7G3EWA.
Notes:
1. All dimensions are in millimeters (inches), Tolerance is 0.25(0.01")unless otherwise noted.
2. Specifications are subject to change without notice.
DATE: APR/22/2004
DRAWN: Y.W.WANG
PAGE: 1 OF 4
24
http://www.edurobot.ch
81
Arduino lcole
Variation: lafficheur numrique
Pour ce montage, nous allons utiliser un afficheur numrique LED.
La rfrence utilise ici est un afficheur anode commune Kingbright SA56-11 SRWA25.
D6
D7
D8
D9
g f
10 9
A
8
a
7
b
6
3
A
4
c
5
dot
MAN6960
220 Ohms
D10
220 Ohms
1
e
2
d
D11
D12
D13
25
http://www.edurobot.ch
82
Arduino lcole
Identification de la position des LEDs
Le code suivant permet didentifier la position des LEDs en les allumant lune aprs lautre:
/*
Code 15 - Edurobot.ch, destin au Diduino
L'afficheur 7 segments
L'objectif est d'afficher des chiffres sur un afficheur 7 segments (7 digits).
Ce code a pour objectif d'allumer toutes les LEDS puis l'une aprs l'autre
pour identifier leur position.
*/
/*
Dclaration des constantes pour les noms des broches
*/
const
const
const
const
const
const
const
const
int
int
int
int
int
int
int
int
led_1
led_2
led_3
led_4
led_5
led_6
led_7
led_8
=
=
=
=
=
=
=
=
void setup()
{
pinMode(led_1,
pinMode(led_2,
pinMode(led_3,
pinMode(led_4,
pinMode(led_5,
pinMode(led_6,
pinMode(led_7,
pinMode(led_8,
}
6;
7;
8;
9;
10;
11;
12;
13;
//Led 1
//Led 2
//Led 3
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
/*
Et c'est parti pour le programme!
*/
void loop()
{
//on allume toutes les leds
digitalWrite(led_1,
digitalWrite(led_2,
digitalWrite(led_3,
digitalWrite(led_4,
digitalWrite(led_5,
digitalWrite(led_6,
http://www.edurobot.ch
LOW);
LOW);
LOW);
LOW);
LOW);
LOW);
83
Arduino lcole
digitalWrite(led_7, LOW);
digitalWrite(led_8, LOW);
delay(1500);
//on teint toutes les leds
digitalWrite(led_1,
digitalWrite(led_2,
digitalWrite(led_3,
digitalWrite(led_4,
digitalWrite(led_5,
digitalWrite(led_6,
digitalWrite(led_7,
digitalWrite(led_8,
delay(500);
HIGH);
HIGH);
HIGH);
HIGH);
HIGH);
HIGH);
HIGH);
HIGH);
http://www.edurobot.ch
84
Arduino lcole
Lobjectif est didentifier chaque LED sur le schma ci-dessous:
Led_3
Led_2
Led_ 1
Led_5
8.
Led_4
Led_7
Led_8
Led_6
Voici donc, dans notre cas, les LEDs qui doivent tre allumes pour crire les chiffres suivants:
led_1
led_2
led_3
led_4
led_5
led_6
X
X
X
X
led_7
X
X
X
X
http://www.edurobot.ch
85
Arduino lcole
A ton tour:
Led_
Led_
Led_
Led_
8.
Led_
Led_
Led_
Led_
#
led_1
led_2
led_3
led_4
led_5
led_6
led_7
1
2
3
4
5
6
7
8
9
0
http://www.edurobot.ch
86
Arduino lcole
Il est aussi possible dcrire les lettres de lalphabet laide dun affichage 7 segments26 :
Exemple:
DIDUINO forever
videmment, cela reste artisanal; mais a peut donner des rsultats acceptables, comme on peut le voir ici:
http://00.lc/kj.
26
http://www.edurobot.ch
87
Arduino lcole
Leon 8: apprendre compter
Objectif
Cette dernire leon va synthtiser tout ce que nous avons vu jusqu maintenant. Lobjectif est de raliser
un montage, avec deux boutons-poussoirs et un affichage 7 segments. Lun des boutons va servir
incrmenter les chiffres sur laffichage, et lautre les dcrmenter. Ainsi, en appuyant 6 fois sur le boutonpoussoir, les chiffres de 1 6 vont successivement safficher.
D3
100 Ohms
100 Ohms
D4
D6
D7
D8
D9
g f
10 9
A
8
a
7
b
6
3
A
4
c
5
dot
MAN6960
220 Ohms
D10
220 Ohms
1
e
2
d
D11
D12
D13
Sur ce schma, laffichage 7 segments est anode commune. Comme dhabitude, chaque bouton-poussoir
est dot dune rsistance pull-down de 1k ou 10k et dune rsistance de protection de linput de 100.
Il est possible de raliser ce montage sur la petite platine dexprimentation du Diduino; mais lidal est
dutiliser une platine plus grande. Cest ce que nous avons fait dans notre exemple, par souci de clart.
http://www.edurobot.ch
88
25
30
35
40
45
50
55
60
25
30
35
40
45
50
55
60
20
20
15
15
F G H
10
10
A B C D E
J
1
DIGITAL (PWM=
AREF
F G H
L
ICSP2
13
12
11
10
4
GND
RESET
ON
TM
Arduino
1
3
0
TX0
RX0
A B C D E
ICSP
TX
RX
ANALOG IN
POWER
IOREF
RESET
3V3
5V
GND
GND
VIN
A0
A1
A2
A3
http://www.edurobot.ch
A4
A5
Arduino lcole
Plan de montage
89
Arduino lcole
Le code
Le code peut tre tlcharg ladresse suivante: http://edurobot.ch/code/code16.txt
Il est trs similaire aux codes prcdents. La principale diffrence rside dans le if(valeur_recue ==
1) , qui dans ce cas signifie "si la valeur reue est gale 1, on allume les segments pour afficher le chiffre
1". Contrairement au if(valeur_recue >= 1), qui permet de cumuler lallumage des LEDs (1 LED pour
1, deux LEDs pour 2,...), lobjectif est ici de nallumer que les LEDs ncessaires laffichage du bon chiffre. Il
ne faudrait en effet pas quun 3 devienne ensuite un 9 au lieu dun 4, parce quon cumule les LEDs
allumes.
/*
Code 16 - Edurobot.ch, destin au Diduino
Apprendre compter
L'objectif est d'afficher des chiffres sur un afficheur 7 segments. Un
permet d'incrmenter le chiffre, l'autre de le dcrmenter.
On compte ainsi de 0 9 ou de 1 0.
*/
/*
Dclaration des constantes pour les noms des broches.
Notre affichage est un 8 segments, avec donc un
lutilisons pas, nous lavons quand mme cbl.
*/
const
const
const
const
const
const
const
const
const
const
int
int
int
int
int
int
int
int
int
int
btn_minus = 3;
btn_plus = 4;
led_1 = 6;
led_2 = 7;
led_3 = 8;
led_4 = 9;
led_5 = 10;
led_6 = 11;
led_7 = 12;
led_8 = 13;
point.
Mme
si
bouton
nous
ne
/*
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 = LOW;
//tat relch par dfaut pour le bouton 2
int memoire_minus = LOW; //tat relch par dfaut pour le bouton 1
/*
http://www.edurobot.ch
90
Arduino lcole
Inutilisation des broches en entre/sortie: entres pour les boutons, sorties
pour les LEDs
*/
void setup()
{
pinMode(btn_plus, INPUT);
pinMode(btn_minus, INPUT);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(led_4, OUTPUT);
pinMode(led_5, OUTPUT);
pinMode(led_6, OUTPUT);
pinMode(led_7, OUTPUT);
pinMode(led_8, OUTPUT);
}
/*
Et c'est parti pour le programme!
*/
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);
//Si le bouton a un tat diffrent que celui enregistr ET que cet tat est
"appuy"
if((etat_bouton != memoire_plus) && (etat_bouton == HIGH))
{
nombre_led++; //on incrmente la variable qui indique combien de LEDs
devrons s'allumer
}
memoire_plus = etat_bouton; //on enregistre l'tat du bouton pour le tour
suivant
//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"
if((etat_bouton != memoire_minus) && (etat_bouton == HIGH))
{
nombre_led--; //on dcrmente la valeur de nombre_led
}
memoire_minus = etat_bouton; //on enregistre l'tat du bouton pour le tour
suivant
http://www.edurobot.ch
91
Arduino lcole
//on applique
4 LEDs)
if(nombre_led
{
nombre_led
}
if(nombre_led
{
nombre_led
}
LOW);
HIGH);
HIGH);
LOW);
HIGH);
HIGH);
HIGH);
HIGH);
}
if(valeur_recue == 2)
// "si la valeur reue est gale 2, on
allume les segments pour afficher le chiffre 2"
{
http://www.edurobot.ch
92
Arduino lcole
digitalWrite(led_1,
digitalWrite(led_2,
digitalWrite(led_3,
digitalWrite(led_4,
digitalWrite(led_5,
digitalWrite(led_6,
digitalWrite(led_7,
digitalWrite(led_8,
LOW);
LOW);
LOW);
HIGH);
LOW);
LOW);
HIGH);
HIGH);
}
if(valeur_recue == 3)
enfin... tu connais la suite...
{
digitalWrite(led_1,
digitalWrite(led_2,
digitalWrite(led_3,
digitalWrite(led_4,
digitalWrite(led_5,
digitalWrite(led_6,
digitalWrite(led_7,
digitalWrite(led_8,
HIGH);
LOW);
LOW);
HIGH);
LOW);
LOW);
LOW);
HIGH);
}
if(valeur_recue == 4)
{
digitalWrite(led_1,
digitalWrite(led_2,
digitalWrite(led_3,
digitalWrite(led_4,
digitalWrite(led_5,
digitalWrite(led_6,
digitalWrite(led_7,
digitalWrite(led_8,
HIGH);
HIGH);
LOW);
LOW);
HIGH);
LOW);
LOW);
HIGH);
}
if(valeur_recue == 5)
{
digitalWrite(led_1,
digitalWrite(led_2,
digitalWrite(led_3,
digitalWrite(led_4,
digitalWrite(led_5,
digitalWrite(led_6,
digitalWrite(led_7,
digitalWrite(led_8,
HIGH);
LOW);
LOW);
LOW);
LOW);
HIGH);
LOW);
HIGH);
}
if(valeur_recue == 6)
{
http://www.edurobot.ch
93
Arduino lcole
digitalWrite(led_1,
digitalWrite(led_2,
digitalWrite(led_3,
digitalWrite(led_4,
digitalWrite(led_5,
digitalWrite(led_6,
digitalWrite(led_7,
digitalWrite(led_8,
LOW);
LOW);
LOW);
LOW);
LOW);
HIGH);
LOW);
HIGH);
}
if(valeur_recue == 7)
{
digitalWrite(led_1,
digitalWrite(led_2,
digitalWrite(led_3,
digitalWrite(led_4,
digitalWrite(led_5,
digitalWrite(led_6,
digitalWrite(led_7,
digitalWrite(led_8,
HIGH);
HIGH);
HIGH);
HIGH);
LOW);
LOW);
LOW);
HIGH);
}
if(valeur_recue == 8)
{
digitalWrite(led_1,
digitalWrite(led_2,
digitalWrite(led_3,
digitalWrite(led_4,
digitalWrite(led_5,
digitalWrite(led_6,
digitalWrite(led_7,
digitalWrite(led_8,
LOW);
LOW);
LOW);
LOW);
LOW);
LOW);
LOW);
LOW);
}
if(valeur_recue == 9)
{
digitalWrite(led_1,
digitalWrite(led_2,
digitalWrite(led_3,
digitalWrite(led_4,
digitalWrite(led_5,
digitalWrite(led_6,
digitalWrite(led_7,
digitalWrite(led_8,
HIGH);
LOW);
LOW);
LOW);
LOW);
LOW);
LOW);
LOW);
}
if(valeur_recue == 10)
http://www.edurobot.ch
94
Arduino lcole
{
digitalWrite(led_1,
digitalWrite(led_2,
digitalWrite(led_3,
digitalWrite(led_4,
digitalWrite(led_5,
digitalWrite(led_6,
digitalWrite(led_7,
digitalWrite(led_8,
LOW);
LOW);
HIGH);
LOW);
LOW);
LOW);
LOW);
LOW);
}
}
Le code se termine avec le chiffre 0, dfaut du 10.
Il est naturellement tout fait possible de cbler un deuxime afficheur 7 segments.
Conclusion
Fin!
Ah ! Non ! C'est un peu court, jeune homme !
On pouvait dire... oh ! Dieu ! ... bien des choses en somme...
Lorsque jai entrepris la rdaction de ce cours, jamais je navais imagin quil me conduirait aussi loin;
dautant plus quun tome 2 est en gestation. Mais de fil en aiguille, ou devrais-je dire de rsistance en LED,
aid de mes lves (cest eux que je dois lultime exercice de cet ouvrage), et entran par le rythme
effrn de leurs apprentissages, il a bien fallu suivre!
Ici se conclut une anne de cours avec mes lves, la dcouverte de cet incroyable outil pdagogique
quest lArduino et, en particulier, le Diduino. Le trs grand facteur de motivation quil a induit chez mes
lves, et la curiosit quils ont ensuite dveloppe est un vrai plaisir pour un enseignant. cela, il ne faut
naturellement pas oublier les comptences acquises par les lves: lectronique, lectricit, informatique,
programmation, gestion de projet... Cest avec plaisir que jai vu ces lves, lissue de leur scolarit,
sengager dans des professions techniques.
Rendez-vous au tome 2!
http://www.edurobot.ch
95