Sunteți pe pagina 1din 76

[Arduino1]DcouvertedelArduino

Dans cette premire partie, nous ferons nos premiers pas avec Arduino. Nous allons
avant tout voir de quoi il sagit exactement, essayer de comprendre comment cela
fonctionne, puis installerons le matriel et le logiciel pour ensuite enchainer sur
lapprentissagedulangagedeprogrammationncessaireaubonfonctionnementdela
carte Arduino. Soyez donc attentif afin de bien comprendre tout ce que je vais vous
expliquer.Sanslesbases,vousnirezpasbienloin

[Arduino101]PrsentationdArduino
Comment faire de llectronique en utilisant un langage de programmation ? La
rponse, cest le projet Arduino qui lapporte. Vous allez le voir, celuici a t conu
pour tre accessible tous par sa simplicit. Mais il peut galement tre dusage
professionnel,tantlespossibilitsdapplicationssontnombreuses.

Questcequecest?
Une quipe de dveloppeurs compose de Massimo Banzi, David Cuartielles, Tom
Igoe, Gianluca Martino, David Mellis et Nicholas Zambetti a imagin un projet
rpondantaudouxnomdeArduinoetmettantenuvreunepetitecartelectronique
programmable et un logiciel multiplateforme, qui puisse tre accessible tout un
chacundanslebutdecrerfacilementdessystmeslectroniques.tantdonnquily
a des dbutants parmi nous, commenons par voir un peu le vocabulaire commun
propreaudomainedellectroniqueetdelinformatique.

Unecartelectronique
Unecartelectroniqueestunsupportplan,flexibleourigide,gnralementcompos
depoxyoudefibredeverre.Ellepossdedespisteslectriquesdisposessurune,
deux ou plusieurs couches (en surface et/ou en interne) qui permettent la mise en
relationlectriquedescomposantslectroniques.Chaquepisterelietelcomposant
tel autre, de faon crer un systme lectronique qui fonctionne et qui ralise les
oprationsdemandes.

Exemplesdecarteslectroniques
videmment,touslescomposantsdunecartelectroniquenesontpasforcmentrelis
entre eux. Le cblage des composants suit un plan spcifique chaque carte
lectronique,quisenommeleschmalectronique.

ExempledeschmalectroniquecarteArduinoUno
Enfin, avant de passer la ralisation dun carte lectronique, il est ncessaire de
transformerleschmalectroniqueenunschmadecblage,appeltypon.

ExempledetyponcarteArduino
Unefoisquelonaunecartelectronique,onfaitquoiavec?

Ehbienunefoisquelacartelectroniqueestfaite,nousnavonsplusqulatesteret
lutiliser ! Dans notre cas, avec Arduino, nous naurons pas fabriquer la carte et
encoremoinslaconcevoir.Elleexiste,elleestdjprtelemploietnousnavons
plusqulutiliser.Etpourcela,vousallezdevoirapprendrecommentlutiliser,ceque
jevaisvousmontrerdanscetutoriel.

Programmable?
Jaiparldecartelectroniqueprogrammableaudbutdecechapitre.Maissavez
vouscequecestexactement?Non?pasvraiment?Alorsvoyonsensembledequoiil
sagit.LacarteArduinoestunecartelectroniquequinesaitrienfairesansquonlui
disequoifaire. Pourquoi ? Eh bien cest du au fait quelle est programmable. Cela
signifiequelleabesoindunprogrammepourfonctionner.

Unprogramme
Un programme est une liste dinstructions qui est excute par un systme. Par
exemplevotrenavigateurinternet,aveclequelvouslisezprobablementcecours,estun
programme.Onpeutanalogiquementfairerfrenceunelistedecourse:

Chaquelmentdecettelisteestuneinstructionquivousdit:Vachercherlelaitou
Vachercherlepain,etc.Dansunprogrammelefonctionnementestsimilaire:
Attendrequelutilisateurrentreunsiteinternetconsulter
Recherchersurinternetlapagedemande
Afficherlersultat
Telpourraittrelefonctionnementdevotrenavigateurinternet.Ilvaattendrequevous
luidemandiezquelquechosepourallerlechercheretensuitevouslemontrer.Ehbien,
toutaussisimplementquecesdeuxcas,unecartelectroniqueprogrammablesuitune
listedinstructionspoureffectuerlesoprationsdemandesparleprogramme.
Etonlestrouveocesprogrammes?Commentonfaitpourlemettredanslacarte
?o_O
Desprogrammes,onpeutentrouverdepartout.MaisrestonsconcentrsurArduino.Le
programme que nous allons mettre dans la carte Arduino, cest nous qui allons le
raliser.Oui,vousavezbienlu.NousallonsprogrammercettecarteArduino.Biensr,

ceneserapasaussisimplequunelistedecourse,maisrassurezvouscependantcar
nousallonsrussirquandmme!Jevousmontreraicommentyparvenir,puisqueavant
tout cest un des objectifs de ce tutoriel. Voici un exemple de programme :

Vous le voyez comme moi, il sagit de plusieurs lignes de texte, chacune tant une
instruction.Celangageressembleunvritablebaragouinetnesemblevouloirpriori
riendiredutoutEtpourtant,cestcequenoussauronsfairedansquelquestemps!
Car nous apprendrons le langage informatique utilis pour programmer la carte
Arduino. Je ne mattarde pas sur les dtails, nous aurons amplement le temps de
revenirsurlesujetplustard.Pourrpondreladeuximequestion,nousallonsavoir
besoindunlogiciel

Etunlogiciel?
Bon,jenevaispasvousfaireledtaildecequestunlogiciel,voussavezsansaucun
doute de quoi il sagit. Ce nest autre quun programme informatique excut sur un
ordinateur.Oui,pourprogrammerlacarteArduino,nousallonsutiliserunprogramme!
Enfait,ilvasagirduncompilateur.Alorsquestcequecestexactement?

Uncompilateur
Eninformatique,cetermedsigneunlogicielquiestcapabledetraduireunlangage
informatique, ou plutt un programme utilisant un langage informatique, vers un
langageplusappropriafinquelamachinequivalelirepuisselecomprendre.Cest
un peu comme si le patron anglais dune firme Chinoise donnait des instructions en
anglais l'un de ses ouvriers chinois. Louvrier ne pourrait comprendre ce quil doit
faire.Pourcela,ilabesoinquelontraduisecequeluiditsonpatron.Cestlerledu

traducteur.Lecompilateurvadonctraduirelesinstructionsduprogrammeprcdent,
critesenlangagetexte,versunlangageditmachine.Celangageutiliseuniquement
des0etdes1.Nousverronsplustardpourquoi.Celapourraittreimagdelafaon
suivante:

Donc, pour traduire le langage texte vers le langage machine (avec des 0 et des 1),
nousauronsbesoindecefameuxcompilateur.Etpasnimportelequel,ilfautceluiqui
soitcapabledetraduirelelangagetexteArduinoverslelangagemachineArduino.Et
oui,sinonriennevafonctionner.SivousmettezuntraducteurFranaisversAllemand
entrenotrepatronanglaisetsonouvrierchinois,anefonctionnerapasmieuxquesils
discutaientdirectement.Vouscomprenez?
Et pourquoi on doit utiliser un traducteur, on peut pas simplement apprendre le
langagemachinedirectement?
Commentdirenon!Nonparcequelelangagemachineestquasimentimpossible
utilisertelquel.Parexemple,commeilestcomposde0etde1,sijevousmontrea:
0001011100111010101000111, vous serez incapable, tout comme moi, de dire ce
quecelasignifie!Etmmesijevousdisquelasuite01000001correspondlalettre
A, je vous donne bien du courage pour coder rien quune phrase ! Bref, oubliez
cetteide.Cestquandmmeplusfaciledutiliserdesmotsanglais(carouinousallons
tre oblig de faire un peu danglais pour programmer, mais rien de bien compliqu
rassurezvous)quedessuitesde0etde1.Vousnecroyezpas?

Envoyerleprogrammedanslacarte
L,jenevaispasvousdiregrandchosecarcestlenvironnementdedveloppement
quivagrertouta.Nousnauronsquapprendrecommentutilisercedernieretilse
dbrouilleratoutseulpourenvoyerleprogrammedanslacarte.Nah!Nousnaurons
doncqucrerleprogrammesansnoussoucierdureste.

PourquoichoisirArduino?
Quevatonfaireavec?
AvecArduino,nousallonscommencerparapprendreprogrammerpuisutiliserdes
composants lectroniques. Au final, nous saurons crer des systmes lectroniques
plusoumoinscomplexes.Maiscenestpastout

Dabord,Arduinocest

unecartelectroniqueprogrammableetunlogicielgratuit:

Maisaussi
Unprixdrisoiretantdonnltenduedesapplicationspossibles.Oncomptera
20 euros pour la carte que lon va utiliser dans le cours. Le logiciel est fournit
gratuitement!
Unecompatibilitsoustouteslesplateformes,savoir:Windows,LinuxetMas
OS.
Une communaut ultra dveloppe ! Des milliers de forums dentreaide, de
prsentationsdeprojets,depropositionsdeprogrammesetdebibliothques,
Un site en anglais arduino.cc et un autre en franais arduino.cc/fr o vous
trouvereztoutdelarfrenceArduino,lematriel,desexemplesdutilisations,de
laidepourdbuter,desexplicationssurlelogicieletlematriel,etc.
Unelibertquasiabsolue.Elleconstitueenellemmedeuxchoses:
Le logiciel : gratuit et open source, dvelopp en Java, dont la simplicit
dutilisationrelvedusavoircliquersurlasouris
Lematriel:carteslectroniquesdontlesschmassontenlibrecirculation
surinternet
Cettelibertaunecondition:lenomArduinonedoittreemployquepourles
cartesofficielles.Ensomme,vousnepouvezpasfabriquervotreproprecarte
surlemodleArduinoetluiassignerlenomArduino.

Etenfin,lesapplicationspossibles
VoiciunelistenonexhaustivedesapplicationspossibleralisesgrceArduino:
contrlerdesappareilsdomestiques
donneruneintelligenceunrobot
raliserdesjeuxdelumires
permettre un ordinateur de communiquer avec une carte lectronique et
diffrentscapteurs
tlcommanderunappareilmobile(modlisme)
etc...
Il y a tellement dautres infinits dutilisations, vous pouvez simplement chercher sur
votremoteurderechercheprfrousurYoutubelemotArduinopourdcouvrirles
milliersdeprojetsralissavec!

Arduinodanscetutoriel
Jevaisquandmmerappelerlesprincipauxobjectifsdececours.Nousallonsavant
tout dcouvrir Arduino dans son ensemble et apprendre lutiliser. Dans un premier
temps, il sagira de vous prsenter ce quest Arduino, comment cela fonctionne

globalement, pour ensuite entrer un peu plus dans le dtail. Nous allons alors
apprendreutiliserlelangageArduinopourpouvoircrerdesprogrammestrssimple
pourdbuter.Nousenchaineronsensuiteaveclesdiffrentesfonctionnalitsdelacarte
etferonsdepetitsTPquivouspermettrontdassimilerchaquenotionaborde.Dslors
que vous serez plutt laise avec toutes les bases, nous nous rapprocherons de
lutilisation de composants lectroniques plus ou moins complexes et finirons par un
plusgrosTPalliantlaprogrammationetllectronique.Dequoivousmettredeleau
labouche!

Arduinolcole?
Pdagogiquement,Arduinoaaussipasmaldatout.Eneffet,sescrateursontdabord
pensceprojetpourquilsoitfaciledaccs.Ilpermetainsiunetrsbonneapprochede
nombreuxdomainesetainsidapprendrepleindechosesassezsimplement.

Desexemples
Voiciquelquesexemplesdutilisationpossible:
Simulerlefonctionnementdesporteslogiques
Permettrelutilisationdediffrentscapteurs
Mettreenuvreetfaciliterlacomprhensiondunrseauinformatique
Se servir dArduino pour crer des maquettes animes montrant le
fonctionnement des collisions entres les plaques de la croute terrestre, par
exemple
Donner un exemple concret dutilisation des matrices avec un clavier
alphanumrique16touchesouplus
trelabasepourdeslvesayantunTPEfairepourleBAC

Deplus,normmentderessourcesettutoriels(maissouventenanglais)setrouvent
surinternet,cequioffreunautonomieparticulirelapprenant.

Desoutilsexistant!
Enfin, pour terminer de vous convaincre dutiliser Arduino pour dcouvrir le monde
merveilleux de lembarqu, il existe diffrents outils qui puissent tre utilis avec
Arduino.Jevaisenciterdeuxquimesembletrelesprincipaux:Ardublockestunoutil
quisegreffeaulogicielArduinoetquipermetdeprogrammeravecdesblocs.Chaque
bloc est une instruction. On peut aisment faire des programmes avec cet outil et
mmes des plutt complexes. Cela permet par exemple de se concentrer sur ce que
londoitfaireavecArduinoetnonseconcentrersurArduinopourensuitecequelon
doit comprendre avec. Citons entre autre la simulation de porte logique : plutt crer
des programmes rapidement sans connaitre le langage pour comprendre plus
facilementcommentfonctionneuneportelogique.Etcenestquunexemple.Carcela
permetaussidepermettredejeunesenfantsdecommencerprogrammersansde
tropgrandescomplications.

ExempledeprogrammesralissavecArdublock
ProcessingestuneautreplateformeenlienavecArduino.Lilnyapasdematriel,
uniquementunlogiciel.Ilpermetentreautredecrerdesinterfacesgraphiquesavecun
langagedeprogrammationtrssimilaireceluidArduino.Parcontre,celademande
un niveau un peu plus lev pour pouvoir lutiliser, mme si cela reste simple dans
lensemble.

VoilunexempledecequejavaisralisavecProcessingpourfairecommuniquer
monordinateuravecmacarteArduino
Jespre avoir t assez convaincant afin que vous franchissiez le pas et ayez du
plaisirapprendre!

LescartesArduino
Lematrielquejaichoisidutilisertoutaulongdececoursnapasunprixexcessifet,
jelaidit,tourneauxalentoursde25TTC.Ilexisteplusieursmagasinsenligneseten
boutiquesquivendentdescartesArduino.Jevaisvousendonnerquelquesuns,mais
avant,ilvafalloirdiffrenciercertaineschoses.

Lesfabricants
Le projet Arduino est libre et les schmas des cartes circulent librement sur internet.
Dolamiseengardequejevaisfaire:ilsepeutquunillustreinconnufabriquelui
mmesescartesArduino.Celanariendemalensoi,silveutlescommercialiser,il
peut.Maissilestmalhonnte,ilpeutvousvendreunproduitdfectueux.Biensr,tout
lemondenechercherapasvousarnaquer.Maislaprudenceestderigueur.Faites
doncattentionovousachetezvoscartes.

Lestypesdecartes
Ilyatroistypesdecartes:
Lesdites officielles qui sont fabriques en Italie par le
fabricantofficiel:SmartProjects
Lesdits compatibles qui ne sont pas fabriqus par SmartProjects, mais qui
sonttotalementcompatiblesaveclesArduinoofficielles.
Lesautresfabriquespardiverseentrepriseetcommercialisessousunnom
diffrent(Freeduino,Seeduino,Femtoduino,).

Lesdiffrentescartes
Des cartes Arduino il en existe beaucoup ! Voyons celles qui nous intressent La
carteUnoetDuemilanoveNouschoisironsdutiliserlacarteportantlenomdeUno
ouDuemilanove.Cesdeuxversionssontpresqueidentiques.

CarteArduinoDuemilavoveetUnoaveclaquellenousallonstravailler
La carte Mega La carte Arduino Mega est une autre carte qui offre toutes les
fonctionnalitsdelacarteprcdente,maisavecdesfonctionnalitssupplmentaires.
On retrouve notamment un nombre dentres et de sorties plus important ainsi que
plusieursliaisonssries.Biensr,leprixestpluslev:>40!

CarteArduinoMega
Les autres cartes Il existe encore beaucoup dautres cartes, je vous laisse vous
dbrouiller pour trouver celle qui conviendra vos projets. Cela dit, je vous conseil
dansunpremiertempsdutiliserlacarteArduinoUnoouDuemilanovedunepartcar
ellevousseralargementsuffisantepourdbuteretdautrepartcarcestaveccelleci
quenousprsentonslecours.

Oacheter?
IlexistesurlenetunemultitudedemagasinsquiproposentdescartesArduino.Pour
consulter la liste de ces magasins, rien de plus simple, il suffit de vous rendre sur le
forumddi:

LesmeilleursboutiquesdlectroniqueCliquezici
JaivudescartesofficiellesditionSMD/CMS.Calairbienaussi,cestquoila

diffrence?Jepeuxmenservir?
Ilnyapasdediffrence!enfinpresqueSMDsignifieSurfaceMountDevice,en
franais on appelle a des CMS pour Composants Monts en Surface. Ces
composants sont souds directement sur le cuivre de la carte, il ne la traverse pas
comme les autres. Pour les cartes Arduino, on retrouve le composant principal en
ditionSMDdanscescartes.Lacarteestdonclamme,aucunediffrencepourletuto.
Lescomposantssontlesmmes,seulelallurephysiqueestdiffrente.Parexemple,
cidessuslaMegaestenSMDetlaUnoestclassique.

Listedachat
Tout au long du cours, nous allons utiliser du matriel en supplment de la carte.
Rassurezvous le prix est bien moindre. Je vous donne cette liste, cela vous vitera
dacheterenplusieursfois.Vousallezdevoirmecroiresurparolesurleurintrt.Nous
dcouvrirons comment chaque composant fonctionne et comment les utiliser tout au
longdututoriel.
Attention, cette liste ne contient que les composants en quantits minimales
strictes.LibrevousdeprendreplusdeLEDetdersistancesparexemple(aucas
o vous en perdriez ou dtruisiez). Pour ce qui est des prix, jai regard sur
diffrents sites grands publics (donc pas Farnell par exemple), ils peuvent donc
paratrepluslevquelanormaledanslamesureocessitesamortissentmoins
surdesventesdesclientsfidlesquiprennenttoutengrandequantit
Avant que joublie, quatres lments napparaitront pas dans la liste et sont
indispensables:
UneArduinoUnoouDuemilanove

UncbleUSBAmle/Bmle

UneBreadBoard(plaquedessai)

Unlotdefilspourbrancherletout!

ListeGlobale
Voici donc la liste du matriel ncessaire pour suivre le cours. Libre vous de tout
acheterounon.

Listeincomplte,letutorielnestpastermin!Maiselle
suffitpoursuivreleschapitresenligne.
Dsignation

Quantit Photo

LEDrouge

LEDverte

LEDjaune(ou
orange)

Description
Cecomposantestunesortedelampeunpeu
spcial.Nousnousenservironsprincipalement
pourfairedelasignalisation.

Rsistance
(entre220et
10
470Ohm)
Rsistance
(entre2.2et4.7 2
kOhm)
Rsistance(10
2
kOhm)

Larsistanceestuncomposantdebasequi
sopposeaupassageducourant.Onsensertpour
limiterdescourantsmaximumsmaisaussipour
dautreschoses.

Bouton
Poussoir

Unboutonpoussoirsertfairepasserlecourant
lorsquonappuiedessusouaucontrairegarderle
circuitteintlorsquilestrelch.

Letransistorsertpleindechose.Ilpeuttre
utilispourfairedelamplification(decourantou
detension)maisaussicommeuninterrupteur
commandlectriquement.

Unafficheur7segmentsestunensembledeLEDs
(cf.cidessus)disposesgomtriquementpour
afficherdeschiffres.

Transistor
(2N2222ou
BC547)
Afficheur7
segments
(anode
commune)

DcodeurBCD
1
(MC14543)

LedcodeurBCD(BinaireCodDcimal)permet
piloterdesafficheurs7segmentsenlimitantle
nombredefilsdedonnes(4aulieude7).

Condensateur
(10nF)

Lecondensateurestuncomposantdebase.Ilsert
pleindechose.Onpeutselereprsentercomme
unpetitrservoirlectricit.

Condensateur
1000F

Celuiciestunplusgrosrservoirqueleprcdent

Potentiomtre
linaire(10
kOhm)

Lepotentiomtreestunersistancequelonpeut
fairevariermanuellement.

UneLEDRVB(RougeVertBleu)estuneLED
permettantdemlangerlescouleursdebasespour
encrerdautres.

cranLCD
1
alphanumrique

LcranLCDalphanumriquepermetdafficherdes
caractrestelsqueleschiffresetleslettres.Ilva
apporterdelinteractivitvosprojetslesplusfous
!

LEDRVB

Lesrevendeurs
Je vous ai dj donn le lien, vous pourrez trouver ces composants chez les
revendeurslistsdanscesujetduforum:

LesmeilleursboutiquesdlectroniqueCliquezici

Leskits
Enfin, il existe des kits tout prts chez certains revendeurs. Nous nen conseillerons
aucunpourplusieursraisons.Toutdabord,pournepasfairetropdepublicitetrester
conformeaveclachartedusite.Ensuite,carilestdifficiledetrouverunkitcomplet.Ils
onttousdesavantagesetdesinconvnientsmaisaucun(aumomentdelapublication
de ces lignes) ne propose absolument tous les composants que nous allons utiliser.
Nous ne voulons donc pas que vous reveniez vous plaindre sur les forums car nous
vousaurionsfaitdpenservotreargentinutilement!
Celatantdit,mercidenepasnousspammerdeMPpourquelondonnenotre
avissurteloutelkit!Usezdesforumspourcela,ilyatoujoursquelquunquisera
l pour vous aider. Et puis nous navons pas les moyens de tous les acheter et
testerleurqualit!

[Arduino102]Quelquesbaseslmentaires
En attendant que vous achetiez votre matriel, je vais vous prsenter les bases de

llectroniqueetdelaprogrammation.Celavousdemanderatoutdemmeunebonne
concentrationpouressayerdecomprendredesconceptspasvidentsensoit.
Lapremirepartiedecechapitrenefaitquereprendrequelqueslmentsducours
surllectronique,quevouspouvezconsulterpourdeplusamplesexplications.

Lecourant,latensionetlamasse
Pourfairedellectronique,ilestindispensabledeconnatresurleboutdesdoigtsce
quesontlesgrandeursphysiques.Alors,avantdecommencervoirlesquellesonva
manipuler,voyonsunpeucequestunegrandeurphysique.Unegrandeurphysique
estquelquechosequisemesure.Plusprcismentilsagitdunlmentmesurable,
grce un appareil ou dispositif de mesure, rgit par les lois de la physique. Par
exemple, la pression atmosphrique est une grandeur physique, ou bien la vitesse
laquelle circule une voiture en est aussi une. En lectronique cependant, nous ne
mesurons pas ces grandeursl, nous avons nos propres grandeurs, qui sont : le
courantetlatension.

Lasourcednergie
Lnergie que lon va manipuler (courant et tension) provient dun gnrateur. Par
exemple, on peut citer : la pile lectrique, la batterie lectrique, le secteur lectrique.
Cette nergie qui est fournie par le gnrateur est restitue un ou plusieurs
rcepteurs. Le rcepteur, daprs son nom, reoit de lnergie. On dit quil la
consomme.Onpeutciterpourexemples:unchauffagedappoint,unschecheveux,
uneperceuse.

Lecourantlectrique
Chargeslectriques
Leschargeslectriquessontdesgrandeursphysiquesmesurables.Ellesconstituentla
matireenellemme.Dansunatome,quiestlmentprimairedelamatire,ilyatrois
chargeslectriquesdiffrentes:leschargespositives,ngativesetneutresappeles
respectivement protons, lectrons et neutrons. Bien, maintenant nous pouvons
dfinirlecourantquiestundplacementordonndechargeslectriques.

Conductibilitdesmatriaux
Lanotiondeconductibilitestimportanteconnatre,carellepermetdecomprendre
pas mal de phnomnes. On peut dfinir la conductibilit comme tant la capacit
dun matriau se laisser traverser par un courant lectrique. De ces matriaux, on
peutdistinguerquatregrandesfamilles:
les isolants : leurs proprits empchent le passage dun courant lectrique
(plastique,bois,verre)
lessemiconducteurs:cesontdesisolants,maisquilaissentpasserlecourant
dslorsquelonmodifielgrementleurstructureinterne(diode,transistor,LED)

les conducteurs : pour eux, le courant peut passer librement travers tout en
opposant une faible rsistance selon le matriau utilis (or, cuivre, mtal en
gnral)
lessupraconducteurs:cesontdestypesbienparticuliersqui,unetemprature
extrmement basse, nopposent quasiment aucune rsistance au passage dun
courantlectrique

Sensducourant
Le courant lectrique se dplace selon un sens de circulation. Un gnrateur
lectrique,parexempleunepile,produituncourant.Etbiencecourantvacirculerdu
plepositifversleplengatifdelapile,sietseulementsicesdeuxplessontrelis
entre eux par un fil mtallique ou un autre conducteur. Ceci, cest le sens
conventionnel du courant. On note le courant par une flche qui indique le sens
conventionneldecirculationducourant:

Indicationdusensducourant

Intensitducourant
Lintensit du courant est la vitesse laquelle circule ce courant. Tandis que le
courant est un dplacement ordonn de charges lectriques. Voil un point ne
pasconfondre.
On mesure la vitesse du courant, appele intensit, en Ampres (not A) avec un
Ampremtre. En gnral, en lectronique de faible puissance, on utilise
principalementlemilliAmpre(mA)etlemicroAmpre(A),maisjamaisbienaudel.
Cesttoutcequilfautsavoirsurlecourant,pourlinstant.

Tension
Autantlecourantsedplace,oudumoinsestundplacementdechargeslectriques,
autantlatensionestquelquechosedestatique.Pourbiendfinircequestlatension,
sachezquonlacomparelapressiondunfluide.Parexemple,lorsquevousarrosez
votre jardin (ou une plante, comme vous prfrez) avec un tuyau darrosage et bien
danscetuyau,ilyaunecertainepressionexerceparleaufournieparlerobinet.Cette
pressionpermetledplacementdeleaudansletuyau,donccreruncourant.Maissi
lapressionnestpasassezforte,lecourantneseraluinonpluspasassezfort.Pour
preuve,vousnavezquapincerletuyaupourconstaterquelecourantnecirculeplus.
Onappellecephnomnedepression:latension.Jenendispaspluscarseserait

vousembrouiller.

Notationetunit
LatensionestmesureenVolts(noteV)parunVoltmtre.Onutiliseprincipalement
leVolt,maisaussisonsousmultiplequiestlemilliVolt(mV).Onreprsentelatension,
dunepileparexemple,grceuneflcheorientetoujoursdanslesensducourant
auxbornesdungnrateurettoujoursopposeaucourant,auxbornesdunrcepteur:

Flchagedelatension

Ladiffrencedepotentiel
Surleschmaprcdent,onaaupointMunetensionde0VetaupointP,unetension
de5V.PrenonsnotreVoltmtreetmesuronslatensionauxbornesdugnrateur.La
borne COM du Voltmtre doit tre relie au point M et la borne + au point P. Le
potentielaupointP,soustraitparlepotentielaupointMvaut:UP UM = 5 0 = 5V
.Onditqueladiffrencedepotentielentrecesdeuxpointsestde5V.Cettemesure
senotedonc: UPM .SioninverselesensdebranchementduVoltmtre,laborne+
est relie au point M et la borne COM au point P. La mesure que lon prend est la
diffrence de tension (= potentiel) entre le point M et le point P :
UM UP = 0 5 = 5V Cettedmonstrationunpeusurprenantevientdufaitquela
masseestarbitraire.

Lamasse
Justement,parlonsen!Lamasseest,enlectronique,unpointderfrence.

Notionderfrentiel
Quandonprendunemesure,engnral,onlaprendentredeuxpointsbiendfinis.Par
exemple, si vous vous mesurez, vous prenez la mesure de la plante de vos pieds
jusquausommetdevotrette.Sivousprenezlaplantedevospiedspourrfrence
(cestdirelechiffrezroinscritsurlemtre),vouslirez1m70(parexemple).Sivous
inversez, non pas la tte, mais le mtre et que le chiffre zro de celuici se retrouve
doncausommetdevotrette,vousserezobligdelirelamesure1m70.Etbien,ce
chiffre zro est la rfrence qui vous permet de vous mesurer. En lectronique, cette
rfrenceexiste,onlappellelamasse.

Questcequecest?
Lamasse,etbiencestunrfrentiel.Enlectroniqueonvoitlamassedunmontage

commetantlezroVolt(0V).Cestlepointquipermetdemesurerunebonnepartie
destensionsprsentesdansunmontage.

Reprsentationetnotation
Ellesereprsenteparcesymbole,surunschmalectronique:

Symboledelamasse
Vous ne le verrez pas souvent dans les schmas de ce cours, pour la simple raison
quelleestprsentesurlacartequelonvautilisersousunautrenom:GND.GNDest
undiminutifdutermeanglaisGroundquiveutdireterre/sol.Donc,pournousettous
les montages que lon ralisera, ce sera le point de rfrence pour la mesure des
tensionsprsentessurnoscircuitsetlezroVoltdetousnoscircuits.

Unerfrencearbitraire
Pour votre culture, sachez que la masse est quelque chose darbitraire. Je lai bien
montrdanslexempleaudbutdeceparagraphe.Onpeutchangerlemplacementde
cetterfrenceet,parexemple,trsbiendirequele5Vestlamasse.Cequiaurapour
consquencedemodifierlanciennemasseen5V.

Larsistanceetsaloi!
En lectronique il existe plein de composants qui ont chacun une ou plusieurs
fonctions.Nousallonsvoirquelssontcescomposantsdanslecours,maispastoutde
suite.Car,maintenant,onvaaborderlarsistancequiestLEcomposantdebaseen
lectronique.

Prsentation
Cestlecomposantleplusutilisenlectronique.Saprincipalefonctionestderduire
lintensitducourant(maispasuniquement).Cecomposantseprsentesouslaforme
dunpetitboitierfaitdediversmatriauxetreprpardesanneauxdecouleurindiquant
lavaleurdecettedernire.Photodersistance:

Photodersistance

Symbole
Lesymboledelarsistanceressembletrangementlaformedesonboitier:

Symboledelarsistance

Loidohm
Le courant traversant une rsistance est rgi par une formule assez simple, qui se
nommelaloidohm:

I=

U
R

I:intensitquitraverselarsistanceenAmpres,noteA
U:tensionauxbornesdelarsistanceenVolts,noteV
R:valeurdelarsistanceenOhms,note
Engnral,onretientmieuxlaformulesouscetteforme:U = R I

Unit
Lunitdelarsistanceestlohm.Onlenoteaveclesymbolegrecomgamajuscule:
.

Lecodecouleur
Larsistancepossdeunesuitedanneauxdecouleursdiffrentessursonboitier.Ces
couleurs servent expliciter la valeur de la rsistance sans avoir besoin dcrire en
chiffre dessus (car vous avez dj essay dcrire sur un cylindre ?) Le premier
anneaureprsentelechiffredescentaines,lesecondceluidesdizainesetletroisime
celui des units. Enfin, aprs un petit espace vient celui du coefficient multiplicateur.
Avecsesquatresanneauxetunpeudentrainementvouspouvezalorsdevinlavaleur
de la rsistance en un clin doeil . Ce tableau vous permettra de lire ce code qui
correspondlavaleurdelarsistance:
Couleur Chiffre Coefficientmultiplicateur Puissance Tolrance
Noir
0
1

100
1
Brun
1
10
1%
10
Rouge 2
100
2%
102
3
Orange 3
1000

10
Jaune 4
10000

104
Vert
5
100000
0.5%
105
6
Bleu
6
1000000
0.25%
10
Violet 7
10000000
0.10%
107
8
Gris
8
100000000
0.05%
10
Blanc 9
1000000000

109

1
Or
0.1
0.1
5%
10
Argent 0.01
0.01
10%
102
(absent)

20%

Lemicrocontrleur
Nous avons dj un peu abord le sujet dans la prsentation du cours. Je vous ai
expliqubrivementcommentfonctionnaitunprogrammeetsurtoutcequectait!
Bon,dsprsentjevaisrentrerunpetitpeuplusdansledtailenvousintroduisant
desnotionsbasessurlematrieltroitementlilaprogrammation.Nousallonsen
effet aborder le microcontrleur dans un niveau de complexit suprieur ce que je
vousavaisintroduittoutlheure.Ho,riendebieninsurmontable,soyezsanscraintes.

Laprogrammationenlectronique
Aujourdhui,llectroniqueestdeplusenpluscomposedecomposantsnumriques
programmables.Leurutilisationpermetdesimplifierlesschmaslectroniquesetpar
consquentrduirelecotdefabricationdunproduit.Ilenrsultedessystmesplus
complexesetperformantspourunespacerduit.

Commentprogrammerdellectronique?
Pour faire de llectronique programme, il faut un ordinateur et un composant
programmable. Il existe tout plein de varits diffrentes de composants
programmables,noter:lesmicrocontrleurs,lescircuitslogiquesprogrammables,
Nous,nousallonsprogrammerdesmicrocontrleurs.Maiscepropos,vousaijedit
questcequectaitquunmicrocontrleur?
Questcequecest?
Jelaiditlinstant,lemicrocontrleurestuncomposantlectroniqueprogrammable.
Onleprogrammeparlebiaisdunordinateurgrceunlangageinformatique,souvent
propreautypedemicrocontrleurutilis.Jenentreraispasdanslutilisationpousse
decesdernierscarleniveauestrudementlevetlacomprhensiondifficile.Voiciune
photodunmicrocontrleur:

Photodemicrocontrleur
CestdonclemicrocontrleurquivatrelecerveaudelacarteArduino,pourenrevenir
nosmoutons.Cestluiquenousallonsprogrammer.Onauraletempsdenrediscuter.
Pour linstant je veux uniquement vous prsenter les lments principaux qui le
composent.

Compositiondeslmentsinternesdunmicrocontrleur
Un microcontrleur est constitu par un ensemble dlments qui ont chacun une
fonctionbiendtermine.Ilestenfaitconstitudesmmeslmentsquesurlacarte
mre dun ordinateur. Si lon veut, cest un ordinateur (sans cran, sans disque dur,
sans lecteur de disque) dans un espace trs restreint. Je vais vous prsenter les
diffrentslmentsquicomposentunmicrocontrleurtypiqueetuniquementceuxqui
vont nous tre utiles. La mmoire La mmoire du microcontrleur sert plusieurs
choses.Onpeutaismentciterlestockageduprogrammeetdedonnesautresquele
programme.Ilenpossde5types:
LammoireFlash:Cestcellequicontiendraleprogrammeexcuter(celuique
vous allez crer!). Cette mmoire est effaable et rinscriptible (cest la mme
quuneclUSBparexemple)
RAM : cest la mmoire dite vive, elle va contenir les variables de votre
programme.Elleestditevolatilecarelleseffacesioncoupelalimentationdu
microcontrleur(commesurunordinateur).
EEPROM : Cest le disque dur du microcontrleur. Vous pourrez y enregistrer
des infos qui ont besoin de survivre dans le temps, mme si la carte doit tre
arrteetcoupedesonalimentation.Cettemmoireneseffacepaslorsquelon
teintlemicrocontrleuroulorsquonlereprogramme.
Lesregistres:cestuntypeparticulierdemmoireutilisparleprocesseur.Nous
nenparleronspastoutdesuite.
Lammoirecache:cestunemmoirequifaitlaliaisonentrelesregistresetla
RAM.Nousnenparleronsgalementpastoutdesuite.

Pour plus de dtails sur les mmoires utilisables dans vos programmes, une
annexeenfindetutorielsoccupedecela
Le processeur Cest le composant principal du microcontrleur. Cest lui qui va
excuterleprogrammequenousluidonneronstraiter.OnlenommesouventleCPU.
Diverseschoses Nous verrons plus en dtail lintrieur dun microcontrleur, mais
pas tout de suite, cest bien trop compliqu. Je ne voudrais pas perdre la moiti des
visiteursenuninstant!

Fonctionnement
Avant tout, pour que le microcontrleur fonctionne, il lui faut une alimentation ! Cette
alimentation se fait en gnrale par du +5V. Dautres ont besoin dune tension plus
faible, du +3,3V (cest le cas de la Arduino Due par exemple). En plus dune
alimentation,ilabesoindunsignaldhorloge.Cestenfaitunesuccessionde0etde1
ou plutt une succession de tension 0V et 5V. Elle permet en outre de cadencer le
fonctionnementdumicrocontrleurunrythmergulier.Grceelle,ilpeutintroduire
lanotiondetempsenprogrammation.Nousleverronsplusloin.Bon,pourlemoment,
vousnavezpasbesoindensavoirplus.Passonsautrechose.

Lesbasesdecomptage(2,10et16)
Lesbasesdudecomptage
Onvaapprendrecompter?o_O
Non,jevaissimplementvousexpliquercequesontlesbasesdecomptage.Cesten
faitunsystmedenumrationquipermetdecompterenutilisantdescaractresde
numrations,onappelleadeschiffres.

Cassimple,labase10
La base 10, vous la connaissez bien, cest celle que lon utilise tous les jours pour
compter. Elle regroupe un ensemble de 10 chiffres : 0,1,2,3,4,5,6,7,8,9. Avec ces
chiffres, on peut crer une infinit de nombres (ex : 42, 89, 12872, 14.56, 9.3, etc).
Cependant,voyonsceladunautreil
Lunitserareprsentparunchiffremultiplipar10lapuissance0.
Ladizaineserareprsentparunchiffremultiplipar10lapuissance1.
Lacentaineserareprsentparunchiffremultiplipar10lapuissance2.
[...]
Lemillionserareprsentparunchiffremultiplipar10lapuissance6.
etc
Engnralisant,onpeutdoncdirequunnombre(composdechiffres)estlasomme
deschiffresmultiplispar10unecertainepuissance.Parexemple,sionveutcrire
1024, on peut lcrire : 1 1000 + 0 100 + 2 10 + 4 1 = 1024
ce qui est
3
2
1
0
quivalentcrire:1 10 + 0 10 + 2 10 + 4 10 = 1024
Etbiencest

a,compterenbase10!Vousallezmieuxcomprendreaveclapartiesuivante.

Casinformatique,labase2etlabase16
En informatique, on utilise beaucoup les bases 2 et 16. Elles sont composes des
chiffressuivants:
pourlabase2:leschiffres0et1.
pourlabase16 : on retrouve les chiffres de la base 10, plus quelques lettres :
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Onappellelabase2,labasebinaire.Ellereprsentedestatslogiques0ou1.Dans
un signal numrique, ces tats correspondent des niveaux de tension. En
lectroniquenumrique,trssouventilsagiradunetensionde0Vpouruntatlogique
0dunetensionde5Vpouruntatlogique1.OnparleaussideniveauHAUTouBAS
(in english : HIGH or LOW). Elle existe cause de la conception physique des
ordinateurs. En effet, ces derniers utilisent des millions de transistors, utiliss pour
traiter des donnes binaires, donc deux tats distincts uniquement (0 ou 1). Pour
compter en base 2, ce nest pas trs difficile si vous avez saisi ce quest une base.
Dans le cas de la base 10, chaque chiffre tait multipli par 10 une certaine
puissanceenpartantdelapuissance0.Etbienenbase2,pluttquedutiliser10,on
utilise 2. Par exemple, pour obtenir 11 en base 2 on crira : 1011 En effet, cela
quivaut

faire
:
1 23 + 0 22 + 1 21 + 1 20

soit
:

18+04+12+11

Unchiffreenbase2sappelleunbit.Unregroupementde8bitssappelleunoctet.
Cevocabulaireesttrsimportantdoncretenezle!
La base 16, ou basehexadcimale est utilise en programmation, notamment pour
reprsenterdesoctetsfacilement.Reprenonsnosbits.Sionenutilisequatre,onpeut
reprsenter des nombres de 0 (0000) 15 (1111). a tombe bien, cest justement la
portedunnombrehexadcimale!Eneffet,commeditplushautilvade0(0000ou0)
F(1111ou15),cequireprsente16chiffresenhexadcimal.Grcecela,onpeut
reprsentersimplementdesoctets,enutilisantjustedeuxchiffreshexadcimaux.

Lesnotations
Ici,riendetrscompliqu,jevaissimplementvousmontrercommentonpeutnoterun
nombreendisantquellebaseilappartient.
Basebinaire:(10100010)2
Basedcimale:(162)10
Basehexadcimale:(A2)16
Aprsent,voyonslesdiffrentesmthodespourpasserdunebaselautregrceaux
conversions.

Conversions
Souvent, on a besoin de convertir les nombres dans des bases diffrentes. On

retrouvera deux mthodes, bonnes savoir lune comme lautre. La premire vous
apprendrafairelesconversionslamain,vouspermettantdebiencomprendreles
choses.Laseconde,celledelacalculatrice,vouspermettradefairedesconversions
sansvousfatiguer.

DcimaleBinaire
Pourconvertirunnombredcimal(enbase10)versunnombrebinaire(enbase2,vous
suivezcestbien!),ilsuffitdesavoirdiviserpar2!aira?Prenezvotrenombre,
puis divisez le par 2. Divisez ensuite le quotient obtenu par 2 puis ainsi de suite
jusquavoirunquotientnul.Ilvoussuffitalorsdelirelesrestesdebasenhautpour
obtenirvotrenombrebinaireParexemplelenombre42scrira101010enbinaire.
Voilunschmadedmonstrationdecettemthode:

Ongardelesrestes(enrouge)etonlilersultatdebasenhaut.

BinaireHexadcimal
La conversion de binaire lhexadcimal est la plus simple raliser. Tout dabord,
commencezregrouperlesbitsparblocsdequatreencommenantparladroite.Siil
nyapasassezdebitsgauchepourfairelederniergroupedequatre,onrajoutedes

zros. Prenons le nombre 42, qui scrit en binaire, on la vu, 101010, on obtiendra
deuxgroupesde4bitsquiseront00101010.Ensuite,ilsuffitdecalculerblocparbloc
pourobtenirunchiffrehexadcimalenprenantencomptelavaleurdechaquebit.Le
premier bit, de poids faible (tout droite), vaudra par exemple A (
1 8 + 0 4 + 1 2 + 0 1 = 10
: A en hexadcimal). Ensuite, lautre bloc
vaudra simplement 2 (0 8 + 0 4 + 1 2 + 0 1 = 2
). Donc 42 en base
dcimalevaut2Aenbasehexadcimale,cequiscritaussi (42 ) 10 = (2A) 16 Pour
passerdehexadcimalbinaire,ilsuffitdefairelefonctionnementinverseensaidant
delabasedcimaledetempsentemps.Ladmarchesuivreestlasuivante:
Jespareleschiffresunparun(onobtient2etA)
Jeconvertisleursvaleursendcimal(cequinousfait2et10)
Jemetcesvaleursenbinaire(etonadonc00101010)

DcimalHexadcimal
Ce cas est plus dlicat traiter, car il ncessite de bien connatre la table de
multiplication par 16. Comme vous avez bien suivi les explications prcdentes,
vous comprenez comment faire ici Mais comme je suis nul en math, je vous
conseilleraisdefaireunpassageparlabasebinairepourfairelesconversions!

Mthoderapide
Pourcela,jevaisdansDmarrer/Touslesprogrammes/Accessoires/Calculatrice.
Quiaditquejtaisfainant?:colere2:

Vousvoyezenhautquilyadesoptionscocherpourafficherlenombreentrdansla
basequelonveut.Prsentement,jesuisenbase10(dcimaleboutonDc).Sije
cliquesurHex:

Jevoisquemonnombre42atconvertien:2A.Etmaintenant,sijecliquesurBin:

Notre nombre a t converti en : 00101010 Oui, cest vrai a. Pour quoi on a pas
commencparexpliquera?Quisait.

[Arduino103]Lelogiciel
AfindevouslaisserunlgertempsdepluspourvousprocurervotrecarteArduino,je
vaisvousmontrerbrivementcommentseprsentelelogicielArduino.

Installation
IlnyapasbesoindinstallerlelogicielArduinosurvotreordinateurpuisquecedernier
est une version portable. Regardons ensemble les tapes pour prparer votre
ordinateurlutilisationdelacarteArduino.

Tlchargement
Pour tlcharger le logiciel, il faut se rendre sur la page de tlchargement du site
arduino.cc.Vousavezdeuxcatgories:
Download:Danscettecatgorie,vouspouveztlchargerladernireversiondu
logiciel.LesplateformesWindows,LinuxetMacsontsupportesparlelogiciel.
Cestdonciciquevousalleztlchargerlelogiciel.
PreviousIDEVersions:Danscettecatgoriel,vousaveztouteslesversionsdu
logiciel, sous les plateformes prcdemment cites, depuis le dbut de sa
cration.

SousWindows
PourmoiceserasousWindows.JecliquesurlelienWindowsetlefichierapparait:

TlchargementdulogicielArduino
Une fois que le tlchargement est termin, vous navez plus qu dcompresser le

fichieravecunutilitairededcompression(7zip,WinRar,).Alintrieurdudossier
setrouventquelquesfichiersetlexcutabledulogiciel:

ExcutabledulogicielArduino

Macos
CliquezsurlelienMacOS.Unfichier.dmgapparait.Enregistrezle.

TlchargementsousMacos
Doublecliquezsurlefichier.dmg:

Contenudutlchargement
On y trouve lapplication Arduino (.app), mais aussi le driver installer (.mpkg).
Procdez linstallation du driver puis installez lapplication en la glissant dans le
raccourcidudossierApplicationsquiestnormalementprsentsurvotreordinateur.

SousLinux
Rien de plus simple, en allant dans la logithque, recherchez le logiciel Arduino.
Sinonvouspouvezaussipasserparlalignedecommande:
1 $sudoaptgetinstallarduino

Plusieursdpendancesserontinstallesenmmetemps.
Jerajouteunlienquivousmneraverslapageofficielle.

Interfacedulogiciel
Lancementdulogiciel
Lanonslelogicielendoublecliquantsurlicneaveclesymboleinfinieenvert.Cest
lexcutabledulogiciel.Aprsunlgertempsderflexion,uneimagesaffiche:

Cettefois,aprsquelquessecondes,lelogicielsouvre.Unefentreseprsentenous
:

Cequisauteauxyeuxenpremier,cestlaclartdeprsentationdulogiciel.Onvoittout
desuitesoninterfaceintuitive.Voyonscommentsecomposecetteinterface.

Prsentationdulogiciel
Jaidcoup,grcemonamipaint.net,limageprcdenteenplusieursparties:

Correspondance
Lecadrenumro1:cesontlesoptionsdeconfigurationdulogiciel
Le cadre numro 2 : il contient les boutons qui vont nous servir lorsque lon va
programmernoscartes
Lecadrenumro3:ceblocvacontenirleprogrammequenousallonscrer
Lecadrenumro4:celuiciestimportant,carilvanousaidercorrigerlesfautes
dansnotreprogramme.Cestledbogueur.

Approcheetutilisationdulogiciel
Attaquonsnous plus srieusement lutilisation du logiciel. La barre des menus est
entoureenrougeetnumroteparlechiffre1.

LemenuFile

Cestprincipalementcemenuquelonvautiliserleplus.Ildisposeduncertainnombre
de choses qui vont nous tre trs utiles. Il a t traduit en francais progressivement,
nousallonsdoncvoirlesquelquesoptionsquisortentdelordinaire:

Carnetdecroquis:CEmenuregroupelesfichiersquevousavezpufairejusqu
maintenant(etsilssontenregistrdansledossierpardfautdulogiciel)
Exemples(exemples):ceciestimportant,touteunelistesedroulepourafficher
les noms dexemples de programmes existants avec , vous pourrez vous
aider/inspirer pour crer vos propres programmes ou tester de nouveaux
composants
Tlverser : Permet denvoyer le programme sur la carte Arduino. Nous y
reviendrons .
Tlverseravecunprogrammateur : Idem que si dessus, mais avec lutilisation
dunprogrammateur(vousnennaurezquetrsrarementbesoin).
Prfrences:Vouspourrezrglericiquelquesparamtresdulogiciel
Lerestedesmenusnestpasintressantpourlinstant,onyreviendraplustard,avant

decommencerprogrammer.

Lesboutons
Voyonsprsentquoiserventlesboutons,encadrsenrougeetnumrotsparle
chiffre2.

Bouton1:Ceboutonpermetdevrifierleprogramme,ilactionneunmodulequi
chercheleserreursdansvotreprogramme
Bouton2:Charge(tlverse)leprogrammedanslacarteArduino
Bouton3:Creunnouveaufichier
Bouton4:Ouvreunfichier
Bouton5:Enregistrelefichier
Bouton6:Ouvrelemoniteursrie(onverraplustardcequecest )
Enfin, on va pouvoir soccuper du matriel que vous devriez tous possder en ce
momentmme:lacarteArduino!

[Arduino104]Lematriel

Prsentationdelacarte
PourcommencernotredcouvertedelacarteArduino,jevaisvousprsenterlacarte
en ellemme. Nous allons voir comment sen servir et avec quoi. Jai reprsent en
rougesurcettephotolespointsimportantsdelacarte.

PrsentationdelacarteArduino

Constitutiondelacarte
Voyonsquelssontcespointsimportantsetquoiilsservent.

Lemicrocontrleur
Voillecerveaudenotrecarte(en1).Cestluiquivarecevoirleprogrammequevous
aurezcretquivalestockerdanssammoirepuislexcuter.Grceceprogramme,
il va savoir faire des choses, qui peuvent tre : faire clignoter une LED, afficher des
caractressuruncran,envoyerdesdonnesunordinateur,

Alimentation
Pourfonctionner,lacarteabesoindunealimentation.Lemicrocontrleurfonctionnant
sous 5V, la carte peut tre alimente en 5V par le port USB (en 2) ou bien par une
alimentation externe (en 3) qui est comprise entre 7V et 12V. Cette tension doit tre
continue et peut par exemple tre fournie par une pile 9V. 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 lintervalle de 7V 15V
(mme si le rgulateur peut supporter plus, pas la peine de le retrancher dans ses
limites)

Visualisation
Lestroispointsblancsentoursenrouge(4)sontenfaitdesLEDdontlatailleestde

lordredumillimtre.CesLEDserventdeuxchoses:
Celletoutenhautducadre:elleestconnecteunebrochedumicrocontrleur
etvaservirpourtesterlematriel.Nota:QuandonbranchelacarteauPC,elle
clignotequelquessecondes.
Les deux LED du bas du cadre : servent visualiser lactivit sur la voie srie
(une pour lmission et lautre pour la rception). Le tlchargement du
programme dans le microcontrleur se faisant par cette voie, on peut les voir
clignoterlorsduchargement.

Laconnectique
La carte Arduino ne possdant pas de composants qui peuvent tre utiliss pour un
programme, mis a par la LED connecte la broche 13 du microcontrleur, il est
ncessairedelesrajouter.Maispourcefaire,ilfautlesconnecterlacarte.Cestl
quintervientlaconnectiquedelacarte(en5aet5b).Parexemple,onveutconnecter
une LED sur une sortie du microcontrleur. Il suffit juste le la connecter, avec une
rsistance en srie, la carte, sur les fiches de connections de la carte. Cette
connectique est importante et a un brochage quil faudra respecter. Nous le verrons
quand nous apprendrons faire notre premier programme. Cest avec cette
connectique que la carte est extensible, car lon peut y brancher tous types de
montagesetmodules!Parexemple,lacarteArduinoUnopeuttretendueavecdes
shields, comme le Shield Ethernet qui permet de connecter cette dernire
internet.

UnecarteArduinotendueavecunEthernetShield

Installation
Afindutiliserlacarte,ilfautlinstaller.Normalement,lesdriverssontdjinstallssous
GNU/Linux. Sous mac, il suffit de double cliquer sur le fichier .mkpg inclus dans le
tlchargementdelapplicationArduinoetlinstallationdesdriverssexcutedefaon
automatique.

SousWindows
LorsquevousconnectezlacartevotreordinateursurleportUSB,unpetitmessageen
basdelcranapparat.Thoriquement,lacartequevousutilisezdoitsinstallertoute
seule.Cependant,sivoustessousWin7commemoi,ilsepeutquecanemarchepas
du premier coup. Dans ce cas, laisser la carte branche puis ensuite allez dans le
panneaudeconfiguration.Unefoisl,cliquezsursystmepuisdanslepanneaude
gauche slectionnez gestionnaire de priphriques. Une fois ce menu ouvert, vous

devriezvoiruncomposantavecunpanneauattentionjaune.Faitesunclicdroitsurle
composant et cliquez sur Mettre jour les pilotes. Dans le nouveau menu,
slectionnezloptionRechercherlepilotemoimme.Enfin,ilnevousresteplusqu
aller slectionner le bon dossier contenant le driver. Il se trouve dans le dossier
dArduino que vous avez du dcompresser un peu plus tt et se nomme drivers
(attention, ne descendez pas jusquau dossier FTDI). Par exemple, pour moi le
cheminsera:
[lecheminjusqu'audossier]\arduino0022\arduino0022\drivers
Il semblerait quil y est des problmes en utilisant la version francaise dArduino
(lesdriverssontabsentsdudossier).Sicestlecas,ilvousfaudratlchargerla
versionoriginale(anglaise)pourpouvoirinstallerlesdrivers.
AprslinstallationetunesuitedeclignotementsurlesmicroLEDdelacarte,celleci
devraittrefonctionnelleunepetiteLEDvertetmoignedelabonnealimentationdela
carte:

Carteconnecteetalimente

Testersonmatriel
Avantdecommencerprogrammerlattebaisse,ilfaut,avanttouteschoses,testerle
bonfonctionnementdelacarte.Carceseraitidiotdeprogrammerlacarteetchercher
leserreursdansleprogrammealorsqueleproblmevientdelacarte! Nousallons
testernotrematrielenchargeantunprogrammequifonctionnedanslacarte.
Mais,onnenapasencorefaitdeprogrammes?o_O
Toutjuste!MaislelogicielArduinocontientdesexemplesdeprogrammes.Etbience
sontcesexemplesquenousallonsutiliserpourtesterlacarte.

1retape:ouvrirunprogramme
NousallonschoisirunexempletoutsimplequiconsistefaireclignoteruneLED.Son
nomestBlinketvousletrouverezdanslacatgorieBasics:

Une fois que vous avez cliqu sur Blink, une nouvelle fentre va apparatre. Elle va
contenir le programme Blink. Vous pouvez fermer lancienne fentre qui va ne nous
servirplusrien.

2etape
AvantdenvoyerleprogrammeBlinkverslacarte,ilfautdireaulogicielquelestlenom
delacarteetsurquelportelleestbranche.Choisirlacartequelonvaprogrammer.
Cenestpastrscompliqu,lenomdevotrecarteestindiqusurelle.Pournous,il
sagit de la carte Uno. Allez dans le menu Tools (outils en franais) puis dans
Board(carteenfranais).VrifiezquecestbienlenomArduinUnoquiestcoch.
Sicenestpaslecas,cochezle.

Choisissezleportdeconnexiondelacarte.AllezdanslemenuTools,puisSerial
port.L,vouschoisissezleportCOMX,Xtantlenumroduportquiestaffich.Ne
choisissezpasCOM1carilnestquasimentjamaisconnectlacarte.Dansmoncas,
ilsagitdeCOM5:

Pourtrouverleportdeconnexiondelacarte,vouspouvezallerdanslegestionnaire
depriphriquequisetrouvedanslepanneaudeconfiguration.Regardezlaligne
Ports(COMetLPT)etl,vousdevriezavoirArduinoUno(COMX).Aller,uneimage
pourleplaisir:

Derniretape
Trsbien.Maintenant,ilvafalloirenvoyerleprogrammedanslacarte.Pourcefaire,il
suffitdecliquersurleboutonTlverser,enjauneorangsurlaphoto:

Vous verrez tout dabord le message Compilation du croquis en cours pour vous
informerqueleprogrammeestentraindtrecompilenlangagemachineavantdtre
envoy.Ensuitevousaurezceci:

En bas dans limage, vous voyez le texte : Tlversement, cela signifie que le
logicielestentraindenvoyerleprogrammedanslacarte.Unefoisquilafini,ilaffiche
unautremessage:

Le message afficher : Tlversementtermin signale que le programme bien t


chargdanslacarte.Sivotrematrielfonctionne,vousdevriezavoiruneLEDsurla
cartequiclignote:
Sivousnobtenezpascemessagemaispluttuntrucenrouge,pasdinquitude,
lematrielnestpasforcmentdfectueux!
Eneffet,plusieurserreurssontpossibles:
lIDErecompileavantdenvoyerlecode,vrifierlaprsencederreur
Lavoiesrieestpeuttremalchoisi,vrifierlesbranchementsetlechoixdela
voiesrie
lIDE est cod en JAVA, il peuttre capricieux et bugger de temps en temps
(surtoutaveclavoiesrie):ressayezlenvoi!

LEDsurlacartequiclignote

Fonctionnementglobal
Nousavonsvuprcdemmentcequtaitunecartelectroniqueprogrammable.Nous
avons galement vu de quels lments se basait une carte lectronique pour
fonctionner(schmalectronique,schmadecblage).Jeviensdevousprsenterla
carte, de quoi elle est principalement constitue. Enfin, je vous ai montr comment
lutiliser de manire faire clignoter une petite lumire. Dornavant, nous allons voir
comment elle fonctionne de faon globale et rpondre quelques questions qui
pourraient vous trotter dans la tte : Comment la carte sait quil y a une LED de
connecte?,Etcommentsaitellequecestsurtellebroche?,Etleprogramme,o
estcequilsetrouveetsousquelleforme?,Commentlacartefaitpourcomprendrece
quelledoitfaire?,Denombreusesquestions,effectivement!

Partonsduprogramme
Lecontenu
Le contenu du programme, donc le programme en luimme, est ce qui va dfinir
chaque action que va excuter la carte Arduino. Mais ce nest pas tout ! Dans le
programmeilyaplusieurszones,quenousverronsplusendtailtoutaulongdela
lecturedececours,quiontchacuneunrleparticulier.
Lapremirezonesertprincipalement(jenevaispasmtendre)direlacarte
degarderenmmoirequelquesinformationsquipeuventtre:lemplacement
dun lment connect la carte, par exemple une LED en broche 13, ou bien
une valeur quelconque qui sera utile dans le programme :

La zone secondaire est lendroit o lon va initialiser certains paramtres du

programme. Par exemple, on pourra dire la carte quelle devra communiquer


aveclordinateurousimplementluidirecequelledevrafairedeleLEDquiest
connectesursabroche13.Onpeutencorefairedautreschoses,maisnousle
verrons
plus
tard.

Ladernirezoneestlazoneprincipaleosedrouleraleprogramme.Toutce
quivatrecritdanscettezoneseraexcutparlacarte,sesontlesactionsque
lacartefera.Parexemple,cesticiquonpourraluidiredefaireclignoterlaLED
sursabroche13.Onpourragalementluidemanderdefaireuneoprationtelle
que
2+2
ou
bien
dautres
choses
encore
!

En conclusion, tout (vraiment tout !) ce que va faire la carte est inscrit dans le
programme.Sansprogramme,lacartenesertrien!Cestgrceauprogrammequela
carte Arduino va savoir quune LED est connecte sur sa broche 13 et ce quelle va
devoirfaireavec,allumeretteindrelaLEDalternativementpourlafaireclignoter.

Etlenvoi
Le programme est envoy dans la carte lorsque vous cliquez sur le bouton
. Le
logicielArduinovaalorsvrifiersileprogrammenecontientpasderreuretensuitele
compiler(letraduire)pourlenvoyerdanslacarte:

Audpart,leprogrammeestsousformedetexte,puisilesttransformenunlangage
composuniquementde0etde1(cequiestabsolumentillisibleensoi! ).

Lenvoiduprogrammeestgrparvotreordinateur:leprogrammepasse,sousforme
de0etde1,danslecbleUSBquirelievotreordinateurvotrecarteetarrivedansla
carte.Lerestesepassedanslacarteellemme

Rceptionduprogramme
LeprogrammerentredoncdanslacarteenpassantenpremierparleconnecteurUSB
de celleci. Il va alors subir une petite transformation qui permet dadapter le signal
lectrique correspondant au programme (oui car le programme transite dans le cble
USB sous forme de signal lectrique) vers un signal plus appropri pour le
microcontrleur.OnpasseainsidunsignalcodpourlanormeUSBunsignalcod
pour une simple voie srie (que lon tudiera plus tard dailleurs). Puis ce nouveau
signalestalorsinterceptparlemicrocontrleur.

Toutlerestesepassealors

Alintrieurdumicrocontrleur
Lemplacementduprogramme
Le microcontrleur reoit le programme sous forme de signal
lectriquesursesbrochesTxetRx,dailleursdisponiblesurles
broches de la carte (cf. image). Une fois quil est reu, il est
intgralementstockdansunemmoiredetypeFlashquelon
appelleralammoiredeprogramme.Ensuite,lorsquelacarte
dmarre normalement (quaucun programme nest en train
dtre charg), le cerveau va alors grer les donnes et les
rpartirdanslesdiffrentesmmoires:
Lammoireprogrammeestcellequivaservirsavoiro
lonenestdansleprogramme,quelleinstructiononest
rendu. Cest dire, en quelque sorte, pointer sur des
morceaux des zones 2 et 3 que lon a vu dans le prcdent exemple de
programme.
Lammoirededonnes,aussiappelRAM(commedansvotreordinateur)va

stockerlesvariablestellesquelenumrodelabrochesurlaquelleestconnecte
uneLED,oubienunesimplevaleurcommeunchiffre,unnombre,descaractres,
etc.
Voici un petit synoptique qui vous montre un peu lintrieur du microcontrleur (cest
trs
simplifi
!)
:

Dmarragedumicrocontrleur
Lorsque le microcontrleur dmarre, il va commencer par lanc un bout de code
particulier:lebootloader.Cestcedernierquivasurveillersiunnouveauprogramme
arrivesurlavoieUSBetsilfautdoncchangerlancienenmmoireparlenouveau.Si
riennarrive,ildonnelamainvotreprogramme,celuiquevousavezcr.Cedernier
va alors dfiler, instruction par instruction. Chaque fois quune nouvelle variable sera
ncessaire, elle sera mise en RAM pour quon ai une mmoire de cette dernire (et
supprimerlorsquellenestplusncessaire).Sinon,lesinstructionsvontsesuivreune
parune,danslordrequevouslesavezcrites.

[Arduino105]LelangageArduino(1/2)
AprsentquevousavezunevisionglobalesurlefonctionnementdelacarteArduino,
nousallonspouvoirapprendreprogrammeravantdenouslancerdanslaralisation
deprogrammestrssimplepourdbuter!Pourpouvoirprogrammernotrecarte,ilnous
fauttroischoses:
Unordinateur
UnecarteArduino
EtconnaitrelelangageArduino

Cestcedernierpointquilnousfautacqurir.Lebutmmedecechapitreestdevous
apprendreprogrammeraveclelangageArduino.Cependant,cenestquunsupport
de cours que vous pourrez parcourir lorsque vous devrez programmer tout seul votre
carte. En effet, cest en manipulant que lon apprend, ce qui implique que votre
apprentissage en programmation sera plus consquent dans les prochains chapitres
quedanscecoursmme.
Le langage Arduino est trs proche du C et du C++. Pour ceux dont la
connaissancedeceslangagesestfonde,nevoussentezpasobligdelireles
deux chapitre sur le langage Arduino. Bien quil y ait des points quelques peu
important.

Lasyntaxedulangage
Lasyntaxedunlangagedeprogrammationestlensembledesrglesdcritureslies
celangage.Onvadoncvoirdanscesouschapitrelesrglesquirgissentlcriture
dulangageArduino.

Lecodeminimal
AvecArduino,nousdevonsutiliseruncodeminimallorsqueloncreunprogramme.
Ce code permet de diviser le programme que nous allons crer en deux grosses
parties.
1
2
3
4
5
6
7
8
9
10
11

//fonctiond'initialisationdelacarte
voidsetup()
{
//contenudel'initialisation
}

//fonctionprincipale,elleserpte(sexcute)l'infini
voidloop()
{
//contenudevotreprogramme
}

Vousavezdoncdevantvouslecodeminimalquilfautinsrerdansvotreprogramme.
Maisquepeutilbiensignifierpourquelquunquinajamaisprogramm?

Lafonction
Dans ce code se trouvent deux fonctions. Les fonctions sont en fait des portions de
code.
1
2
3
4
5
6

//fonctiond'initialisationdelacarte
voidsetup()
{
//contenudel'initialisation
//oncritlecodel'intrieur
}

Cette fonction setup() est appele une seule fois lorsque le programme commence.
Cestpourquoicestdanscettefonctionquelonvacrirelecodequinabesoindtre
excut une seule fois. On appelle cette fonction : fonction dinitialisation. On y
retrouveralamiseenplacedesdiffrentessortiesetquelquesautresrglages.Cestun
peu le checkup de dmarrage. Imaginez un pilote davion dans sa cabine qui fait
linventaire :patte2ensortie,tathaut?OKtimer315millisecondes?OK
Unefoisquelonainitialisleprogrammeilfautensuitecrersoncur,autrement
ditleprogrammeenluimme.
1
2
3
4
5

//fonctionprincipale,elleserpte(sexcute)l'infini
voidloop()
{
//contenudevotreprogramme
}

Cestdoncdanscettefonctionloop()olonvacrirelecontenuduprogramme.Ilfaut
savoirquecettefonctionestappeleenpermanence,cestdirequelleestexcute
unefois,puislorsquesonexcutionesttermine,onlarexcuteetencoreetencore.
Onparledeboucleinfinie.
A titre informatif, on nest pas oblig dcrire quelque chose dans ces deux
fonctions. En revanche, il est obligatoire de les crire, mme si elles ne
contiennentaucuncode!

Lesinstructions
Danscesfonctions,oncritquoi?
Cestjustementlobjetdeceparagraphe.Dansvotrelistepourledinerdecesoir,vous
crivez les tches importantes qui vous attendent. Ce sont des instructions. Les
instructionssontdeslignesdecodequidisentauprogramme:faitceci,faitcela,
Cesttoutbtemaistrspuissantcarcestcequivaorchestrernotreprogramme.

Lespointsvirgules
Les points virgules terminent les instructions. Si par exemple je dis dans mon
programme : appelle la fonction couperDuSaucissonje dois mettre un point virgule
aprslappeldecettefonction.
Lespointsvirgules()sontsynonymesderreurscarilarrivetrssouventdeles
oublier la fin des instructions. Par consquent le code ne marche pas et la
recherche de lerreur peut nous prendre un temps consquent ! Donc faites bien
attention.

Lesaccolades
Les accolades sont les conteneurs du code du programme. Elles sont propres aux
fonctions,auxconditionsetauxboucles.Lesinstructionsduprogrammesontcrites
lintrieurdecesaccolades.Parfoisellesnesontpasobligatoiresdanslesconditions
(nous allons voir plus bas ce que cest), mais je recommande de les mettre tout le
temps!Celarendrapluslisiblevotreprogramme.

Lescommentaires
Pourfinir,onvavoircequestuncommentaire.Jenaidjmisdanslesexemplesde
codes. Ce sont des lignes de codes qui seront ignores par le programme. Elles ne
serventenrienlorsdelexcutionduprogramme.
Maisalorscestinutile?o_O
Noncarcelavanouspermettrenousetauxprogrammeursquilironsvotrecode(sily
en a) de savoir ce que signifie la ligne de code que vous avez crite. Cest trs
importantdemettredescommentairesetcelapermetaussidereprendreunprogramme
laissdansloubliplusfacilement!Siparexemplevousconnaissezmaluneinstruction
que vous avez crite dans votre programme, vous mettez une ligne de commentaire
pour vous rappeler la prochaine fois que vous lirez votre programme ce que la ligne
signifie.Ligneuniquedecommentaire:
1 //cetteligneestuncommentairesurUNESEULEligne

Ligneouparagraphesurplusieurslignes:
1 /*cetteligneestuncommentaire,surPLUSIEURSlignes
2 quiseraignorparleprogramme,maispasparceluiquilitlecode*/

Lesaccents
Ilestformellementinterditdemettredesaccentsenprogrammation.Saufdansles
commentaires.

Lesvariables
Nouslavonsvu,dansunmicrocontrleur,ilyaplusieurstypesdemmoire.Nousnous
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 une broche de votre carte Arduino. Comment allezvous stocker
ltatdubouton(appuyouteint)?

Unevariable,questcequecest?
Unevariableestunnombre.Cenombreeststockdansunespacedelammoire
vive(RAM)dumicrocontrleur.Lamanirequipermetdelesstockerestsemblable
celleutilisepourrangerdeschaussures:dansuncasiernumrot.
Chaussuresrangesdansdes
casesnumrotes
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40

41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
Unevariableestunnombre,cesttout?o_O
Cenombrealaparticularitdechangerdevaleur.Etrangenestcepas?Etbienpas
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
explicationparunschma,celadonnerait:
nombre=>variable=>mmoire
lesymbole=>signifiant:estcontenudans

Lenomdunevariable
Lenomdevariableacceptequasimenttouslescaractressauf:
.(lepoint)
,(lavirgule)
,,,(lesaccents)
Bonjevaispastouslesdonner,ilnacceptequelalphabetalphanumrique([az],[A
Z],[09])et_(underscore)

Dfinirunevariable
Siondonneunnombrenotreprogramme,ilnesaitpassicestunevariableoupas.Il
faut le lui indiquer. Pour cela, on donne un type aux variables. Oui, car il existe
plusieurstypesdevariables!Parexemplelavariablexvaut4:
1 x=4

Etbiencecodenefonctionneraitpascarilnesuffitpas!Eneffet,ilexisteunemultitude
denombres:lesnombresentiers,lesnombresdcimaux,Cestpourcelaquilfaut
assignerunevariableuntype.Voillestypesdevariableslesplusrpandus:
Type
int
long
char
float

Quelnombreil
Valeursmaximalesdu
stocke?
nombrestock
entier
32768+32767
2147483648+2147483
entier
647
entier
128+127
dcimale
3.4x10 38 +3.4x10 38

double dcimale

3.4x10 38 +3.4x10 38

Nombresur
Nombre
Xbits
doctets
16bits
2octets
32bits

4octets

8bits
32bits

1octets
4octets

32bits

4octets

Par exemple, si notre variable x ne prend que des valeurs entires, on utilisera les
typesint,long,ouchar.Simaintenantlavariablexnedpassepaslavaleur64ou
87,alorsonutiliseraletypechar.

1 charx=0

Sienrevanchex=260,alorsonutiliseraletypesuprieur(quiaccepteuneplus
grandequantitdenombre)char,autrementditintoulong.
Maistespasmalin,pourviterlesdpassementsdevaleurontmettoutdansdes
doubleoulong!
Oui,maisNON.Unmicrocontrleur,cenestpasunordinateur2GHzmulticore,4Gode
RAM!IcionparledunsystmequifonctionneavecunCPU16MHz(soit0,016GHz)
et2KodeSRAMpourlammoirevive.Doncdeuxraisonsfontquilfautchoisirses
variablesdemanirejudicieuse:
LaRAMnestpasextensible,quandilyenaplus,yenaplus!
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
variable32bitsprendradonc(beaucoup)plusdetemps!
Siprsentnotrevariablexneprendjamaisunevaleurngative(20,78,),alors
onutiliserauntypenonsign.Cestdire,dansnotrecas,unchardontlavaleurnest
plusde128+127,maisde0255.Voiciletableaudestypesnonsigns,onrepre
cestypesparlemotunsigned(delanglais:nonsign)quilesprcde:
Type

Quelnombreil
stocke?

Valeursmaximalesdu
nombrestock

unsigned
entiernonngatif 0255
char
unsigned
entiernonngatif 065535
int
unsigned
entiernonngatif 04294967295
long

Nombresur
Xbits

Nombre
doctets

8bits

1octets

16bits

2octets

32bits

4octets

UnedesparticularitsdulangageArduinoestquilaccepteunnombreplusimportant
detypesdevariables.Jevousleslistedanscetableau:
Quelnombreil
Valeursmaximalesdu
stocke?
nombrestock
byte
entiernonngatif 0255
word
entiernonngatif 065535
boolean entiernonngatif 01
Type

Nombresur
Nombre
Xbits
doctets
8bits
1octets
16bits
2octets
1bits
1octets

Pourvotreinformation,vouspouvezretrouvercestableauxsurcettepage.

Lesvariablesboolennes
Lesvariablesboolennessontdesvariablesquinepeuventprendrequedeuxvaleurs
:ouVRAIouFAUX.Ellessontutilisesnotammentdanslesbouclesetlesconditions.
Nousverronspourquoi.Unevariableboolennepeuttredfiniedeplusieursmanires

:
1
2
3
4

//variableestfaussecarellevautFALSE,dutermeanglais"faux"
booleanvariable=FALSE
//variableestvraiecarellevautTRUE,dutermeanglais"vrai"
booleanvariable=TRUE

Quand une variable vaut 0, on peut considrer cette variable comme une variable
boolenne,elleestdoncfausse.Enrevanche,lorsquellevaut1ounimportequelle
valeursdiffrentedezro,onpeutaussilaconsidrercommeunevariableboolenne,
elleestdoncvraie.Voilunexemple:
1
2
3
4
5
6

//variableestfaussecarellevaut0
intvariable=0
//variableestvraiecarellevaut1
intvariable=1
//variableestvraiecarsavaleurestdiffrentede0
intvariable=42

Le langage Arduino accepte aussi une troisime forme dcriture (qui lui sert pour
utiliserlesbrochesdesortiesdumicrocontrleur):
1
2
3
4

//variableestl'tatlogiquebas(=traductionde"low"),donc0
intvariable=LOW
//variableestl'tatlogiquehaut(=traductionde"high"),donc1
intvariable=HIGH

Nousnousservironsdecettetroisimecriturepourallumeretteindredeslumires

Lesoprationssimples
On va voir prsent les oprations qui sont possibles avec le langage Arduino
(addition,multiplication,).Jevousvoistoutdesuitedire:Maispourquoionfaita,
onlafaitenprimaire! Etbienparcequecestquelquechosedessentiel,caron
pourra ensuite faire des oprations avec des variables. Vous verrez, vous changerez
davisaprsavoirlulasuite!

Laddition
Vous savez ce que cest, pas besoin dexplications. Voyons comment on fait cette
oprationaveclelangageArduino.Prenonslammevariablequetoutlheure:
1
2
3
4
5
6

//dfinitiondelavariablex
intx=0

//onchangelavaleurdexparuneoprationsimple
x=12+3
//xvautmaintenant12+3=15

Faisonsmaintenantuneadditiondevariables:
1
2
3
4

//dfinitiondelavariablexetassignationlavaleur38
intx=38
inty=10
intz=0

5 //faisonsuneaddition
6 //onadoncz=38+10=48
7 z=x+y

Lasoustraction
Onpeutreprendrelesexemplesprcdents,enfaisantunesoustraction:
1
2
3
4
5
6

/dfinitiondelavariablex
intx=0

//onchangelavaleurdexparuneoprationsimple
x=123
//xvautmaintenant123=9

Soustractiondevariables:
1
2
3
4
5

intx=38//dfinitiondelavariablexetassignationlavaleur38
inty=10
intz=0

z=xy//onadoncz=3810=28

Lamultiplication
1
2
3
4
5
6
7
8
9
10
11

intx=0
inty=10
intz=0

x=12*3//xvautmaintenant12*3=36

z=x*y//onadoncz=36*10=360

//onpeutaussimultiplier(outouteautreopration)unnombreetunevariable:

z=z*(1/10)//soitz=360*0.1=36

Ladivision
1
2
3
4
5
6
7

floatx=0
floaty=15
floatz=0

x=12/2//xvautmaintenant12/2=6

z=y/x//onadoncz=15/6=2.5

Attention cependant, si vous essayer de stocker le rsultat dune division dans une
variable de type char, int ou long, le rsultat sera stock sous la forme dun entier
arrondiaunombreinfrieur.Parexempledanslecodeprcdentsionmetzdansun
intonaura:
1
2
3
4
5

floatx=0
floaty=15
intz=0

x=12/2//xvautmaintenant12/2=6

6
7 z=y/x//onadoncz=15/6=2!

Lemodulo
Aprscettebrveexplicationsurlesoprationsdebase,passonsquelquechosede
plussrieux.Lemoduloestuneoprationdebase,certesmoinsconnuequelesautres.
Cetteoprationpermetdobtenirlerestedunedivision.
1 18%6//lerestedel'oprationest0,carilya3*6dans18donc1818=0
2 18%5//lerestedel'oprationest3,carilya3*5dans18donc1815=3

Lemoduloestutilisgrceausymbole%.Cesttoutcequilfautretenir.Autreexemple
:
1
2
3
4
5

intx=24
inty=6
intz=0

z=x%y//onadoncz=24%6=0(car6*4=24)

Lemodulonepeuttrefaitquesurdesnombresentiers

Quelquesoprationsbienpratiques
Voyonsunpeudautresoprationsquifacilitentparfoislcritureducode.

Lincrmentation
Derrirecenombarbaresecacheunesimpleoprationdaddition.
1 var=0
2 var++//c'estcettelignedecodequinousintresse

var++revientcrire:var=var+1Enfait,onajoutelechiffre1lavaleurdevar.
Etsionrptelecodeuncertainnombredefois,parexemple30,etbienonauravar=
30.

Ladcrmentation
Cestlinversedelincrmentation.Autrementdit,onenlvelechiffre1lavaleurde
var.
1 var=30
2 var//dcrmentationdevar

Lesoprationscomposes
Parfois il devient assez lassant de rcrire les mmes chose et lon sait que les
programmeurs sont des gros fainants ! Il existe des raccourcis lorsque lon veut
effectueruneoprationsurunemmevariable:
1 intx,y

2
3
4
5
6

x+=y//correspondx=x+y
x=y//correspondx=xy
x*=y//correspondx=x*y
x/=y//correspondx=x/y

Avecunexemple,celadonnerait:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

intvar=10

//opration1
var=var+6
var+=6//var=16

//opration2
var=var6
var=6//var=4

//opration3
var=var*6
var*=6//var=60

//opration4
var=var/5
var/=5//var=2

Loprationdebascule(ouinversiondtat)
Unjour,pourleprojetduBAC,jedevais(oupluttjevoulais)amlioreruncodequi
servaitprogrammerunmoduledunecentraledegestiondomestique.Monbuttait
dafficherunchoixlutilisateursuruncran.Pourcefaire,ilfallaitquejeraliseune
basculeprogramme(cestcommeaquejelanommemaintenant).Etaprsmaintes
recherchesettests,jairussitrouver!Etilsavrequecetteopration,silonpeut
lappeler ainsi, est trs utile dans certains cas. Nous lutiliserons notamment lorsque
lonvoudrafaireclignoterunelumire.Sansplusattendre,voilcetteastuce:
1
2
3
4

//ondfinitunevariablexquinepeutprendrequelavaleur0ou1(vraieoufausse)
booleanx=0

x=1x//c'estlatoutel'astuceduprogramme!

Analysonscetteinstruction.Achaqueexcutionduprogramme(oui,jaiomisdevous
ledire,ilserptejusqulinfini),lavariablexvachangerdevaleur:
1ertemps:x=1xsoitx=10doncx=1
2etemps:x=1xorxvautmaintenant1doncx=11soitx=0
3etemps:xvaut0doncx=10soitx=1
Cecodeserptedoncetchaquerptition,lavariablexchangedevaleuretpasse
de01,de10,de01,etc.Ilagitbiencommeunebasculequichangelavaleur
dune variable boolenne. En mode console cela donnerait quelque chose du genre
(nessayezpascelanemarcherapas,cestunexemple):
1 x=0
2 x=1

3
4
5
6

x=0
x=1
x=0
...

Mais il existe dautres moyens darriver au mme rsultat. Par exemple, en utilisant
loprateur ! qui signifie not (non). Ainsi, avec le code suivant on aura le mme
fonctionnement:
1 x=!x

Puisquchaquepassagexdevientpasxdoncsixvaut1soncontrairesera0etsil
vaut0,ildeviendra1.

Lesconditions
Questcequunecondition
Cestunchoixquelonfaitentreplusieurspropositions.Eninformatique,lesconditions
servent tester des variables. Par exemple : Vous faites une recherche sur un site
spcialispouracheterunenouvellevoiture.Vousimposezleprixdelavoiturequidoit
treinfrieur5000(cestunpetitbudget ).Leprogrammequivagreravafaire
appeluntestconditionnel.Ilvaliminertouslesrsultatsdelarecherchedontle
prixestsuprieur5000.

Quelquessymboles
Pour tester des variables, il faut connatre quelques symboles. Je vous ai fait un joli
tableaupourquevousvousrepriezbien:
Symbole
==
<
>
<=
>=
!=

Aquoiilsert
Cesymbole,composdedeuxgales,permetdetester
lgalitentredeuxvariables
Celuicitestelinfrioritdunevariableparrapportune
autre
Lcestlasuprioritdunevariableparrapportune
autre
testelinfrioritoulgalitdunevariableparrapport
uneautre
testelasuprioritoulgalitdunevariableparrapport
uneautre
testeladiffrenceentredeuxvariables

Signification
estgale
estinfrieur
estsuprieur

estinfrieurou
gale
estsuprieurou
gal
estdiffrent
de

Etsionsoccupaitdesconditions?Oubiensinononvatranquillementallerboireun
boncaf?Commentdcortiquercettephrase?Mmm Ha!Jesais!Cettephraseimpliqueunchoix:le
premierchoixestdesoccuperdesconditions.Silinterlocuteurditoui,alorsilsoccupe
des conditions. Mais sil dit non, alors il va boire un bon caf. Il a donc lobligation
deffectueruneactionsurlesdeuxproposes.Eninformatique,onparledecondition.

silaconditionestvraie,onfaituneaction.Enrevanchesilaconditionestfausse,on
excuteuneautreaction.

Ifelse
La premire condition que nous verrons est la condition ifelse. Voyons un peu le
fonctionnement.

if
Onveuttesterlavaleurdunevariable.Prenonslemmeexemplequetoutlheure.Je
veuxtestersilavoitureestinfrieure5000.
1 intprix_voiture=4800//variable:prixdelavoituredfinit4800

Dabord on dfinit la variable prix_voiture. Sa valeur est de 4800. Ensuite, on doit


testercettevaleur.Pourtesterunecondition,onemploieletermeif(delanglaissi).
Cetermedoittresuivideparenthsesdanslesquellessetrouverontlesvariables
tester.Doncentrecesparenthses,nousdevonstesterlavariableprix_voitureafinde
savoirsielleestinfrieure5000.
1
2
3
4

if(prix_voiture<5000)
{
//laconditionestvraie,doncj'achtelavoiture
}

Onpeutlirecettelignedecodecommececi:silavariableprix_voitureestinfrieure
5000,onexcutelecodequisetrouveentrelesaccolades.
Les instructions qui sont entre les accolades ne seront excutes que si la
conditiontesteestvraie!
Leschmasuivrepourtesteruneconditionestdonclesuivant:
1
2
3
4

if(/*contenudelaconditiontester*/)
{
//instructionsexcutersilaconditionestvraie
}

else
On a pour linstant test que si la condition est vraie. Maintenant, nous allons voir
commentfairepourquedautresinstructionssoientexcutessilaconditionestfausse.
Le terme else de langlais sinon implique notre deuxime choix si la condition est
fausse.Par exemple, si le prix de la voiture est infrieur 5000, alors je lachte.
Sinon,jenelachtepas.Pourtraduirecettephraseenlignedecode,cestplussimple
quavecunif,ilnyapasdeparenthsesremplir:
1
2
3
4
5

intprix_voiture=5500

if(prix_voiture<5000)
{
//laconditionestvraie,doncj'achtelavoiture

6
7
8
9
10

}
else
{
//laconditionestfausse,doncjen'achtepaslavoiture
}

Leelseestgnralementutilispourlesconditionsditesdedfaut.Cestluiqui
le pouvoir sur toutes les conditions, cestdire que si aucune condition nest
vraie,onexcutelesinstructionsquilcontient.
Leelsenestpasobligatoire,onpeuttrsbienmettreplusieursiflasuite.
Leschmadeprinciperetenirestlesuivant:
1
2
3
4

else//sitouteslesconditionsprcdentessontfausses...
{
//...onexcutelesinstructionsentrecesaccolades
}

elseif
A ce que je vois, on a pas trop le choix : soit la condition est vraie, soit elle est
fausse.Ilnyapasdautrespossibilits?o_O
Biensurquelonpeuttesterdautresconditions!Pourcela,onemploieletermeelseif
qui signifie sinon si Par exemple, SI le prix de la voiture est infrieur 5000 je
lachteSINONSIelleestgale5500maisquellealoptionGPSenplus,alorsje
lachteSINONjenelachtepas.Lesinonsisemploiecommeleif:
1
2
3
4
5
6
7
8
9
10
11
12
13
14

intprix_voiture=5500

if(prix_voiture<5000)
{
//laconditionestvraie,doncj'achtelavoiture
}
elseif(prix_voiture==5500)
{
//laconditionestvraie,doncj'achtelavoiture
}
else
{
//laconditionestfausse,doncjen'achtepaslavoiture
}

Aretenirdonc,silapremireconditionestfausse,ontesteladeuxime,siladeuxime
estfausse,ontestelatroisime,etc.Schmadeprincipeduelse,idemauif:
1
2
3
4

elseif(/*testdelacondition*/)//sielleestvraie...
{
//...onexcutelesinstructionsentrecesaccolades
}

Leelseifnepeutpastreutilisetouteseule,ilfautobligatoirementquilyaitun
ifavant!

Lesoprateurslogiques
Et si je vous posais un autre problme ? Comment faire pour savoir si la voiture est
infrieure5000ETsielleestgrise?
Cestvraia,sijeveuxquelavoituresoitgriseenplusdtreinfrieure5000,
commentjefais?
Ilexistedesoprateursquivontnouspermettredetestercettecondition!Voyonsquels
sontsesoprateurspuistestonsles!
Oprateur Signification
&&
ET
||
OU
!
NON

ET
Reprenonscequenousavonstestdansleelseif:SIlavoiturevaut5500ETquelle
aloptionGPSenplus,ALORSjelachte.Onvautiliserunifetunoprateurlogique
quiseraleET:
1
2
3
4
5
6
7
8
9

intprix_voiture=5500
intoption_GPS=TRUE

/*l'oprateur&&lielesdeuxconditionsquidoiventtre
vraiesensemblepourquelaconditionsoitremplie*/
if(prix_voiture==5500&&option_GPS)
{
//j'achtelavoituresilaconditionprcdenteestvraie
}

OU
Onpeutreprendrelaconditionprcdenteetlapremireenlesassemblantpourrendre
lecodebeaucoupmoinslong.
Etoui,lesprogrammeurssontdesflemmards!
Rappelonsquellessontcesconditions:
1
2
3
4
5
6
7
8
9
10
11
12
13

intprix_voiture=5500
intoption_GPS=TRUE

if(prix_voiture<5000)
{
//laconditionestvraie,doncj'achtelavoiture
}
elseif(prix_voiture==5500&&option_GPS)
{
//laconditionestvraie,doncj'achtelavoiture
}
else
{

14 //laconditionestfausse,doncjen'achtepaslavoiture
15 }

Vousvoyezbienquelinstructiondansleifetleelseifestlamme.Avecunoprateur
logique,quiestleOU,onpeutrassemblercesconditions:
1
2
3
4
5
6
7
8
9
10
11

intprix_voiture=5500
intoption_GPS=TRUE

if((prix_voiture<5000)||(prix_voiture==5500&&option_GPS))
{
//laconditionestvraie,doncj'achtelavoiture
}
else
{
//laconditionestfausse,doncjen'achtepaslavoiture
}

Lisonslaconditiontestedansleif:SIleprixdelavoitureestinfrieur5000OUSI
le prix de la voiture est gal 5500 ET la voiture loption GPS en plus, ALORS
jachtelavoiture.
Attention aux parenthses qui sont bien placer dans les conditions, ici elles
ntaientpasncessaires,maisellesaidentmieuxlirelecode.

NON
Moijaimeraistestersilaconditionestfaussejachtelavoiture.Commentfaire?
ToitasunsouciIlexisteundernieroprateurlogiquequiseprnommeNON.Ilpermet
eneffetdetestersilaconditionestfausse:
1
2
3
4
5
6

intprix_voiture=5500

if(!(prix_voiture<5000))
{
//laconditionestvraie,doncj'achtelavoiture
}

Selit:SIleprixdelavoitureNESTPASinfrieur5000,alorsjachtelavoiture.
On sen sert avec le caractre ! (point dexclamation), gnralement pour tester des
variablesboolennes.Onverradanslesbouclesqueapeutgrandementsimplifierle
code.

Switch
Il existe un dernier test conditionnel que nous navons pas encore abord, cest le
switch.Voilunexemple:
1
2
3
4
5
6

intoptions_voiture=0

if(options_voiture==0)
{
//iln'yapasd'optionsdanslavoiture
}

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

if(options_voiture==1)
{
//lavoitureal'optionGPS
}
if(options_voiture==2)
{
//lavoitureal'optionclimatisation
}
if(options_voiture==3)
{
//lavoitureal'optionvitreautomatique
}
if(options_voiture==4)
{
//lavoitureal'optionbarresdetoit
}
if(options_voiture==5)
{
//lavoitureal'optionsigejectable
}
else
{
//retentetachance)
}

Cecodeestindigrable!Cestinfme!Grotesque!Pasbeau!Enclair,ilfauttrouver
unesolutionpourchangercela.Cettesolutionexiste,cestleswitch.Leswitch,comme
son nom lindique, va tester la variable jusqu la fin des valeurs quon lui aura
donnes.Voicicommentcelaseprsente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

intoptions_voiture=0

switch(options_voiture)
{
case0:
//iln'yapasd'optionsdanslavoiture
break
case1:
//lavoitureal'optionGPS
break
case2:
//lavoitureal'optionclimatisation
break
case3:
//lavoitureal'optionvitreautomatique
break
case4:
//lavoitureal'optionbarresdetoit
break
case5:
//lavoitureal'optionsigejectable
break
default:
//retentetachance)
break
}

Siontestaitcecode,enralitcelanefonctionneraitpascarilnyapasdinstruction
pourafficherlcran,maisnousaurionsquelquechosedugenre:

1 iln'yapasd'optionsdanslavoiture

Sioption_voiturevautmaintenant5:
1 lavoitureal'optionsigejectable

Linstructionbreakesthyperimportante,carsivousnelamettezpas,lordinateur,
oupluttlacarteArduino,vaexcutertouteslesinstructions.Pourvitercela,on
metcetteinstructionbreak,quivientdelanglaiscasser/arrterpourdirelacarte
Arduino quil faut arrter de tester les conditions car on a trouv la valeur
correspondante.

Laconditionternaireoucondense
Cetteconditionestenfaitunesimplificationduntestifelse.Ilnyapasgrandchose
diredessus,parconsquentunexemplesuffira:Cecode:
1
2
3
4
5
6
7
8
9
10
11

intprix_voiture=5000
intachat_voiture=FALSE

if(prix_voiture==5000)//sic'estvrai
{
achat_voiture=TRUE//onachtelavoiture
}
else//sinon
{
achat_voiture=FALSE//onn'achtepaslavoiture
}

Estquivalentceluici:
1
2
3
4

intprix_voiture=5000
intachat_voiture=FALSE

achat_voiture=(prix_voiture==5000)?TRUE:FALSE

Cetteligne:
1 achat_voiture=(prix_voiture==5000)?TRUE:FALSE

Se lit comme ceci : Estce que le prix de la voiture est gal 5000 ? SI oui, alors
jachtelavoitureSINONjenachtepaslavoiture
Bon,vousntespasobligdutilisercetteconditionternaire,cestvraiment pour
lesgrosflemmardsjustepoursimplifierlecode,maispasforcmentlalecturedece
dernier.
NousnavonspasencorefiniaveclelangageArduino.Jevousinvitedoncpasser
lapartiesuivantepourpoursuivrelapprentissagedecelangage.

[Arduino106]LelangageArduino(2/2)
Jaiunequestion.Sijeveuxfairequelecodequejaicritserpte,jesuisoblig

delerecopierautantdefoisquejeveux?Oubienilexisteunesolution?o_O
Voiluneexcellentequestionquiintroduitlechapitrequevousallezcommencerlire
car cest justement lobjet de ce chapitre. Nous allons voir comment faire pour quun
boutdecodeserpte.Puisnousverrons,ensuite,commentorganisernotrecodepour
que celuici devienne plus lisible et facile dbugger. Enfin, nous apprendrons
utiliserlestableauxquinousseronttrsutiles.Voilleprogrammequivousattend!

Lesboucles
Questcequuneboucle?
En programmation, une boucle est une instruction qui permet de rpter un bout de
code. Cela va nous permettre de faire se rpter un bout de programme ou un
programmeentier.Ilexistedeuxtypesprincipauxdeboucles:
Laboucleconditionnelle,quitesteuneconditionetquiexcutelesinstructions
quellecontienttantquelaconditiontesteestvraie.
Labouclederptition,quiexcutelesinstructionsquellecontient,unnombre
defoisprdtermin.

Labouclewhile
Problme:Je veux que le volet lectrique de ma fentre se ferme automatiquement
quandlanuittombe.Nous ne nous occuperons pas de faire le systme qui ferme le
voletlarrivedelanuit.LacarteArduinodisposeduncapteurquiindiquelaposition
duvolet(ouvertouferm).Cequenouscherchonsfaire:cestcrerunboutdecode
quifaitdescendrelevolettantquilnestpasferm.Pourrsoudreleproblmepos,
ilvafalloirquelonutiliseuneboucle.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

/*ICI,unboutdeprogrammepermetdefaireleschosessuivantes:
_uncapteurdtectelatombedelanuitetlalevedujour
oSic'estlanuit,alorsondoitfermerlevolet
oSinon,sic'estlejour,ondoitouvrirlevolet

_leprogrammelitl'tatducapteurquiindiquesilevoletestouvertouferm

_enregistrementdecettatdanslavariabledetypeString:position_volet
oSilevoletestouvert,alors:position_volet="ouvert"
oSinon,silevoletestferm:position_volet="ferme"
*/

while(position_volet=="ouvert")
{
//instructionsquifontdescendrelevolet
}

Commentlirececode?
Enanglais,lemotwhilesignifietantque.Doncsionlitlaligne:

1 while(position_volet=="ouvert"){/*instructions*/}

Il faut la lire : TANT QUE la position du volet est ouvert, on boucle/rpte les
instructionsdelaboucle(entrelesaccolades).

Constructiondunebouclewhile
Voildonclasyntaxedecettebouclequilfautretenir:
1
2
3
4

while(/*conditiontester*/)
{
//lesinstructionsentrecesaccoladessontrptestantquelaconditionestvraie
}

Unexemple
Prenonsunexemplesimple,ralisonsuncompteur!
1
2
3
4
5
6
7
8

//variablecompteurquivastockerlenombredefoisquelaboucle
intcompteur=0
//auratexcute

while(compteur!=5)//tantquecompteurestdiffrentde5,onboucle
{
compteur++//onincrmentelavariablecompteurchaquetourdeboucle
}

Siontestececode(danslaralitriennesaffiche,cestjusteunexemplepourvous
montrer),celadonne:
1
2
3
4
5
6

compteur=0
compteur=1
compteur=2
compteur=3
compteur=4
compteur=5

Donc au dpart, la variable compteur vaut 0, on excute la boucle et on incrmente


compteur.Maiscompteur ne vaut pour linstant que 1, donc on rexcute la boucle.
Maintenantcompteurvaut2.Onrptelaboucle,jusqu5.Sicompteurvaut5,la
boucle nest pas rexcute et on continu le programme. Dans notre cas, le
programmesetermine.

Laboucledowhile
Cette boucle est similaire la prcdente. Mais il y a une diffrence qui a son
importance!Eneffet,sionprteattentionlaplacelaconditiondanslabouclewhile,
onsaperoitquelleesttesteavantderentrerdanslaboucle.Tandisquedansune
boucle dowhile, la condition est teste seulement lorsque le programme est rentr
danslaboucle:
1
2
3
4

do
{
//lesinstructionsentrecesaccoladessontrptesTANTQUElaconditionestvrai
}while(/*conditiontester*/)

Le mot do vient de langlais et se traduis par faire. Donc la boucle dowhile


signifiefairelesinstructions,tantquelaconditiontesteestfausse.Tandisque
dansunebouclewhileonpourraitdire:tantquelaconditionestfausse,faiscequi
suit.
Questcequeachange?
Etbien,dansunewhile,silaconditionestvraiedsledpart,onentrerajamaisdans
cetteboucle.Alinverse,avecuneboucledowhile,onentredanslabouclepuison
testlacondition.Reprenonsnotrecompteur:
1
2
3
4
5
6
7

//variablecompteur=5
intcompteur=5

do
{
compteur++//onincrmentelavariablecompteurchaquetourdeboucle
}while(compteur<5)//tantquecompteurestinfrieur5,onboucle

Danscecode,ondfinitdsledpartlavaleurdecompteur5.Or,leprogrammeva
rentrerdanslabouclealorsquelaconditionestfausse.Donclaboucleestaumoins
excuteunefois!Etcequellequesoitlavracitdelacondition.Entestceladonne
:
1 compteur=6

Concatnation
Une boucle est une instruction qui a t rpartie sur plusieurs lignes. Mais on peut
lcriresuruneseuleligne:
1
2
3
4

//variablecompteur=5
intcompteur=5

do{compteur++}while(compteur<5)

Cestpourquoiilnefautpasoublierlepointvirgulelafin(aprslewhile).Alors
quedansunesimplebouclewhilelepointvirgulenedoitpastremis!

Labouclefor
Voil une boucle bien particulire. Ce quelle va nous permettre de faire est assez
simple.CetteboucleestexcuteXfois.Contrairementauxdeuxbouclesprcdentes,
ondoitluidonnertroisparamtres.
1
2
3
4

for(intcompteur=0compteur<5compteur++)
{
//codeexcuter
}

Fonctionnement

1 for(intcompteur=0compteur<5compteur++)

Dabord, on cre la boucle avec le terme for (signifie pour que). Ensuite, entre les
parenthses,ondoitdonnertroisparamtresquisont:
lacrationetlassignationdelavariableunevaleurdedpart
suivitdeladfinitiondelaconditiontester
suivitdelinstructionexcuter
Donc,sionlicetteligne:POURcompteur=0etcompteurinfrieur5,onincrmente
compteur. De faon plus concise, la boucle est excute autant de fois quil sera
ncessairecompteurpourarriver5.Doncici,lecodequisetrouvelintrieurdela
boucleseraexcut5fois.

Aretenir
Lastructuredelaboucle:
1 for(/*initialisationdelavariable*//*conditionlaquellelaboucles'arrte*/

Laboucleinfinie
Laboucleinfinieesttrssimpleraliser,dautantplusquelleestparfoistrsutile.Il
suffitsimplementdutiliserunewhileetdeluiassignercommeconditionunevaleurqui
nechangejamais.Enloccurrence,onmetsouventlechiffre1.
1
2
3
4

while(1)
{
//instructionsrpterjusqu'l'infinie
}

On peut lire : TANT QUE la condition est gale 1, on excute la boucle. Et cette
conditionseratoujoursrempliepuisque1nestpasunevariablemaisbienunchiffre.
galement,ilestpossibledemettretoutautrechiffreentier,oubienleboolenTRUE:
1
2
3
4

while(TRUE)
{
//instructionsrpterjusqu'l'infinie
}

Cela ne fonctionnera pas avec la valeur 0. En effet, 0 signifie condition fausse


donclabouclesarrteraaussitt
La fonction loop() se comporte comme une boucle infinie, puisquelle se rpte
aprsavoirfinidexcutersestches.

Lesfonctions
Dansunprogramme,leslignessontsouventtrsnombreuses.Ildevientalorsimpratif
desparerleprogrammeenpetitsboutsafindamliorerlalisibilitdeceluici,enplus

damliorerlefonctionnementetdefaciliterledbogage.Nousallonsvoirensemblece
questunefonction,puisnousapprendronslescreretlesappeler.

Questcequunefonction?
Unefonctionestunconteneurmaisdiffrentdesvariables.Eneffet,unevariablene
peutcontenirquunnombre,tandisquunefonctionpeutcontenirunprogrammeentier!
Parexemplececodeestunefonction:
1
2
3
4

voidsetup()
{
//instructions
}

Enfait,lorsquelonvaprogrammernotrecarteArduino,onvacrirenotreprogramme
dans des fonctions. Pour linstant nous nen connaissons que 2 : setup() et loop().
Danslexempleprcdent,laplaceducommentaire,onpeutmettredesinstructions
(conditions, boucles, variables, ). Cest ces instructions qui vont constituer le
programmeenluimme.Pourtreplusconcret,unefonctionestunboutdeprogramme
quipermetderaliserunetchebienprcise.Parexemple,pourmettreenformeun
texte,onpeutcolorierunmotenbleu,mettrelemotengrasouencoregrossircemot.
Achaquefois,onautilisunefonction:
gras,pourmettrelemotengras
colorier,pourmettrelemotenbleu
grossir,pouraugmenterlatailledumot
Enprogrammation,onvautiliserdesfonctions.Alorscesfonctionssontrpartiesdans
deuxgrandesfamilles.Cequejentendsparl,cestquilexistedesfonctionstoutes
prtesdanslelangageArduinoetdautresquelonvadevoircrernousmme.Cest
cedernierpointquivanousintresser.
Onnepeutpascrireunprogrammesansmettredefonctionslintrieur!Onest
obligdutiliserlafonctionsetup()etloop() (mme si on ne met rien dedans). Si
vouscrivezdesinstructionsendehorsdunefonction,lelogicielArduinorefusera
systmatiquementdecompilervotreprogramme.Ilnyaquelesvariablesglobales
quevouspourrezdclarerendehorsdesfonctions.
Jaipastropcomprisquoiasert?o_O
Lutilitdunefonctionrsidedanssacapacitsimplifierlecodeetlespareren
petits bouts que lon assemblera ensemble pour crer le programme final. Si vous
voulez,cestunpeucommelesjeuxdeconstructionenplastique:chaquepiceson
propremcanismeetraliseunefonction.Parexempleunerouepermetderoulerun
bloc permet de runir plusieurs autres blocs entre eux un moteur va faire avancer
lobjet cr Et bien tous ces lments seront assembls entre eux pour former un
objet (voiture, maison, ). Tout comme, les fonctions seront assembles entre elles
pour former un programme. On aura par exemple la fonction : mettre au carr un
nombrelafonction:additionnera+betc.Quiaufinaldonneralersultatsouhait.

Fabriquerunefonction

Pourfabriquerunefonction,nousavonsbesoindesavoirtroischoses:
Quelestletypedelafonctionquejesouhaitecrer?
Quelserasonnom?
Quel(s)paramtre(s)prendratelle?

Nomdelafonction
Pour commencer, nous allons, en premier lieu, choisir le nom de la fonction. Par
exemple, si votre fonction doit rcuprer la temprature dune pice fournie par un
capteur de temprature : vous appellerez la fonction lireTemperaturePiece, ou bien
lire_temperature_piece,ouencorelecture_temp_piece.Bon,desnomsonpeutluien
donnerplein,maissoyezlogiquequantauchoixdecedernier.Ceseraplusfacilepour
comprendrelecodequesivouslappeleztmp(pourtemprature ).
Un nom de fonction explicite garantit une lecture rapide et une comprhension
aiseducode.Unlecteurdoitsavoircequefaitlafonctionjustegrcesonnom,
sanslirelecontenu!

Lestypesetlesparamtres
Lesfonctionsontpourbutdedcoupervotreprogrammeendiffrentesunitslogiques.
Idalement,leprogrammeprincipalnedevraitutiliserquedesappelsdefonctions,en
faisantunminimumdetraitement.Afindepouvoirfonctionner,ellesutilisent,laplupart
dutemps,deschosesenentresetrenvoientquelquechoseensortie.Lesentres
seront appeles des paramtres de la fonctionetla sortie sera appele valeur de
retour.
Notez quune fonction ne peut renvoyer quun seul rsultat la fois. Notez
galement quune fonction ne renvoie pas obligatoirement un rsultat. Elle nest
pasnonplusobligedutiliserdesparamtres.

Lesparamtres
Lesparamtresserventnourrirvotrefonction.Ilsserventdonnerdesinformationsau
traitementquelledoiteffectuer.Prenonsunexempleconcret.Pourchangerltatdune
sortie du microcontrleur, Arduino nous propose la fonction suivante: digitalWrite(pin,
value). Ainsi, la rfrence nous explique que la fonction a les caractristiques
suivantes:
paramtrepin:lenumrodelabrochechanger
paramtrevalue:ltatdanslequelmettrelabroche(HIGH,(haut,+5V)ouLOW
(bas,masse))
retour:pasderetourdersultat
Comme vous pouvez le constater, lexemple est explicite sans lire le code de la
fonction.Sonnom,digitalWrite(crituredigitalepourlesanglophobes),signifiequon
vachangerltatdunebrochenumrique(doncpasanalogique).Sesparamtresont
euxaussidesnomsexplicites,pinpourlabrochechangeretvaluepourltatlui
donner.Lorsquevousallercrerdesfonctions,cestvousdevoirsiellesontbesoin

deparamtresounon.Parexemple,vousvoulezfaireunefonctionquimetenpause
votre programme, vous pouvez faire une fonction Pause() et dterminera la dure
pendant laquelle le programme sera en pause. On obtiendra donc, par exemple, la
syntaxe suivante : void Pause(char duree). Pour rsumer un peu, on a le choix de
crerdesfonctionsvides,doncsansparamtres,oubiendesfonctionstypesqui
acceptentunouplusieursparamtres.
Maiscestquoiavoid?
Jyarrive!Souvenezvous,unpeuplushautjevousexpliquaisquunefonctionpouvait
retournerunevaleur,lafameusevaleurdesortie,jevaismaintenantvousexpliquerson
fonctionnement.

Letypevoid
On vient de voir quune fonction pouvait accepter des paramtres et ventuellement
renvoyer quelque chose. Mais ce nest pas obligatoire. En effet, si lon reprend notre
fonctionPause,ellenerenvoieriencarcenestpasncessairedesignalerquoique
ce soit. Dans ce cas, on prfixera le nom de notre fontion avec le motcl void. La
syntaxeutiliseestlasuivante:
1
2
3
4

voidnom_de_la_fonction()
{
//instructions
}

Onutilisedoncletypevoidpourdirequelafonctionnaurapasderetour.Unefonction
detypevoidnepeutdoncpasretournerdevaleur.Parexemple:
1
2
3
4
5

voidfonction()
{
intvar=24
returnvar//nefonctionnerapascarlafonctionestdetypevoid
}

Ce code ne fonctionnera pas, parce que la fonction int. Ce qui est impossible ! Le
compilateur le refusera et votre code final ne sera pas gnr. Vous connaissez
dailleurs dj au moins deux fonctions qui nont pas de retour Et oui, la fonction
setupetlafonctionloop .Ilnyenapasplussavoir.

Lesfonctionstypes
L,celadevientlgrementplusintressant.Eneffet,sionveutcrerunefonctionqui
calcule le rsultat dune addition de deux nombres (ou un calcul plus complexe), il
seraitbiendepouvoirrenvoyerdirectementlersultatpluttquedelestockerdansune
variablequiauneporteglobaleetdaccdercettevariabledansuneautrefonction.
Enclair,lappeldelafonctionnousdonnedirectementlersultat.Onpeutalorsfaire
ce que lon veut avec ce rsultat (le stocker dans une variable, lutiliser dans une
fonction,luifairesubiruneopration,)

Commentcrerunefonctiontype?

En soit, cela na rien de compliqu, il faut simplement remplacer long, ) Voil un


exemple:
1
2
3
4
5

intmaFonction()
{
intresultat=44//dclarationdemavariablersultat
returnresultat
}

Notez que je nai pas mis les deux fonctions principales, savoir loop(), mais elles
sontobligatoires!Lorsquelleseraappele,lafonctionresultat.Voyezcetexemple:
1
2
3
4
5
6
7
8
9
10
11
12

intcalcul=0

voidloop()
{
calcul=10*maFonction()
}

intmaFonction()
{
intresultat=44//dclarationdemavariablersultat
returnresultat
}

Danslafonction calcul = 10 * 44;Cequinousdonne:calcul=440.Boncenest


quun exemple trs simple pour vous montrer un peu comment cela fonctionne. Plus
tard, lorsque vous serez au point, vous utiliserez certainement cette combinaison de
faonpluscomplexe.
Comme cet exemple est trs simple, je nai pas inscrit la valeur retourne par la
fonction maFonction() dans une variable, mais il est prfrable de le faire. Du
moins,lorsquecestutile,cequinestpaslecasici.

Lesfonctionsavecparamtres
Cestbiengentiltouta,maismaintenantvousallezvoirquelquechosedebienplus
intressant.Voiluncode,nousverronscequilfaitaprs:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

intx=64
inty=192

voidloop()
{
maFonction(x,y)
}

intmaFonction(intparam1,intparam2)
{
intsomme=0
somme=param1+param2
//somme=64+192=255

returnsomme
}

Quesepassetil?
Jaidfinitroisvariables:maFonction()esttypeetacceptedesparamtres.Lisons
lecodedudbut:
Ondclarenosvariables
LafonctionmaFonction()quelonacre
Cestsurcedernierpointquelonvasepencher.Eneffet,onadonnlafonctiondes
paramtres.Cesparamtresserventnourrirlafonction.Pourfairesimple,onditla
fonction:Voildeuxparamtres,jeveuxquetutenservespourfairelecalculqueje
veuxEnsuitearrivelasignaturedelafonction.
Lasignaturedequoituparles?
Lasignaturecestletitrecompletdelafonction.Grceelleonconnaitlenomdela
fonction,letypedelavaleurretourn,etletypedesdiffrentsparamtres.
1 intmaFonction(intparam1,intparam2)

La fonction rcupre dans des variables les paramtres que lon lui a envoys.
Autrementdit,danslavariabley.Soit:param2 = y = 192.Pourfinir,onutilisecesdeux
variables cres la vole dans la signature de la fonction pour raliser le calcul
souhait(unesommedansnotrecas).
Aquoiasertdefairetouta?Pourquoionutilisepassimplementlesvariablesx
etydanslafonction?
Cela va nous servir simplifier notre code. Mais pas seulement ! Par exemple, vous
voulezfaireplusieursoprationsdiffrentes(addition,soustraction,etc.)etbienaulieu
decrerplusieursfonctions,onnevaencrerquunequilesfaittoutes!Mais,afinde
luidirequelleoprationfaire,vousluidonnerezunparamtreluidisant:Multiplieces
deuxnombresoubienadditionnecesdeuxnombres.Cequeceladonnerait:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

unsignedcharoperation=0
intx=5
inty=10

voidloop()
{
//leparamtre"opration"donneletyped'oprationfaire
maFonction(x,y,operation)
}

intmaFonction(intparam1,intparam2,intparam3)
{
intresultat=0
switch(param3)
{
case0://addition,resultat=15
resultat=param1+param2
break
case1://soustraction,resultat=5
resultat=param1param2

21
22
23
24
25
26
27
28
29
30
31
32
33
34

break
case2://multiplication,resultat=50
resultat=param1*param2
break
case3://division,resultat=0(carnombreentier)
resultat=param1/param2
break
default:
resultat=0
break
}

returnresultat
}

Doncsilavariablex.Simplecomprendre,nestcepas?

Lestableaux
Commesonnomlindique,cettepartievaparlerdestableaux.
Quel est lintrt de parler de cette surface ennuyeuse quutilisent nos chers
enseignants?
Eh bien dtrompezvous, en informatique un tableau a na rien voir ! Si on devait
(beaucoup)rsumer,untableauestunegrossevariable.Sonbutestdestockerdes
lmentsdemmestypesenlesmettantdansdescases.Parexemple,unprofqui
stockelesnotesdeseslves.Ilutiliserauntableaudefloat(nombrevirgule),avec
unecaseparlves.Nousallonsutilisercetexempletoutaulongdecettepartie.Voici
quelquesprcisionspourbientoutcomprendre:
chaquelveseraidentifiparunnumroallantde0(lepremierlve)19(le
vingtimelvedelaclasse)
onpartde0careninformatiquelapremirevaleurdansuntableauest0!

Untableauenprogrammation
Un tableau, tout comme sous Excel, cest un ensemble constitu de cases, lesquels
vont contenir des informations. En programmation, ces informations seront des
nombres. Chaque case dun tableau contiendra une valeur. En reprenant lexemple
desnotesdeslves,letableaurpertoriantlesnotesdechaquelveressemblerait
ceci:
lve0 lve1 lve2 [...] lven1 lven
10
15,5
8
[...] 18
7

Aquoiasert?
On va principalement utiliser des tableaux lorsque lon aura besoin de stocker des
informations sans pour autant crer une variable pour chaque information. Toujours
avec le mme exemple, au lieu de crer une variable eleve2 et ainsi de suite pour
chaquelve,oninscritlesnotesdeslvesdansuntableau.

Mais,concretementcestquoiuntableau:unevariable?unefonction?
Nilun,nilautre.Enfait,onpourraitcomparercelaavecunindexquipointeversles
valeursdevariablesquisontcontenusdanschaquecasedutableau.Unpetitschma
poursimplifier:
lve0
lve1
variabledontonneconnatpaslenommaisqui idem,maisvariablediffrentedela
stockeunevaleur
caseprcdente
Parexemple,celadonnerait:
lve0
lve1
variablenote_eleve0variablenote_eleve1
Avecnotreexemple:
lve0 lve1
10
15,5
Soit,lorsquelondemanderalavaleurdelacase1(correspondantlanotedellve
1),letableaunousrenverralenombre:15,5.Alors,dansunpremiertemps,onvavoir
commentdclareruntableauetlinitialiser.Vousverrezquilyadiffrentesmanires
de procder. Aprs, on finira par apprendre comment utiliser un tableau et aller
chercher des valeurs dans celuici. Et pour finir, on terminera ce chapitre par un
exemple.Yaencoreduboulot!

Dclareruntableau
Comme expliqu plus tt, un tableau contient des lments de mme type. On le
dclaredoncavecuntypesemblable,etunetaillereprsentantlenombredlments
quilcontiendra.Parexemple,pournotreclassede20tudiants:
1 floatnotes[20]

Onpeutgalementcreruntableauvide,lasyntaxeestlgrementdiffrente:
1 floatnotes[]={}

Onveutstockerdesnotes,doncdesvaleursdcimalesentre0et20.Onvadonccrer
un tableau de float (car cest le type de variable qui accepte les nombres virgule,
souvenezvous! ).Danscetteclasse,ilya20lves(de019)doncletableau
contiendra20lments.Sionvoulaitfaireuntableaude100tudiantsdanslesquels
onrecenseleursnombresdabsence,onferaitletableausuivant:
1 charabsenteisme[100]

Accderetmodifierunecasedutableau

Pour accder une case dun tableau, il suffit de connatre lindice de la case
laquelleonveutaccder.Lindicecestlenumrodelacasequonveutlire/crire.Par
exemple,pourlirelavaleurdelacase10(doncindice9caroncommence0):
1
2
3
4
5

floatnotes[20]//notretableau
floatvaleur//unevariablequicontiendraunenote

//valeurcontientdsormaislanotedudiximelve
valeur=notes[9]

Cecodesetraduitparlenregistrementdelavaleurcontenuedansladiximecasedu
tableau,dansunevariablenomme valeur. A prsent, si on veut aller modifier cette
mmevaleur,onfaitcommeavecunevariablenormale,ilsuffitdutiliserloprateur=
:
1 notes[9]=10,5//onchangelanotedudiximelve

Enfait,onprocdedelammemanirequepourchangerlavaleurdunevariable,car,
jevouslaidit,chaquecaseduntableauestunevariablequicontientunevaleurou
non.
Faitesattentionauxindicesutiliss.Sivousessayezdelire/criredansunecase
de tableau trop loin (indice trop grand, par exemple 987362598412 ), le
comportement pourrait devenir imprvisible. Car en pratique vous modifierez des
valeurs qui seront peuttre utilises par le systme pour autre chose. Ce qui
pourraitavoirdegravesconsquences!
Vousavezsrementrencontrdescrashsdeprogrammesurvotreordinateur,ils
sont souvent d la modification de variable qui nappartiennent pas au
programme,donclOStueceprogrammequiessaidemanipulerdestrucsquine
luiappartiennentpas.

Initialiseruntableau
Audpart,notretableautaitvide:

1 floatnotes[20]//oncreruntableaudontlecontenuestvide,onsaitsimplementqu'ilconti

Cequelonvafaire,cestinitialisernotretableau.Onalapossibilitderemplirchaque
caseuneparuneoubienutiliserunebouclequirempliraletableaunotreplace.Dans
le premier cas, on peut mettre la valeur que lon veut dans chaque case du tableau,
tandisquavecladeuximesolution,onrempliralescasesdutableauaveclamme
valeur, bien que lon puisse le remplir avec des valeur diffrentes mais cest un peu
pluscompliqu.Dansnotreexempledesnotes,onpartduprincipequelexamennest
paspass,donctoutlemonde0. Pourcela,onparcourttouteslescasesenleur
mettantlavaleur0:
1
2
3
4
5

chari=0//unevariablequel'onvaincrmenter
floatnotes[20]//notretableau

voidsetup()
{

6
7
8
9
10
11

//boucleforquirempliraletableaupournous
for(i=0i<20i++)
{
notes[i]=0//chaquecasedutableauvaudra0
}
}

Linitialisation dun tableau peut se faire directement lors de sa cration, comme


ceci:
1 floatnote[]={0,0,0,0/*,etc.*/}

Oubienmme,commecela:
1
2
3
4
5
6
7
8
9
10

floatnote[]={}

voidsetup()
{
note[0]=0
note[1]=0
note[2]=0
note[3]=0
//...
}

Exempledetraitement
Boncestbienbeautouta,onadesnotescoincesdansuntableau,onenfait
quoi?
Excellentequestion,etadpendradelusagequevousenaurez !Voyonsdescas
dutilisationspournotretableaudenotes(enutilisantdesfonctions ).

Lanotemaximale
Comme le titre lindique, on va rechercher la note maximale (le meilleur lve de la
classe). La fonction recevra en paramtre le tableau de float, le nombre dlments
danscetableauetrenverralameilleurenote.
1
2
3
4
5
6
7
8
9
10
11
12
13
14

floatmeilleurNote(floattableau[],intnombreEleve)
{
inti=0
intmax=0//variablescontenantlafuturemeilleurenote

for(i=0i<nombreEleve,i++)
{
if(tableau[i]>max)//silanotelueestmeilleurequelameilleureactuelle
{
max=tableau[i]//alorsonl'enregistre
}
}
returnmax//onretournelameilleurenote
}

Ce que lon fait, pour lire un tableau, est exactement la mme chose que lorsquon

linitialiseavecunebouclefor.
Ilesttoutfaitpossibledemettrelavaleurdelacaserecherchdansunevariable
:
1 intvaleur=tableau[5]//onenregistrelavaleurdelacase6dutableaudansunevariable

Voila,centaitpassidur,vouspouvezfairepareilpourchercherlavaleurminimale
afinvousentrainer!

Calculdemoyenne
Ici,onvachercherlamoyennedesnotes.Lasignaturedelafonctionseraexactement
lammequecelledelafonctionprcdente,ladiffrencedunom!Jevouslaisse
rflchir, voici la signature de la fonction, le code est plus bas mais essayez de le
trouvervousmmeavant:
1 floatmoyenneNote(floattableau[],intnombreEleve)

Unesolution:
1
2
3
4
5
6
7
8
9
10
11
12

floatmoyenneNote(floattableau[],intnombreEleve)
{
inti=0
doubletotal=0//additiondetouteslesnotes
floatmoyenne=0//moyennedesnotes
for(i=0i<nombreElevei++)
{
total=total+tableau[i]
}
moyenne=total/nombreEleve
returnmoyenne
}

Onentermineaveclestableaux,onverrapeuttreplusdechosesenpratique.
Maintenant vous pouvez pleurer, de joie bien sr, car vous venez de terminer la
premirepartie!Aprsent,faisonsplacelapratique

S-ar putea să vă placă și