Formation Arduino Tutoriel

download Formation Arduino  Tutoriel

of 36

Transcript of Formation Arduino Tutoriel

  • 8/19/2019 Formation Arduino Tutoriel

    1/119

    Formation ArduinoCentre Culturel Algérien

    Future & EnergiesSid-Ali Akil(Février 2016)

    Quand et comment Arduino est-il né - sa petite histoire

    HistoriqueJ'ai trouvé une vidéo (en anglais) qui récapitule l'histoire de la conception de la plateformearduino, ici.URL: https:vimeo.com!"#$%!&%

    prs ce ref historique, vo*ons maintenant le monde des arduino's. +ur le marché il eisteune panoplie d'arduino's, simplement parce que les utilisations sont variées et qu-il n-est pasforcément nécessaire d-avoir le meilleur ou le grand modle dans tous les proets.

    /l * a des versions qui sont plus spécialisées, comme par eemple le Lil*0ad qui est con1u pour 2tre intégré 3 des v2tements, le Root qui permet de configurer un root sur roues, et le4splora qui peut servir de manettetélécommande.

     5ous allons dans ce document nous concentrer sur l'architecture 6 de ase 7 et ses

    fonctionnalités, c-est838dire la carte avec microcontr9leur, ses entréessorties (4+) et sa programmation.

    Comment Arduino est-il structuré - son architecture0lusieurs architectures arduino se présentent sur le marché. l'heure ou nous pulions cetouvrage, le plus populaire est le modle U5;.

  • 8/19/2019 Formation Arduino Tutoriel

    2/119

    Figure 1 - Arduino UNO

    Caractéristiques principales du modèle UNOMicrocontrôleur (MCU) ATmega328Tension d'utilisation 5V Tension d'entrée(recommandée)

    7-12

     Tension d'entrée (min!ma")

    #-2$

    E/S digitales 14 (dont 6 pour les sorties PWM)Entrées analogiques 6ourant !ontinu par pin(E/S)

    4" #$

    ourant total sur les 14pins

    %"" #$

    Courant %C de la &in 33olts

    $ mA

    Mémoire *las+32 , (ATmega328) dont $ ,utilisée &ar le .ootloader

    /0AM 2 , (ATmega328)0M 1 , (ATmega328)&réquen!e d'orloge 16 M4ongueur #8# mm

    4argeur 35 mmoids 2 g

     Arduino est composé de plusieurs éléments tel que c'est illustré dansl'image suivante.

  • 8/19/2019 Formation Arduino Tutoriel

    3/119

    Figure 2 - Ar!iteture de la arte arduino

    Le port U+= sert 3 rancher la carte arduino avec le 0

  • 8/19/2019 Formation Arduino Tutoriel

    4/119

    Ciruit életri'ue de l*arduino

    Figure + - Ciruit életri'ue de l*arduino

  • 8/19/2019 Formation Arduino Tutoriel

    5/119

     Arduino et diférents capteurs et actionneurs

    vec rduino, nous pouvons commander plusieurs catégories d'actionneurs (relais,moteurs,...) et collecter de l'information 3 partir des capteurs (pression, température,luminosité, ...).L'information peut 2tre de t*pe numérique (digitale) ou de t*pe analogique. Les informationssont traitées au sein de l'arduino par des instructions (fonctions) qui permettent de faire lesacquisitions ou les commandes sur l'ensemle des éléments ph*siques qui composent les*stme au complet.

    >e plus arduino est trs facilement capale de s'intégrer et de performer au sein d'un réseauinformatique, au mo*en de composants intelligents.

     Arduino Duemilanove (Le DU!

    Figure , - Arduino ue

    Capteurs Actionneurs

    Arduino

  • 8/19/2019 Formation Arduino Tutoriel

    6/119

    4'arduino %ue est .asé sur le CU Atmel /AM368 A0M Corte"-M3 l dis&ose de 54 pins digitales (dont 1% peu*ent ser*ir!o##e sorties PWM)! de 12 entrées analogiques! de 4+$,T (&orts série)! d'une +orloge de -4 M! un &ort U/ T!% !on*ertisseurs ./$ (digital9analogi:ue)! 2 T;! un &o! un connecteur /! un connecteur ?TA! un .outon reset et un.outon d'e@acement'arduino .ue 0on!tionne en 2 *olts2our &lus de détails! il est conseillé de consulter le site suianthttp://www.arduino.cc/en/Main/ArduinoBoardDue

     Arduino t"ernet 

    Figure 6 - Arduino et!ernet

     Arduino #ega

    Figure . - Arduino /ega

    $oici ces principales caractéristiques%

    ?icrocontr9leur @mega!&"AO#erating oltage ,/nput Boltage (recommended) C8!&B

  • 8/19/2019 Formation Arduino Tutoriel

    7/119

    /nput Boltage (limits) D8&ABigital O ins ,+ (o3 4!i! 1, #rovide 5/ out#ut)Analog n#ut ins 16C Current #er O in +0 mA><

  • 8/19/2019 Formation Arduino Tutoriel

    8/119

     Figure 10 - C;$le /ini U< #our arduino nano

    Caractéristi:ues générales

    Mi!ro!ontrleur $t#el $T#ega16- or $T#ega%-Tension de0on!tionne#ent

    5 V

     Tension d'alimentation(recommandé) 7-12

     Tensions limites #-2$ ro!es Entrées/Sortiesdigitales

    14 (dont 6 pour les sorties PWM)

    ro!es analogiques -ourant . par pin 4" #$

    MemorE *las+1# , (ATmega1#8) ou 32 ,(ATmega328) dont 2 , utilisés &ar le.ootloader

    /0AM1 , (ATmega1#8) ou 2 ,

    (ATmega328)

    0M12 .Etes (ATmega1#8) ou 1 ,(ATmega328)

    Vitesse d'orloge 16 M%imensions $73F " 17$F4ongueur 5 mm4argeur 18 mmoids g

    Les clones

    /%U

    /%U *4MA0%U/

  • 8/19/2019 Formation Arduino Tutoriel

    9/119

    0réparation de l'environnement de travailInstallation du logiciel Arduino (IDE et ses ilioth!ques"

    /l faut installer l'environnement de travail 3 partir du site consacré 3 arduino:http://arduino.cc/en/Main/Software 

    Le logiciel est en open source (gratuit) et est disponile pour les trois principales plateformesd'ordinateurs: IindoGs, ?ac ;+, Linu. Utiliser celui qui correspond au s*stmed'eploitation de votre ordinateur.La dernire version !.D.# installe aussi le driver qui permet de lier le 0< 3 l'arduino via lecle U+=.+i des prolmes surgissent lors de l'installation, voirhttp://arduino.cc/en/Guide/Troubleshooting! pour trouver la solution au prolme.

    >es guides en ligne sont disponiles pour démarrer correctement avec rduino: http://arduino.cc/en/Guide/Windows pour IindoGs,http://arduino.cc/en/Guide/MacOSX  pour ?ac ;+ K, and

    http://www.arduino.cc/plaground/!earning/!inu"   pour Linu.

    Une fois l'installation proprement effectuée, il est possile maintenant de lancer l'applicationarduino, en doule8cliquant sur le raccourci de l'application.

    Figure 11 - =aouri arduino 4lle va ouvrir une fen2tre présentant le modle de programme avec les différentes fonctionsde ase.

    Description de la arre d#outils de l#IDEBo*ons la arre d'outils:

    Figure 12 - e gauche 3 droite, voici résumée la fonctionnalité de chaque outon:Bérifier  :0ermet de vérifier (ou compiler) le programme avant de l-envo*er sur la carte.@éléverser  :0our stocer le programme inaire sur la carte et l'eécuter. 5ouveau :

  • 8/19/2019 Formation Arduino Tutoriel

    10/119

    0our créer un nouveau programme.;uvrir  :0our ouvrir un programme eistant4nregistrer  :0our sauvegarder le programme?oniteur série (Bisualiser la console):

    ;uvrir une fen2tre qui affiche la communication série entre la carte et le 0

  • 8/19/2019 Formation Arduino Tutoriel

    11/119

    eclarations (section gloale)...Svoid setup() M...Nvoid loop() M

    ...fonction!()P

    Nvoid fct!() M

    ...Nfct! est une fonction qui est appelée dans la fonction loop().

  • 8/19/2019 Formation Arduino Tutoriel

    12/119

    Description des menus de l'IDE 

    Figure 1+ - /enus de l*E

    >ans ce menu il * a les classiques 5ouveau, ;uvrir etc.T

    Je dirais que les deu seules choses 3 retenir sont:4emples : Bous permet de charger des programmes d-eemples fournis avec l-/>4 et les iliothques que vous aure installées. 4 3 votre guise.

    /l n-* a vraiment pas esoin de s-attarder sur le menu 4dition, c-est le classique desclassiques sans aout dont nous aurons esoin, on passe donc au menu

  • 8/19/2019 Formation Arduino Tutoriel

    13/119

    outer un fichier T : +i vous ave créé une fonction ou si vous inclue un sous8programme3 un programme, vous pouve simplement l-insérer ici.

    4t enfin un des menus les plus importants: ;utils

    Figure 16 - :e menu Outils

    Eormatage automatique:0ermet de raouter les espaces en déut de ligne pour rendre votre programme plus lisile.rchiver le croquis: VTRéparer encodage W recharger  : VT?oniteur série :;uvre le moniteur série.@*pe de carte :0ermet de choisir le modle d'arduino 3 epérimenter.0rocesseur  :

  • 8/19/2019 Formation Arduino Tutoriel

    14/119

    Le Moniteur Série

    La fen2tre du moniteur (ou console arduino) se présente comme ceci:

    Figure 1. - :e moniteur série

    @out en haut, le port

  • 8/19/2019 Formation Arduino Tutoriel

    15/119

    Les ports digitau$ et les ports analogiques>ans arduino, il * a les ports digitau >!$ 3 >&P >! et >A étant les ports @ et R pour latransmission sur port série.Un port digital peut 2tre configuré soit comme entrée pour lire une information qui provientde l'etérieur, soit comme sortie pour commander un circuit électrique eterne.

    rduino utilise la fonction pin?ode() pour configurer le mode d'entrée ou sortie d'un port. Exemples:8 pour configurer la pin >!A comme entrée nous écrivons:

     pin?ode(!A, /50U@)P8 pour configurer la pin >% comme sortie, nous écrivons:

     pin?ode(%, ;U@0U@)P8 on peut aussi utiliser le paramtre /50U@Y0ULLU0 pour utiliser la résistance interne situéesur le port digital

    L'arduino utilise la fonction digitalIrite() pour placer une tension sur la pin indiquée dand lafonction.

     Exemple:8 si nous voulons commander la pin % pour envo*er un signal de #volts (Q/Q) ou A volt(L;I), nous écrivons:

    digitalIrite(%, Q/Q)PdigitalIrite(%, L;I)P

    8 si nous voulons connaZtre la valeur digitale sur la pin !A, nous écrivons:valeur O digitalRead(!A)P

    La variale [valeur[ doit avoir été déclarée dans le programme.

    Un port digital fournit une tension de # volts si nous utilisons le paramtre Q/Q (ou !) dansla fonction digitalIrite() ou ien A volt si nous utilisons L;I (ou A).

    0our ce qui est des ports analogiques, le taleau suivant nous renseigne sur les différentes possiilités d'utilisation:

    $nalog input $nalog outputResolution 10 bit (0 through 1023) 8 bit (0 through 255)Voltage range 0 through 5 volts 0 through 5 volts

     Arduino pins A0 through A5 Digital pins 3, 5, 6, 9, 10, 11 Arduino Mega pins A0 through A15 Digital pins 2 through 13

    Un port analogique peut sortir une tension comprise entre A et # volts. $,>#, >D, >%, >!A, >!! qui sont les sorties analogiques. Boir la section sur les signau 0I?.

    0our cela il eiste la fonction analogIrite(>, valeur). Dx est le numéro de pin analogique etvaleur  est une valeur comprise entre A et #.Les entrées analogiques peuvent 2tre utilisées sur les ports A, !, &, $, H, #. La valeur lue est comprise entre A et !A&$ car la résolution du convertisseur nalogique5umérique estde !A its. 5ous utilisons la fonction analogRead() pour lire un port analogique.

  • 8/19/2019 Formation Arduino Tutoriel

    16/119

    %ECH&IQ'ES DE ASE0rise de contact: le programme qui fait clignoter une L4>

    Comment allumer)éteindre une LED

    1- esri#tionLa L4> est toute indiquée pour commencer 3 programmer avec l'arduino.4lle s'allume lorsqu'elle est traversée par un courant d'environ &A m. +inon elle resteéteinte. Le courant qui traverse la L4> ne doit pas dépasser la limite indiquée par leconstructeur. Les ornes de la L4> sont l'anode et la cathode. La tension sur l'anode doit 2tresupérieure 3 la tension sur la cathode (représentée par une arre sur le s*mole de la L4>).0our mieu connaZtre le fonctionnement des L4>s, aller 3 l'annee .

     Figure 19 - :a :E et son sm$ole

    La pin courte (cathode) est touours reliée 3 la tension la plus asse (généralement nd) parrapport 3 l'autre pin qui est plus longue (anode) et qui est reliée au Bcc en général.

    2- Conne>ion>onc il n'est pas permis de connecter une L4> directement sur les ornes d'une source detension, comme la atterie par eemple. 0our limiter le courant du circuit électriquealimentée par la source de tension, on place une résistance entre !"A\ et $$A \ en série avecla L4>.

    Figure 1% - Conne>ion d*une :E

    ;n utilise la formule suivante R O (Bs 8 Bf) / pour calculer la résistance de limitation decourant d'une L4>. Bs est la tension appliquée (#B dans le cas de l'arduino)P Bf est la

  • 8/19/2019 Formation Arduino Tutoriel

    17/119

    tension au ornes de la L4> (!.CB dans le cas d'une Led rouge)P / vaut !Am (peut allerentre # et $A m).>onc R O $.$ A.A!A O $$A \.($.$ B étant la tension entre les ornes de la résistance).

    "- rogramme

    ! void setup() M& pin?ode(&, ;U@0U@)P$ NH void loop() M# digitalIrite(&, Q/Q)PD dela*(!AAA)PC digitalIrite(&, L;I)P" dela*(!AAA)P% N

    >escription du programme

    ! void setup() M >éclaration de la fonction setup().& pin?ode(&, ;U@0U@)P Utilisation de la fonction pin?ode(&, ;U@0U@). éclaration de la fonction loop().# digitalIrite(&, Q/Q)P La pin & de l'arduino est levée 3 la valeur ! logique (Q/Q)

    8 correspondant 3 une tension de # volts.D dela*(!AAA)P @emporiser pendant !AAA ms (! sec).C digitalIrite(&, L;I)P La pin & de l'arduino est aissée 3 la valeur A logique

    (L;I) 8 correspondant 3 une tension de A volt." dela*(!AAA)P @emporiser pendant !AAA ms (! sec).% N Ein de la fonction loop().

     5oter l'utilisation de la fonction dela*(t) 3 la ligne D et ". Le paramtre t est eprimé en!!AAA de secondes (ms). et la

    résistance de limitation de courant en fonction de la source d'alimentation et du t*pe de L4>utilisée:

  • 8/19/2019 Formation Arduino Tutoriel

    18/119

    Figure 20 - iagramme de alul de ourant d*une :E

     4n général, une L4> alimentée en ]#volts nécessite une résistance de protection compriseentre &&A ohms et !F ohms.

  • 8/19/2019 Formation Arduino Tutoriel

    19/119

    *rogrammation+ Description des ,onctions Serialegin etSerialprintln

    +erial.egin(speed) sert 3 définir la vitesse de transmission entre l'arduino et le 0s, on aura le programme suivant:void setup() M

     pin?ode(&, ;U@0U@)P+erial.egin(%DAA)P

    Nvoid loop() M

    digitalIrite(&, Q/Q)P+erial.println([;5[)Pdela*(!AAA)PdigitalIrite(&, L;I)P+erial.println([;EE[)Pdela*(!AAA)P

    N

     5ote: 5'oulie pas d'ouvrir la console.

    Exercices

    !8 Refaire le programme de clignotement de la L4> en utilisant des valeurs différentes dedélai. ;serve le résultat.

  • 8/19/2019 Formation Arduino Tutoriel

    20/119

    *rogrammation+ 'tilisation des .ariales

    0lusieurs t*pes de variales peuvent 2tre utilisées dans arduino:a) aria$le de t#e int (entier allant de -"2.69 @ "2.6.)? re#résentée #ar une asemémoire de 16 $itseemples:

    int valeurP définit une variale int n'a*ant pas de valeur.int valeur O !#AP définit une variale int possédant la valeur !#A.

    a) aria$le de t#e unsigned int (entier allant de 0 @ 6,,",)? re#résentée #ar une asemémoire de 16 $its

    $) aria$le de t#e !ar? re#résentée #ar une ase mémoire de 9 $its (entre -129 et 12.)eemples:char cP définit une variale char n'a*ant pas de valeur.char c O '#'P définit une variale char possédant la valeur '#'.char message O [=ienvenue[P

    définit une variale char possédant la valeur [=ienvenue[.

    ) aria$le de t#e unsigned !ar? re#résentée #ar une ase mémoire de 9 $its (entre 0et 12.)

    d) aria$le de t#e $te? re#résentée #ar une ase mémoire de 9 $its (entre 0 et 2,,)eemples: *te P définit une variale *te n'a*ant pas de valeur. *te a O !AAP définit une variale *te la valeur !AA.

    e) aria$le de t#e 3loat ("2 $its)? (entre 8$.HA&"&$#4]$" et $.HA&"&$#4]$")

    eemples:float pi O $.!HP définit une variale float a*ant la valeur mathématique pi.float EP définit une variale float ne possédant pas de valeur.

    3) aria$le de t#e dou$le("2 $its)? ($.HA&"&$#4]$" to $.HA&"&$#4]$")eemples:doule e O $H%.AH#P définit une variale doule a*ant la valeur mathématique .....doule >P définit une variale doule ne possédant pas de valeur.Bariale t*pe +ie Range

    g) aria$le de t#e $oolean? re#résentée #ar une ase mémoire de 9 $its (0 ou 1)

    !) aria$le de t#e 4ord? re#résentée #ar une ase mémoire de 16 $its (A 3 D##$#)

    i) aria$le de t#e long (de -21+.+9"6+9 @ 21+.+9"6+.)

     B) aria$le de t#e unsigned long (to +2%+%6.2%,)

    ) aria$le de t#e arra (ta$leau)Un taleau est une collection de données qui sont accessiles au mo*en d'un inde.int arra*^_ O MvaleurA, valeur!, valeur&, T. N

  • 8/19/2019 Formation Arduino Tutoriel

    21/119

    4emple:int arra*^_ O M!"A, A, !&H#, T. NP

    0our accéder 3 une valeur dans le taleau, on le fait au mo*en de son inde. 4emple, pourlire la valeur !"A dans le taleau on fait: arra*^A_, pour A on écrit arra*^!_ et ainsi de suite.

    E>em#le utilisant la olletion *arra*? *te valeurs^_ O M!%A, , #, !"A, !A, %#, !DA, #ANPvoid setup() M

    +erial.egin(%DAA)PNvoid loop() M

    for(int i O AP i`"P i]]) M+erial.println(valeurs^i_)Pdela*(&AAA)P

    NNuestion: que fait ce programmeV

    E>em#leBoici un programme arduino qui calcule les H opérations arithmétiques entre & paramtres aet . Le résultat est affiché 3 l'écran.

    void setup() M888Nvoid loop() M888N

    0our l'eercice # suivant, on devra utiliser les fonctions sinus et cosinus, comme suit:

    binclude `math.h 3 inclure dans le programme puis utiliser les fonctions sin et cos de la manire suivante:

    ...sin(doule angle) cette fonction retourne le sin de ( eprimé en radians)

     Exemple:doule valPval O sin(&S$.!H) sinus de &piP val est...cos(doule angle) cette fonction retourne le cos of ( eprimé en radians) Exemple:val O cos($.!H&) cos de pi&

  • 8/19/2019 Formation Arduino Tutoriel

    22/119

    Exercices

    0our tous les eercices, utiliser le moniteur de l'arduino pour vérifier les résultats.

    !. Eaire clignoter la L4> avec une fréquence de & Q.&. s. 5e pas oulier les résistances.Eaites clignoter les L4>s chacune 3 son tour. L! s'allume puis s'éteint, ensuite autour de L&et ainsi de suite.

  • 8/19/2019 Formation Arduino Tutoriel

    23/119

    La communication a.ec l#en.ironnement digital e$térieur 

    L'arduino est capale d'interagir avec son environnement etérieur, composé de composants plus ou moins complees dont font partie toute une panoplie de senseurs, actuateurs(relais, ...), réseau avec fils (Gired netGor) et sans fil (Gireless netGor).

    Contr/ler un circuit a.ec digital0rite("

    1- esri#tion 5ous avons vu comment un circuit simple contenant une ou plusieurs L4>s peut 2trecommandé en utilisant la fonction digitalIrite(). Boir paragraphe .La fonction digitalIrite(pin, val) positionne la pin en question 3 une valeur de tension qui prend soit la valeur # volts (si val O Q/Q) ou A volt (si val O L;I).

  • 8/19/2019 Formation Arduino Tutoriel

    24/119

     Figure 22 - /ise @ la masse d*une #in ave digital5rite()

    L'etinction de la L4> se fait en inectant une tension de A volt sur la pin de l'arduino qui vaalimenter l'anode de la L4>, sachant que la cathode de la L4> est mise 3 la masse.

  • 8/19/2019 Formation Arduino Tutoriel

    25/119

    Capturer de l#in,ormation digitale a.ec digital1ead("

    1- esri#tionLe circuit simple dont nous voulons récupérer l'information est constitué d'un interrupteur(sGitch). L'interrupteur sert 3 fermer ou 3 ouvrir un circuit électrique.

    Figure 2" - E>em#le d*un s4it!Les états classiques d'un outon8poussoir sont:8 5; (5ormalement ;uvert)

    8 5< (5ormalement Eermé)

    Figure 2+ - ion d*un $outon-#oussoir

    Boir le schéma de conneion d'un interrupteur avec arduino:

    ;n peutmettre une

    résistance de&&Aohms

    # volts

  • 8/19/2019 Formation Arduino Tutoriel

    26/119

    Figure 2. - Conne>ion ave un interru#teur (s4it!)

    a) uand l'interrupteur est 3 l'état ouvert, on dit que le circuit est ouvert. /l n'* a donc pas delien entre les ornes de l'interrupteur. ) uand l'interrupteur est 3 l'état fermé, on dit que le circuit est fermé. /l * a donc un lienentre les ornes de l'interrupteur.

    L'interrupteur est connecté par une orne 3 la masse du circuit électrique. L'autre orne estconnectée 3 la pin $ de l'arduino.

  • 8/19/2019 Formation Arduino Tutoriel

    27/119

    Figure 29 - Conne>ion d*un s4it! sans utiliser de résistane

    >ans ce cas on va utiliser le paramtre /50U@Y0ULLU0 dans la fonction pin?ode().;n aurait le programme suivant:void setup() M  start serial connection  +erial.egin(%DAA)P  configure pin& as an input and enale the internal pull8up resistor   pin?ode(&, /50U@Y0ULLU0)P

      pin?ode(!$, ;U@0U@)PN

    void loop() M  read the pushutton value into a variale  int sensorBal O digitalRead(&)P  print out the value of the pushutton  +erial.println(sensorBal)P

      Feep in mind the pullup means the pushutton's logic is inverted. /t goes Q/Q Ghen it's open, and L;I Ghen it's pressed. @urn on pin !$ Ghen the utton's

    pressed, and off Ghen it's not:  if (sensorBal OO Q/Q) M  digitalIrite(!$, L;I)P  N else M  digitalIrite(!$, Q/Q)P  N

    N

  • 8/19/2019 Formation Arduino Tutoriel

    28/119

    Exercices

    !8 Eaire le montage électrique pour allumer une L4> lorsqu'on ferme un interrupteur. LaL4> s'éteint lorsque l'interrupteur est ouvert.&8 Eaire le montage électrique pour allumer une L4> pendant un certain délai puis l'éteindrelorsqu'on ferme un interrupteur. La L4> flashe avec une fréquence de !A Q lorsquel'interrupteur est ouvert.

    $8 Eaire le montage 3 l'aide de & interrupteurs et une L4> pour réaliser les fonctions logiques;U, 4@, ;U8K (;u eclusif). Eaire le programme pour chaque fonction. Utiliser le moniteursérie de l'arduino pour déoguer les fonctions (utiliser +erial.egin et +erial.println).H8 Eaire le montage d'un circuit électrique qui utilise un outon8poussoir pour allumer uneL4> pendant # secondes (le outon8poussoir est appu*é puis relché).#8 Réécrire le programme du sGitch pour afficher le message [/nterrupteur ouvert[ ou[/nterrupteur fermé[ selon le cas.

  • 8/19/2019 Formation Arduino Tutoriel

    29/119

     

    *rogrammation+ 'tilisation de la oucle répétiti.e

    rduino dispose d'un mécanisme qui consiste 3 répéter une tche pendant un certain nomrede fois. /l * a $ mo*ens de réaliser la oucle répétitive:

    a" 2er  mécanisme - ,or 

    for (instruction!P conditionP instruction&) M ... N4emple:for (int iOAP i`!AP i]]) M

    instructionsP......

    N 5ote: 5'oulier pas les fonctions void setup() et void loop() dans votre programme.

  • 8/19/2019 Formation Arduino Tutoriel

    30/119

  • 8/19/2019 Formation Arduino Tutoriel

    31/119

    // turn the pin off#igital9rite(0in, L69)#ela'(timer)

    8

    // loop from the highest pin to the lo-est

    for (0in " 0in

  • 8/19/2019 Formation Arduino Tutoriel

    32/119

    Contr/ler un u66er 

    1- esri#tionLe uer est utilisé pour créer un son.Boici quelques unes de ses caractéristiques:

    8 Eréquence de résonnance: &$AA (]8 $AA Q)8 @ension: #B (entre H et "B)8 ion d*un $u88er

    "- rogramme d*essaiconst int pin=uer O HP

  • 8/19/2019 Formation Arduino Tutoriel

    33/119

    void loop() Munsigned int iP

      Ghile(!) Mfor(iOAP i`"AP i]]) M

      digitalIrite(pin=uer, Q/Q)P  dela*(!)P

      digitalIrite(pin=uer, L;I)P  dela*(!)P ms  N  for(iOAP i`#AAP i]]) M  digitalIrite(pin=uer, Q/Q)P  dela*(&)P  digitalIrite(pin=uer, L;I)P  dela*(&)P  N  NN

  • 8/19/2019 Formation Arduino Tutoriel

    34/119

    Contr/ler un 7o8stick

    1- esri#tion

    Le joystick à 2 axes X-Y est utilisé pour contrôler la position ou le mouvement d'un

    objet. l dispose d'un potentiom!tre pour c"acun des 2 axes. Lors#u'il est rel$c"é% il

    retourne toujours à sa position centrale #ui est sa position de repos.

    Figure "1 - Une re#résentation de Bosti 

    2- Conne>ions

    Figure "2 - Conne>ion ave un Bosti 

    "- rogramme

    int U&G%o

  • 8/19/2019 Formation Arduino Tutoriel

    35/119

    oid loo&() L  U&G%o

  • 8/19/2019 Formation Arduino Tutoriel

    36/119

    Contr/ler un *I1 - détecteur de mou.ement

    1- esri#tionUn capteur 0/R (0assive /nfrared sensor de t*pe Q

  • 8/19/2019 Formation Arduino Tutoriel

    37/119

    Figure "+ - Conne>ion @ un = 

    "- rogramme

    oid setu&() L  &inMode(2! UT)I  /erial.egin(#$$)I  /erial&rintln(FAlerte F)I  delaE(2$$$$)IN

    oid loo&() L  int &resence H $I  /erial&rint(F 2 H F)I  &resence H digital0ead(2)I 99 &in 2 0 data  /erial&rintln(&resence! %C)I  delaE(2$$)IN

    Exercices

    !8 crire ce code. Bérifier8le et modifier8le pour fonctionner correctement.

    int input0in O $P choose the input pin (for 0/R sensor)int pir+tate O L;IP Ge start, assuming no motion detectedint val O AP variale for reading the pin status void setup() M

     pin?ode(input0in, /50U@)P declare sensor as input  +erial.egin(%DAA)PN 

  • 8/19/2019 Formation Arduino Tutoriel

    38/119

    void loop() M  val O digitalRead(input0in)P read input value  if (val OO L;I) M chec if the input is L;I  if (pir+tate OO L;I) M  Ge have ust turned on  +erial.println([?otion detected[)P

      Ie onl* Gant to print on the output change, not state  pir+tate O Q/QP  N  N else M

    if (pir+tate OO Q/Q) M  Ge have ust turned of   +erial.println([?otion ended[)P  Ie onl* Gant to print on the output change, not state  pir+tate O L;IP  N

    NN

    &8 Lire et commenter le programme suivant. @ester8le.int motion_1 2!int light_1 13!voi" setup() #  pin$o"e (motion_1,%&')!  pin$o"e (light_1, *')!+voi" loop () #  "igitalrite (light_1,-*)!  "ela.(1000)! // laisser le apteur se stabiliser avant "e pren"re une mesure

      int sensor_1 "igitalea"(motion_1)!  i (sensor_1 -*) #  "igitalrite(light_1,%4)!  "ela.(500)!  "igitalrite(light_1,-*)!  "ela.(500)!  ++

  • 8/19/2019 Formation Arduino Tutoriel

    39/119

    Capturer l#intensité lumineuse

    1- esri#tion...

    2- Conne>ions

    "- rogrammevoid setup() M888888Nvoid loop() M888888N

    roBets!8 Eaire un montage pour réaliser un générateur de morse en utilisant arduino et quelquescomposants tels que L4>s et haut8parleur.0our vérifier taper un tete sur la console de l'arduino. Le montage doit générer les ipssonores pour chaque caractre du tete en question. 0our faire la correspondance entre uncaractre et le code ?orse associé, lire la section KKK dans l'annee .&8 Eaire un montage 3 ase d'arduino et d'un convertisseur 5 pour construire un générateur de signau 3 fréquence variale (signal carré, triangulaire, sinusodal). Utiliser le circuit>#%$& ou >%"#A. Boir datasheets.

  • 8/19/2019 Formation Arduino Tutoriel

    40/119

    Créer des sons (a.ec un cr8stal pié6o-électrique"

    1- esri#tionLe cr*stal piéo8électrique produit du son (via des virations) lorsqu'il est parcouru par uncourant alternatif ou par un signal de forme carrée (entre &AQ 3 &AQ). Le piéo8électrique

    va virer et créer ainsi des sons.

    Figure ", - module #ié8o-életri'ue

    2- Conne>ions

    "- rogramme d*essai!) un premier programme:## pieobeep.ino * beep on a given +reuen-% it/ a pieo spea0er## (-) 1ot1oo0.-o2 * arvinen, arvinen, 4alto0ari

    int spea0erPin $ 5!; void ave(int pin, +loat +reuen-%, int duration){+loat period$5#+reuen-%65!!!65!!!; ## 2i-rose-onds (us)

      long int startTi2e $ 2illis();  /ile(2illis()* startTi2e 7 duration) {  digital8rite(pin, I:);  dela%Mi-rose-onds(period#&);  digital8rite(pin,

  • 8/19/2019 Formation Arduino Tutoriel

    41/119

    &) Un deuime programme:#6 Pieo T/is e>a2ple s/os /o to run a Pieo 1uer on pin 9 using t/e analog8rite() +un-tion. It beeps 3 ti2es +ast at startup, aits a se-ond t/en beeps -ontinuousl% at a sloer pa-e 6#

    void setup() {## de-lare pin 9 to be an output?

      pinMode(9,

  • 8/19/2019 Formation Arduino Tutoriel

    42/119

      dela%(&');  ave(spea0erPin, ==!, &!);  ave(spea0erPin, =!, =!);  dela%(&');  ave(spea0erPin, '=!, &!);"

     H) >éclencher une alarme

    Le ut du programme est de déclencher une alarme.## pieoalar2tone.ino## (-) 1ot1oo0.-o2 * arvinen, 4alto0ari int spea0erPin $ 5!; void ave(int pin, +loat +reuen-%, int duration){+loat period $ 5 # +reuen-% 6 5!!! 6 5!!!; ## 2i-rose-onds (us)

      long int startTi2e $ 2illis();  /ile(2illis()* startTi2e 7 duration) {  digital8rite(pin, I:);  dela%Mi-rose-onds(period#&);  digital8rite(pin,

  • 8/19/2019 Formation Arduino Tutoriel

    43/119

      digital8rite(pin, I:);  dela%Mi-rose-onds(period#&);  digital8rite(pin,

  • 8/19/2019 Formation Arduino Tutoriel

    44/119

     

    'tiliser un sui.eur de ligne

    1- esri#tion

    2- Conne>ion

    "- rogramme d*essaifficher un message si on est aligné sur la ligne.

    ## linesensor.ino * a++i-/er un 2essage si lCobDet est sur la ligne

    ## (-) 1ot1oo0.-o2 * arvinen, arvinen, 4alto0ari

    -onst int sensorPin $ &;-onst int ledPin $ 53;int lineEound $ *5;

    void setup() {  Serial.begin(55'&!!);pinMode(sensorPin, INPUT);

      pinMode(ledPin,

  • 8/19/2019 Formation Arduino Tutoriel

    45/119

    Détecter un ostacle par lumi!re in,rarouge

    1- esri#tionLes cellules infrarouges sont utilisées pour créer une arrire lumineuse pour détecter sonfranchissement. Le dispositif comprend une Led émettrice et un phototransistor récepteur. La

    lumire utilisée est de l'infrarouge, donc invisile. H.

    "- rogrammevoid setup() {  pinMode(=,INPUT);  Serial.begin(9!!);

  • 8/19/2019 Formation Arduino Tutoriel

    46/119

    "void loop() {  int IBdete-t $ digitalBead(=);  Serial.println(IBdete-t);  dela%(5!!);"

  • 8/19/2019 Formation Arduino Tutoriel

    47/119

     

    :a ommuniation ave l*environnement analogi'ue e>térieur

    Lire une in,ormation analogique 9 partir d#unpotentiom!tre

    1- esri#tionLe potentiomtre peut se présenter sous différentes formes. /l est utilisé pour fournir unevaleur de résistance variale, en général, pour effectuer des réglages dans un circuit donné.Boici les différentes représentations d'un potentiomtre:

    Figure "9 - =e#résentations sm$oli'ues d*un #otentiomtre

    Figure "% - i33érents t#es de #otentiomtres

    La valeur d'un potentiomtre fournit une valeur qui peut varier entre A et ?a ohms, ?aétant la valeur maimale du potentiomtre.

    2- Conne>ions

  • 8/19/2019 Formation Arduino Tutoriel

    48/119

    Figure +0 - !éma de onne>ion ave un #otentiomtre

    Remarque: raouter une capacité de découplage de A.! microfarad entre la masse et le]#volts.

    "- rogrammeint sensorVal = 0; Déclaration de la variable sensorVal

    pour accueillir La valeur analogique.

    void setup(){ -Début de la fonction setup()

      Serial.begin(9600); Initialiser la vitesse d'échange avecle moniteur à 9600 bauds

    } -Fin de la fonction setup()

    void loop() { +Début de la fonction loop()

     sensorVal = analogRead(A0); La fonction analogRead() lit la valeurde la tension affichée sur la pin A0,

    la convertit et la stocke dans la

    variable sensorVal.

     Serial.print("Sensor = "); Affichage de "Sensor = "

     Serial.println(sensorVal, DEC); suivi de la valeur en décimal de la

    variable sensorVal.

     delay(10); Temporiser 10 ms, et retour au débutde la boucle 'loop'. 10 ms est

    considéré suffisant pour permettre à 

    la conversion A/D de se faire

    correctement.

    } +Fin de la fonction loop().

    Remarques:!8 La valeur fournie par la fonction analogRead() fournit une valeur entre A et !A&$ (larésolution du convertisseur analogiquenumérique étant de !A its, A correspond 3 unetension de A volt et !A&$ correspond 3 # volts qui est la source d'alimentation de l'arduino).&8 >ans l'instruction +erial.println(sensorBal, >44< sert 3 préciser que lavaleur de sensorBal est affichée en décimal. /l eiste d'autres options 3 la place de >4

  • 8/19/2019 Formation Arduino Tutoriel

    49/119

  • 8/19/2019 Formation Arduino Tutoriel

    50/119

    *rogrammation

    Le test des e$pressionsvant de faire l'eercice suivant, nous allons décrire comment arduino effectue des tests enfaisant des comparaisons. 0our tester une variale par rapport 3 une autre, le programme

    utilise l'instruction suivante:if (variale! opYrelation variale&) M

    instructions...Nelse M

    autres instructions ...N

    opYrelation est l'opérateur qui peut avoir l'une des relations suivantes:OO galO >ifférent

    ` /nférieur   +upérieur  `O inférieur ou égalO supérieur ou égal

    4emple:if (sensBal &AA)M

    allumer la L4> rougeNelseM

     allumer la L4> verteN 5ote: la partie else MN est optionnelle.

    Exercices

    !8 Eaire le programme qui affiche les nomres entiers de A 3 #, en décimal, headécimal, inaire et octal. Utiliser le moniteur pour voir les résultats.&8 Eaire le montage avec un potentiomtre de !A F  et & L4>s (verte et rouge) et le programme pour allumer la L4> verte si la valeur de tension fournie par le potentiomtre(provenant du curseur) est inférieure 3 &.# volts sinon allumer la L4> rouge.;n considre que le potentiomtre est alimenté en # volts. Utiliser le moniteur pour vérifierla logique du programme.

  • 8/19/2019 Formation Arduino Tutoriel

    51/119

    Lire une in,ormation analogique9 partir d#un capteur pié6o-électrique

    1- esri#tion

    Figure +1 - Ca#teur #ié8o-életri'ue

    2- Conne>ions

    Figure +2 - !éma de onne>ion arduino - a#teur #ié8o-életri'ue

    "- rogramme

  • 8/19/2019 Formation Arduino Tutoriel

    52/119

    int analogPin = A0;

    int sensVal = 0;

    const int seuil = 500;

    void setup(){

    Serial.begin(9600);

    }

    void loop(){

    sensVal = analogRead(analogPin); // read the voltage on pin A0

    if (sensVal > seuil) { // compare with threshold

    Serial.print("Valeur lue = ");

    Serial.println(sensVal, DEC);

    }

    delay(10); // délai pour la conversion A/D

    }

    Exercices

    !8 >écrire le programme de lecture du capteur piéo8électrique&8 Eaire le montage contenant le capteur piéo8électrique et un potentiomtre et écrire le

     programme pour régler le seuil 3 l'aide du potentiomtre et allumer la led (pin >!$) si lavaleur du capteur dépasse ce seuil. Bérifier avec le moniteur série.

  • 8/19/2019 Formation Arduino Tutoriel

    53/119

    Lecture de la .aleur d#une photorésistance(capteur de lumi!re"

    1- esri#tionLa photorésistance (L>R: Light >ependant Resistance) agit comme un capteur de lumire.4lle agit comme une résistance variale, selon l'intensité de lumire au lieu oX elle esteposée. 4lle fournit une grande valeur de résistance lorsqu'il fait somre et une failerésistance en présence de lumire.4lle peut 2tre utilisée par eemple pour allumer une lampe lorsque la nuit tome.Les valeurs de résistance otenues dépendent du modle de photorésistance. /l est nécessairede vérifier en faisant des tests.

    Figure +" - Une ellule #!otoéletri'ue (#!otorésistane)

    2- Conne>ionsLa tension sur la pin analogique ! (eemple) peut 2tre convertie par arduino 3 travers son> convertisseur. La valeur numérique qui en résulte va se situer entre &AA si la lumire estfaile et "AA environ si la lumire est rillante. Reste 3 epérimenter.

    Figure ++ - Conne>ion d*un a#teur de lumire

  • 8/19/2019 Formation Arduino Tutoriel

    54/119

    "- rogrammeRemarque: Eaire l'essai avec une résistance de !AF puis avec une résistance de !F.

    int alIoid setu&() L  /erial.egin(#$$)I 99 setu& serialNoid loo&() L  al H analog0ead(A$)I 99 lire la &in A$  /erial&rintln(al)I 99 aOc+er P l'écran  delaE(1$$)IN

    $utre essai399 in de la +oto-0ésistanceint lig+tin H $I 99 analog &in de la &+oto-résistance99 in de la 4%int ledin H I 99 la &in de la 4% nous utilisons le mode;M (&ulse

  • 8/19/2019 Formation Arduino Tutoriel

    55/119

    lig+t4eel H ma&(lig+t4eel! 7$! $$! 2! $)Ianalog;rite(ledin! lig+t4eel)I

    N

     Autre o"e "essai

    const int led0inO!$Pconst int sensor0in O AP

    int levelP la variale qui va contenir le niveau de lumire mesuré

    const int thresholdO"AAP +euil préconfiguré. +i ` "AA, la L4> doit 2tre mis 3 ;5

    void setup() M

     pin?ode (led0in, ;U@0U@)P pin?ode (sensor0in, /50U@)P+erial.egin(%DAA)P

    N

    void loop() Mlevel O analogRead(sensor0in)P lire la mesure (pin A)if (level threshold) M

    digitalIrite(led0in, Q/Q)P si le niveau ` seuil, allumer la L4>N

    else M digitalIrite(led0in, L;I)P sinon éteindre la L4>

    Ndela*(!AA)P

    N

  • 8/19/2019 Formation Arduino Tutoriel

    56/119

     

    Contr/ler un circuit par modulation de largeur d#impulsion(*0:; *ulse 0idth :odulation"

    1- esri#tionrduino peut contr9ler un circuit analogique. 5ous pouvons utiliser la fonctionanalogIrite(pin, valeur), ou pin est un numéro de pin parmi $, #, D, %, !A, !! sur rduinoUno ou parmi & 3 !$ sur rduino ?ega.

    /odle dDArduino ue & 3 !$

    ero & 3 !$

    Le paramtre valeur n'est autre que le rapport de c*cle égal entre A et # correspondant 3 unrapport compris entre A et !AAj.4n somme cette fonction produit un signal 0I? (0ulse Iidth ?odulation) modulation delargeur d'impulsion.0ar eemple, la valeur 3 appliquer pour un rapport c*clique de C#j sera égal 3 A,C# # O!%!.B O Rapport c*clique #

    Boici quelques cas de figure montrant un signal 0I?:• A correspondant 3 un rapport de c*cle de Aj• DH correspondant 3 un rapport de c*cle de j• !&C correspondant 3 un rapport de c*cle de #Aj• !%! correspondant 3 un rapport de c*cle de C#j• # correspondant 3 un rapport de c*cle de !AAj

  • 8/19/2019 Formation Arduino Tutoriel

    57/119

    Figure +, - uel'ues 3ormes de signau> 5/

    La fréquence du signal 0I? est prédéterminée sur l-rduino. La fréquence n-est pas lam2me selon les roches. +ur le Uno, la fréquence est de +%078 sur les roches " % 10 et 11 et de %9078 sur les roches , et 6. 5ous verrons cela en vérifiant avec un anal*seur logique.

    2- Conne>ions...

    "- rogrammeBoici un programme qui montre la forme d'un signal sur une sortie 0I? de l'arduino. ;n va prendre la pin # dans cet eemple.

    const int analog0in O #Pconst int dela* O !AAAPvoid setup() M

    +erial.egin(%DAA)PNvoid loop() M

    for (int i O AP i`O#P i]]) ManalogIrite(analog0in, i)P tester cette pin en ranchant un voltmtre+erial.println(i)Pdela*(dela*)P

  • 8/19/2019 Formation Arduino Tutoriel

    58/119

    NanalogIrite(analog0in, A)Pdela*(&AAA)P

    N

    utre séquence 3 tester:

    const  *te pin>4L O $P *te luminosite O AP peut varier de A 3 #

    void setup(){" void loop(){  analog8rite(pinGH, lu2inosite);  lu2inosite;  dela%(=);"

    Exercices

    !8 sur la pin # par eemple. crire le programme pour moduler l'intensité lumineuse de la L4>. /dentique au programme précédent. 5e pasoulier la résistance de limitation de courant.

    $8 @ester le programme suivant:const int pinL4> O %P

    int i O APvoid setup() M

    Nvoid loop() M

    for (i O AP i ` #P i]]) ManalogIrite(pinL4>, i)Pdela*(!A)P

    Nfor (i O #P i AP i88) M

    analogIrite(pinL4>, i)P

    dela*(!A)PNN

    http://www.locoduino.org/geshi/redirect.php?language=arduino&search=analogWritehttp://www.locoduino.org/geshi/redirect.php?language=arduino&search=delayhttp://www.locoduino.org/geshi/redirect.php?language=arduino&search=analogWritehttp://www.locoduino.org/geshi/redirect.php?language=arduino&search=delay

  • 8/19/2019 Formation Arduino Tutoriel

    59/119

    Commander un haut-parleur 

    1- esri#tion

    2- Conne>ionsttacher la pin >" de l'arduino avec une orne de la résistance de !oP l'autre orne de cetterésistance est attachée 3 une orne du haut8parleur et l'autre orne du Q0 mise 3 la masse(5>), tel que c'est dessiné sur le schéma suivant:

    Figure +6 - !éma de onne>ion arduino ave 7 (+0 o!ms et #lus)

    Figure +. - Conne>ion ave un 7 de 9 o!ms

     5ous allons commander le haut8parleur pour lui faire ouer les notes suivantes:• < O &D& Q• > O &%H Q• 4 O $$A Q

  • 8/19/2019 Formation Arduino Tutoriel

    60/119

    • O $%& Q• O HHA Q

    "- rogrammeconst int tone>uration O !APconst int hp0in O "P ou pin >& selon le cas

    int tones^_ O M&D&, &%H, $$A, $%&, HHANP taleau de fréquences

    void setup() M...Nvoid loop() M

    for (int sensBal O AP sensBal ` #P sensBal ]]) Mtone(hp0in, tones^sensBal_, tone>uration)P

    NN

  • 8/19/2019 Formation Arduino Tutoriel

    61/119

    Commander une LED 1 R= dispose 3 l'intérieur de $ L4>s rouge (R), vert (B), leu (=).Leur cominaison des intensités lumineuses va offrir une multitude de couleurs.

     Figure +9 - ins d*une :E =G< et ouleurs =G<

    2- Conne>ionsRemarque:+i la L4> R= est 3 anode commune, connecter la pin < au #voltsP si elle est 3 cathodecommune connecter8la 3 la masse (5>).Les autres pins de la L4> seront connectées 3 $ pins 0I? de l'arduino (ne pas oulier de rancher la résistance pour chaque diode).4emple: les pins de conneion sont- in 3 de l'arduino connectée P la &in 0 (0ed) de la 4%- in connectée P la &in (reen) de la 4%- in # connectée P la &in (lue) de la 4%% connectée P la &in la C (Common) de la 4% si elle est de tE&ecat+ode sinon connecter le Solts P la &in C

  • 8/19/2019 Formation Arduino Tutoriel

    62/119

    Figure +% - Conne>ion ave une :E =G<

    "- rogrammevoid setup() {  ## dJ-larer le port sJrie ave- une vitesse de 9!! bauds  Serial.begin(9!!);  ## dJ-larer les pins de -o22ande des HGs en

  • 8/19/2019 Formation Arduino Tutoriel

    63/119

    int BeadEro2Konsole() {/ile ( Serial.available()7$! ) {"

      return Serial.read();"

    Cas du ,ade-in ,ade-out

    7erie aites varier lintensit lumineuse "e ha:ue -D (en allant "e 0 ; 255 puis "e255 ; 0) ave un "lai "e 20 ms entre ha:ue variation< %n"iation programmer 3 boulesor pour le a"e=in et 3 boules or pour le a"e=out

  • 8/19/2019 Formation Arduino Tutoriel

    64/119

    Commander un a,,icheur digital 9 = segments

    1- esri#tionL'afficheur dispose de C L4>s (segments lumineu)P il peut 2tre de t*pe décimal (A 3 %) ouheadécimal (A 3 E), selon sa référence.

    L'afficheur peut se présenter soit avec une cathode commune, soit avec une anode commune.

    Figure ,0 - :*a33i!eur @ . segments

    2- Conne>ions

    Figure ,1 - Conne>ion @ un a33i!eur . segments (at!ode ommune)

    Remarque: utiliser une résistance de &&A ohms pour le courant des L4>s.

  • 8/19/2019 Formation Arduino Tutoriel

    65/119

    "- rogrammeLe taleau suivant représente les différentes valeurs (en headécimal) qui correspondent 3l'affichage des nomres headécimau (A 3 E).

    .igit $.E&9

    $ . E & 9

    " $7 1 1 1 1 1 1 $1 $3$ $ 1 1 $ $ $ $% $#% 1 1 $ 1 1 $ 1 $7 1 1 1 1 $ $ 14 $33 $ 1 1 $ $ 1 15 $ 1 $ 1 1 $ 1 16 $* 1 $ 1 1 1 1 1: $7$ 1 1 1 $ $ $ $- $7* 1 1 1 1 1 1 1; $7 1 1 1 1 $ 1 1$ $"77 1 1 1 $ 1 1 1 $"1* $ $ 1 1 1 1 1 $"5 1 $ $ 1 1 1 $

    . $"3% $ 1 1 1 1 $ 1E $"5* 1 $ $ 1 1 1 1& $"57 1 $ $ $ 1 1 1

    =its représentant les chiffres A8% (ase décimale)const *te numeral^!!_ O M

    =!!!!!!AA, A=A!!AAAAA, !=!!A!!A!A, &=!!!!AA!A, $=A!!AA!!A, H=!A!!A!!A, #=AA!!!!!A, D=!!!AAAAA, C=!!!!!!!A, "=!!!AA!!A, %=AAAAAAAA, pas d'affichage

    NP

    Les pins (a8g) de l'afficheur C segments connectées sur les pins correspondantes de l'arduino :const int segment0ins^"_ O M #, ", %, C, D, H, $, & NP

    void setup() Mfor (int i O AP i ` "P i]]) M

     pin?ode(segment0ins^i_, ;U@0U@)PN

    Nvoid loop() M

    for (int i O AP i `O !AP i]]) MshoG>igit(i)P

  • 8/19/2019 Formation Arduino Tutoriel

    66/119

    dela*(!AAA)P laisser un délaiNdela*(&AAA)P un autre délai

    N

    void shoG>igit (int numer) M

     oolean is=it+etPfor (int segment O !P segment ` "P segment]]) Mis=it+et O itRead(numeral^numer_, segment)P itRead lit le it 'segment' du

    nomre  digitalIrite(segment0ins^segment_, is=it+et)P  NN

  • 8/19/2019 Formation Arduino Tutoriel

    67/119

    Commander une arrette de > a,,icheurs 9 = segments

    1- esri#tion 5ous allons décrire le module de H afficheurs 3 C segments et sa mise en kuvre avecl'arduino. /l peut 2tre utilisé comme support d'information numérique./l est représenté par la figure ci8dessous (Eigure #&).

    Figure ,2 - in 1 et segments du module 7+20"61H-"2

    2- Conne>ion0our mettre en kuvre le module, nous devons avoir le diagramme des pins (pinout) ainsi quela disposition des segments.

    Figure ," - esri#tion des #ins du module 7+20"61H-"2

    >'aprs le schéma, le module est con1u avec des diodes 3 cathode commune. //@ !), % (>//@ &), (>//@ $) et D (>//@ H)P donc elles doivent 2tre mises 3 lamasse. Les pins !! (), C (=), H (), ! (4), !A (E), # () et $ (>0) seront utilisés pourallumeréteindre les différents segments. La pin >0 (decimal point) est le point décimal.

    "- rogramme4ssa*er le programme précédent (pour un seul afficheur). ?odifier le code pour l'adapter aumodule. llumer le module afficheur par afficheur.

  • 8/19/2019 Formation Arduino Tutoriel

    68/119

    Capturer l#intensité lumineuse9 l#aide d#un capteur de lumi!re

    1- esri#tion 5ous allons utiliser une photorésistance. +on r9le est de capter la lumire et de fournir sonintensité sous forme de tension analogique entre A et # volts.

    Figure ,+ - !otorésistane et son sm$ole életri'ue

    2- Conne>ion;n utilise un pont diviseur constitué d'une résistance de !A o et d'une photorésistance. Uneetrémité de la résistance de !A o est reliée au ]# volts du montageP l'autre etrémité estreliée 3 la pin A de l'arduino (entrée analogique). La photorésistance relie une orne 3 lamasse (5>) et l'autre orne 3 la pin A. ion ave une ellule #!otoéletri'ue

  • 8/19/2019 Formation Arduino Tutoriel

    69/119

    "- rogramme de testconst *te photo0in O APconst *te led0in O %Pint intensitePvoid setup() M

     pin?ode(led0in, ;U@0U@)P

    Nvoid loop() M  intensite O analogRead(photo0in)P ;n lit la valeur sur la pin A (entre A et !A&$)  intensite O map(intensite, A, %AA, A, #)P ;n transforme la valeur 8 domaine A..#  intensite O constrain(intensite, A, #)P ;n garantit que la valeur otenue est valide  analogIrite(led0in, intensite)P ;n contr9le la L4>N

    E>eries?!8 Bérifier en utilisant le moniteur de l'arduino. Utiliser la iliothque +erial.

  • 8/19/2019 Formation Arduino Tutoriel

    70/119

    Contr/ler le ni.eau d#humidité et la température amiante(capteur DH%22)DH%33"

    1- esri#tionLes capteurs >Q@ sont utilisés pour mesurer la température amiante et le tau d'humidité./ls contiennent 3 l'intérieur un convertisseur analogiquedigital, et fournissent en parallle lesvaleurs de température et d'humidité.

    /l * a deu versions de ce capteur. Boici les différences:7I11 7I22

    Range d'humidité &Aj8"Aj(#j)

    Aj8!AAj(&j)

    @empérature A8#A<(&

  • 8/19/2019 Formation Arduino Tutoriel

    71/119

    "- rogrammeLe programme suivant utilise le capteur >Q@!!:

    binclude [>[email protected][ Utiliser la lirairie >Q@bdefine >ht0in & La pin 'data' du >Q@&& (pin digitale) Utiliser le on >Q@(!!&&)

    bdefine >Q@@04 >Q@!! >ans l'eemple, on utilise le >Q@ &&bdefine >Q@@04 >Q@&& >Q@ && (chip ?&$A&)bdefine >Q@@04 >Q@&! >Q@ &! (chip ?&$A!)

    /nitialiser le >Q@&&>Q@ dht(>ht0in, >Q@@04)P

    void setup() M+erial.egin(%DAA)P+erial.println([>Q@ test[)P

      dht.egin()P

    N

    void loop() M  ttendre un instant entre & mesures: Le capteur est un relativement lent  dela*(&AAA)P  float h O dht.readQumidit*()P  float tc O dht.read@emperature()P Lire la température en

  • 8/19/2019 Formation Arduino Tutoriel

    72/119

    Contr/ler un relais 9 tra.ers un transistor 

    1- esri#tionL'arduino n'est pas capale de contr9ler des charges qui demandent de fortes intensités decourant, comme un relais, une oine, un moteur, etc..

     5ous devons alors utiliser un transistor car il est fait entre pour amplifier le courant en luifournissant un courant trs faile.L'arduino est capale de fournir sur sa pin un courant allant usqu'3 HA m. Le relais utiliséest de t*pe >0>@.+chéma du relais:8888888888

    Figure ,9 - !éma d*un transistor et son sm$ole életri'ue

    2- Conne>ions 5ous utilisons un transistor ien connu sur le marché, le &5&&&&.+on p9le émetteur est relié 3 la masse (5>), sa ase est relié 3 la pin >& de l'arduino 3travers une résistance de &.& ;hms. +on p9le collecteur est une orne de la oine du relais.L'autre orne de la oine est reliée au ]# volts du montageP une diode de protection !5HAA!est placée entre les ornes de la oine.Les & sorties du relais sont utilisées pour commander la charge. 0lacer & L4> connectées 3 &résistances pour vérifier l'action du relais.

    "- rogrammeconst *te led0in O &P la pin qui commande le transistor void setup() M

     pin?ode(led0in, ;U@0U@)PNvoid loop() M

    digitalIrite(led0in, Q/Q)P

    dela*(#AA)PdigitalIrite(led0in, L;I)Pdela*(#AA)P

    N

  • 8/19/2019 Formation Arduino Tutoriel

    73/119

     

    Contr/ler un a,,icheur 9 = segments

    1- esri#tion

    Un afficheur C segments dispose de L4>s sous forme de segments appelés a, , c, d, e, f, g,dp.

    Figure ,% - A33i!eur en iruit intégré

    Figure 60 - =e#résentation d*un a33i!eur digital 

    /l peut se présenter sous & formes: l'afficheur 3 anode commune ou 3 cathode commune.

    0our calculer la valeur des résistances 3 insérer dans les sorties a c d e f g dp,on peut utiliser cette simple formule:\ O (B !,#) A,A!D4emple:0ar conséquent, si on veut allumer un afficheur avec une tension de H,# volts, on doit utiliser" résistances de:

    (H,# !,#) A,A!D O !"C,# \ &AA \ ou !"A \.

    2- Conne>ions

    "- rogramme

    int iPvoid setup() M

  • 8/19/2019 Formation Arduino Tutoriel

    74/119

     pin?ode(", L;I)Pfor (iOAP i Pi]])

     pin?ode(i, Q/Q)PNvoid loop() M

    unsigned int Led0ins^_ O

    for(iOAP i !DP i]]) M0;R@> O Led0ins^i_P

    NN

  • 8/19/2019 Formation Arduino Tutoriel

    75/119

    Contr/ler plusieurs a,,icheurs 9 = segments 9 la ,ois

    1- esri#tion

    2- Conne>ions

    "- rogramme[ refaire/*

    Eas' -a' to control " segment #ispla's &' r#uino

    >tefan :ermann

     ---.frit2ing.org

     ????????? ????????? ????????? ????????? /????a????@ /????a????@ /????a????@ /????a????@A A A A A A A A A A A A A A A AAfA A&A AfA A&A AfA A&A AfA A&AA A A A A A A A A A A A A A A A@?/???????@?/ @?/???????@?/ @?/???????@?/ @?/???????@?/ ?A???g???A? ?A???g???A? ?A???g???A? ?A???g???A?/ @ / @ / @ / @ / @ / @ / @ / @

    A A A A A A A A A A A A A A A AAeA AcA AeA AcA AeA AcA AeA AcA@?/???????@?/ ?? @?/???????@?/ ?? @?/???????@?/ ??@?/???????@?/ ?? @????#????/ AD0A @????#????/ AD0A @????#????/ AD0A @????#????/AD0ADigit B Digit Digit ! Digit +*/

    const int num&er6f>egments 4 // #o not changeint segment0insCnum&er6f>egments 1!,,B,,%,",4,8 //

    change to 'our pins a,&,c,#,e,f,g,D0const int num&er6fDigits B // change to the num&er of#igitsint common0insCnum&er6fDigits 1+,+!,++,+$8 // change tothe pins of #igits starting -ith the left #igit

    int #ispla'T'pe+ // change to the t'pe of 'our #ispla'common ano#e + common catho#e !

    int m'Gum&er$

  • 8/19/2019 Formation Arduino Tutoriel

    76/119

    int theFiguresC++C"11+,+,+,+,+,+,$8,1$,+,+,$,$,$,$8,1+,+,$,+,+,$,+8,1+,+,+,+,$,$,+8,

    1$,+,+,$,$,+,+8,1+,$,+,+,$,+,+8,1+,$,+,+,+,+,+8,1+,+,+,$,$,$,$8,1+,+,+,+,+,+,+8,1+,+,+,$,$,+,+8,1$,$,$,$,$,$,+88

    voi# setup() 1// config for the #ispla'for (int i$ i3num&er6f>egments i55)1

    pino#e(segment0insCi,67T07T)8for (int i$ i3num&er6fDigitsi55)1

    pino#e(common0insCi,67T07T)8// t'pe 'our setup co#e here

    8

    voi# loop()1// t'pe in 'our loop co#e here// this is Hust for the eample

    sho-Gum&er(m'Gum&er) // #ispla' the num&erif ( m'Gum&er55

    #ela'(+)8

    // #o not change the metho#s &elo-voi# sho-Gum&er(int theGum&er) 1

    for (int stellenum&er6fDigits stelle

  • 8/19/2019 Formation Arduino Tutoriel

    77/119

    #igit(((num&er6fDigits=+)=(stellen=(stelle5+))),$)

    88#ela'(+)clearDispla'()

    88

    oid digit(int t+e%igit! int t+eum.er) LiJ (dis&laETE&eHH1) L

    digital;rite(commoninst+e%igitV! KK)IJor (int iH$I iW7I iSS) L

    iJ (t+e*igurest+eum.erViV HH $) Ldigital;rite(segmentinsiV!KK)I

    N else Ldigital;rite(segmentinsiV!4;)I

    NNN else L

    digital;rite(commoninst+e%igitV! 4;)IJor (int iH$I iW7I iSS) L

    digital;rite(segmentinsiV!t+e*igurest+eum.erViV)IN

    NN

    oid clear%is&laE() LJor (int t+e%igitH$I t+e%igitWnum.erJ%igitsI t+e%igitSS) LiJ (dis&laETE&e HH 1) L

    digital;rite(commoninst+e%igitV! 4;)IJor (int iH$I iW7I iSS) L

    digital;rite(segmentinsiV!KK)IN

    N else Ldigital;rite(commoninst+e%igitV! KK)IJor (int iH$I iW7I iSS) L

    digital;rite(segmentinsiV!4;)I

    NN

    NN

  • 8/19/2019 Formation Arduino Tutoriel

    78/119

     IEC7NUE AANCJE

    *rogrammation

    'tilisation du s8st!me d#interruption de l#arduino

    Le s*stme d'interruption de l'arduino permet de laisser le programme effectuer la tche principale normalement puis lorsqu'un évnement ien défini survient alors la tche principale est interrompue pour effectuer la tche d'interruption.

    1- esri#tionLe montage suivant va nous permettre d'epliquer comment nous mettons en kuvre les*stme d'interruption de l'arduino. Les pins >& et >$ sont aussi utilisées pour la mise enkuvre des interruptions.Le fonctionnement: l'arduino va allumer les L4>s une 3 une puis les éteindre une 3 une, demanire continue (loop). pendant # sec puis la tche principale reprend son eécution.

    2- Conne>ions 5ous disposons d'un outon8poussoir +! relié 3 la pin >&. L'autre orne du outon estraccordée au ]# volts du montage. La pin >& est aussi rattachée 3 une résistance dont l'autre orne est raccordée la masse. 5ous pla1ons ausi # Leds (ou moins, selon la disponiilité deséléments) comme il est montré dans la figure ci8dessus.

     Figure 61 - /ise en Kuvre du sstme d*interru#tion

    "- rogramme *te led@a^_ O M", %, !A, !!, !&)NP utilisation d'un taleau d'éléments *te ctPconst *te timer O !AAP

  • 8/19/2019 Formation Arduino Tutoriel

    79/119

    const int silence O !AAAPvoid setup() M

    +erial.egin(%DAA)Pfor(ct OAP ct `#P ct ]]) M

     pin?ode(led@a^ct_, ;U@0U@)PN

    attach/nterrupt(A, actionYp, R/+/5)PNvoid loop() M

    for(ctOAP ct`#P ct]]) MdigitalIrite(led@a^ct_, Q/Q)Pdela*(timer)P

    Ndela*(silence)P

    Nvoid actionYp() M séquence d'interruption

    +erial.println([=0 appu*e...[)Pfor(ctOAP ct`#P ct]]) M

    digitalIrite(led@a^ct_, L;I)Pdela*(timerS#)P

    NN

  • 8/19/2019 Formation Arduino Tutoriel

    80/119

    A,,icher des données sur écran LCD

    1- esri#tionL'arduino peut afficher du tete et des valeurs numériques sur un écran 3 cristau liquides(L: Liquid ispla*).

     5ous allons utiliser notre circuit qui est le L !DA&. /l peut afficher & lignes de !Dcaractres. >'autres écrans L peuvent afficher H lignes de !D caractres. >'autres peuventafficher du graphique.

    Figure 62 - Jran :C 1602

    @out afficheur L Q>HHC"A8 or F+AADD8compatile a*ant la compatiilité avec Q>HHC"Aou F+AADD peut 2tre utilisé avec l'arduino. 5ous allons montrer comment l'arduino peut communiquer avec le L!DA& pour faire del'affichage numérique.

    Figure 6" - =e#résentation des aratres #ar matrie de #oints

  • 8/19/2019 Formation Arduino Tutoriel

    81/119

    Bo*ons la matrice du caractre :

    A A AA AA A

    A A A A AA AA AA A

    Figure 6+ - =e#résentation du aratre A

    Figure 6, - =e#résentation d*une matrie @ :E

    4n (a) nous vo*ons les différents points de luminosité. 4n () la matrice est représentée parun ensemle de diodes luminescentes.4emple: +i la Led située 3 l'intersection de la ligne $ et de la colonne $ est parcourue par uncourant (de l'anode vers la cathode), cette Led va s'illuminer.

    2- Conne>ionsBoici le pin out (rochage) du module L!DA&.

  • 8/19/2019 Formation Arduino Tutoriel

    82/119

    Figure 66 - ins du :C1602

    La pin BA du L va nous permettre de régler le contraste de l'afficheur, 3 l'aide d'un potentiomtre de !A o.

  • 8/19/2019 Formation Arduino Tutoriel

    83/119

    Figure 6. - Conne>ion ave un éran :C

    "- rogramme de testbinclude ̀ Liquid

  • 8/19/2019 Formation Arduino Tutoriel

    84/119

    lcd.egin(!D, &)P L de & lignes de !D caractreslcd.clear()P effacer l'écran

    Nvoid loop() M

    lcd.set'autres fonctions L peuvent 2tre utilisées. comme:8 lcd.lin() pour faire clignoter l'écran8 lcd.nolin() arr2ter le clignotement8 lcd.clear() effacer l'écran8 lcd.no>ispla*()8 lcd.displa*()8 lcd.scroll>ispla*Right()8 lcd.scroll>ispla*Left()

    ;n peut aussi créer ses propres caractres en utilisant la fonction lcd.create

  • 8/19/2019 Formation Arduino Tutoriel

    85/119

    Conne$ion du LCD par inter,ace I3C

    1- esri#tion

    Le module d'affichage L peut aussi 2tre contr9lé par une interface de t*pe / &< qui est lesigle d'/nter8/ntegrated ion

    L'arduino communique avec les modules /&< par les roches +> et +

  • 8/19/2019 Formation Arduino Tutoriel

    86/119

      if (address`!D)  +erial.print([A[)P  +erial.print(address, Q4K)P  +erial.println([ [)P 

    n>evices]]P

      N  else if (error OO H)  M  +erial.print([4rreur inconnue 3 l'addresse A[)P  if (address`!D)  +erial.print([A[)P  +erial.println(address, Q4K)P  N

    N  if (n>evices OO A)  +erial.println([0as de module /&< trouvén[)P  else  +erial.println([;n[)P 

    dela*(#AAA)P pause de # secondes avant le prochain scan  N

    $) rogramme de test du module :C ave 2C

     5ote: Utiliser la lirairie Liquid

  • 8/19/2019 Formation Arduino Tutoriel

    87/119

    A,,ichage d#un nomre sur LCD2?@3/l eiste un paramtre dans la fonction d'affichage sur L, selon le t*pe d'information 3afficher c'est838dire décimal, inaire, headécimal.a- fficher un nomre réel, on utilise la fonction 'print' de la lirairie Liquid

  • 8/19/2019 Formation Arduino Tutoriel

    88/119

    Connecter un cla.ier 9 2? touches

    1- esri#tionLe clavier 3 !D touches se présente sous forme de matrice composée de lignes et de colonnesP3 l'intersection de chaque ligne et de chaque colonne il * a une touche qui laisse ou pas

     passer le courant. >onc lorsqu'un un courant est envo*é sur une ligne, on va vérifier s'il se propage sur l'une des colonnes de la matrice. +'il n'* a pas de courant cela signifie que latouche correspondante n'a pas été appu*ée. +i par contre on récupre le courant, donc latouche a été appu*ée 3 cet endroit.

    2- Conne>ions

    Les pins ! 3 H représentent les lignesP les pins # 3 " représentent les colonnes de lamatrice.

    Pins du clavierLigne (L)

    Colonne (C)

    Connexions avec

    l'arduino

    1 L1 D9

    2 L2 D8

    3 L3 D7

    4 L4 D6

    5 C1 D5

    6 C2 D4

    7 C3 D3

    8 C4 D2

    Ia$leau 1 - E>em#le de onne>ion d*un lavier

  • 8/19/2019 Formation Arduino Tutoriel

    89/119

    "- rogramme

    Le programme d'essai utilise la lirairie e*pad (3 doGnloader 3 partir de itQu:http:pla*ground.arduino.cccodee*pad).

    /> $atrie ?7? onnete ; Ar"uino-e o"e aihe la valeur "e la touhe sur la onsole >/

    @inlu"e Be.pa"

  • 8/19/2019 Formation Arduino Tutoriel

    90/119

     

    Les protocoles d#échange I3C et IS*

    I- Le protocole I3C

    la fin des années !%CA, la compagnie 0hilips (maintenant devenue 5K0) avait vu lanécessité de simplifier et standardiser les échanges de données entre les différents circuitsintégrés dans leurs produits. Le us /&< fut inventé, et réduisait le nomre de lignesnécessaires 3 seulement deu lignes, +> 8 +erial >ta, et +e nouvelles spécifications sont nées pour améliorer la vitesse de communication. >'aordun East ?ode 3 HAA its, puis un East ?ode plus (E?]) 3 ! ?its. >epuis !%%", il * a uneversion Qigh +peed 3 $,H ?its. Le déit maimal possile via un us /&< est spécifié dansl'Ultra East mode 3 # ?its, mais avec un fonctionnement un peu particulier.

  • 8/19/2019 Formation Arduino Tutoriel

    91/119

      chaque périphérique sur le us /&< est adressale, avec une adresse unique pour chaque périphérique du us P  le protocole /&< gre le fonctionnement multi8maZtre (multi8master), plusieurs périphériques maZtres peuvent prendre simultanément le contr9le du us (s*stme d'aritragedes maZtres et gestion des collisions).

    La distance maimale maZtre8esclave pour un us /

    &

    < est d'environ un mtre et dépend de plusieurs facteurs comme la capacité électrique du us ou le déit de transmission. et +

  • 8/19/2019 Formation Arduino Tutoriel

    92/119

  • 8/19/2019 Formation Arduino Tutoriel

    93/119

    *ro7ets 9 réaliser 

    *2+

    Réaliser un circuit ainsi que le programme qui répondent au spécifications suivantes.! 5ous aurons esoin du matériel suivant:

    • Un clavier de !D touches• Un écran L !DA&• Un capteur de lumire• Un capteur de température et d'humidité• Un module R@< >+!$AC• Un contr9leur arduino

    & Le programme va fonctionner comme suit:• L'écran L affichera la température lorsque la touche est appu*ée• L'écran L affichera l'humidité lorsque la touche = est appu*ée• L'écran L affichera l'intensité de lumire lorsque la touche < est appu*ée• L'écran L affichera la date et l'heure lorsque la touche > est appu*ée

  • 8/19/2019 Formation Arduino Tutoriel

    94/119

    &otions d#électricitéUn montage électrique a touours esoin d'une source d'alimentation qui fournit une tensionet l'intensité du courant.4emple: une atterie % volts fournit une tension de % volts et &AAmhV.0our faire fonctionner un circuit électrique il faut l'alimenter.

    >ans le cas de l'arduino, il est possile de l'alimenter soit en utilisant:8 une atterie de % volts8 un adaptateur électrique8 0< 3 travers un us U+=La plaquette arduino va convertir la source de tension en:8 ]# volts8 ]$.$ voltsL'arduino U5; fonctionne en # volts. >'autres plateformes fonctionnent en $.$ volts. La plaquette arduino produit du $.$ volts pour pouvoir s'interfacer avec des cartes alimentées en$.$ volts. 4emple: module =luetooth Q?!A, module Gifi 4+0"&DD, etc.

    2" La résistanceLa résistance est un composant qui permet de limiter le courant qui circule dans le circuitélectrique. 4emple: la Led nécessite seulement environ &Am. +i on la ranche directemententre les ornes de la atterie de % volts, elle va se détruire. 0our éviter de l'endommager,nous pla1ons une résistance pour ne laisser passer que &Am. 5ous devons calculer la valeur de la résistance R. 5ous utilisons la loi d';hm dont laformule est la suivante: B O R /. La tension B (en volts) est proportionnelle au produit de larésistance R (en ohms) et de l'intensité du courant / (en ampres) qui traverse le circuit.

    a- Schéma et s8moles

     Figure .0 - =e#résentation lassi'ue de la résistane

    Figure .1 - Une autre 3orme de résistane sous 3orme de !i#

  • 8/19/2019 Formation Arduino Tutoriel

    95/119

    Figure .2 - :e ode ouleur des résistanes 

    Figure ." - =ésistane de +.0 o!ms

    Le circuit (Eigure C!) représente une résistance de !A!A$\ O !A\. 0our plus de détails surce t*pe de résistance (appelées résistances +?>), il est préférale de se référer 3 la norme4/8%D.

    c- calcul de résistance a.ec B andes

    ;n utilise le taleau suivant:

  • 8/19/2019 Formation Arduino Tutoriel

    96/119

    d- =ésistane 6 $andes;n utilise le taleau suivant:

  • 8/19/2019 Formation Arduino Tutoriel

    97/119

    e- Calcul de la résistance d#un circuit

    La loi d';hm s'applique: B O R /.4emple: 4n utilisant une atterie de % volts, la valeur de R est:R O B/ O %B A,A&A O H#A ohms. 5ous utilisons une résistance de HCA ohms qui est unevaleur standard.+i le m2me circuit est alimenté en # volts, alors R O #A,A& O A ohms. 5ous pouvons

    utiliser une résistance de &&A ohms, vu que A n'est pas une valeur standard.

    !) >isposition des résistances en série: 5ous pouvons cominer en mettant plusieurs résistances en série, pour avoir une résistanceéquivalente dont la valeur est: R O R ! ] R & ] R $ ] ... ] R n.4emple de & résistances: R O R ! ] R &.

    &) >isposition des résistances en parallle:+i on dispose plusieurs résistances en parallle, la valeur de la résistance équivalente estcalculée comme suit: !R O !R ! ] !R & ] !R $ ] ... ] !R n.

    ,- Calcul du courant I d#un circuit

    La loi d';hm s'applique: B O R /.Le calcul utilise donc la fonction / O BR, / eprimée en ampres (), B en volts (B), R enohms.

    Exercices

    !8 ?ettre & résistances en série et calculer la résistance équivalente. R!O&&A ohmsP R&O$$Aohms. ?esurer avec un contr9leur et vérifier.&8 ?ettre & résistances en parallle et calculer la résistance équivalente. R!O&&AP R&O$$A.

    ?esurer avec un contr9leur et vérifier. 

    3" Le condensateur Le condensateur est un composant électrique capale d'emmagasiner une charge électrique./l * en a & t*pes: le condensateur céramique (non polarisés) et le condensateur électrol*tique(polarisés).Les valeurs sont de !AAA E 3 ! E pour les condensateurs polarisés et de !E 3 ! pE pourles condensateurs non polarisés .

  • 8/19/2019 Formation Arduino Tutoriel

    98/119

    a- Schéma et s8moles

    Figure .+ - Condensateurs életrolti'ues (#olarisés)

    Figure ., - Condensateurs érami'ue (non #olarisés)

    - Comment lire la .aleur d#une capacité

    La valeur d'une capacité se mesure en Earads (E). ?ais la plupart des capacités sont évaluéesen microfarads (E).>'autres faricants indiquent la valeur en picofarads (pE) avec un code de $ digits. ! Earad O!AAAAAA Earads. Le $me chiffre donne le nomre de A éros. Les chiffres D et C ne sont pas utilisés. " indique de multiplier le nomre formé des & premiers chiffres par A.A!. %indique de multiplier le nomre formé des & premiers chiffres par A.!.4emple: !AH donne !A !AH pE O !AAAAA pE O !AA nE O A.! E.$$% O $$ A.! pE O $.$ pE.

    c- Calcul de la capacité équi.alente

    !) >isposition des capacités en série:

     5ous pouvons cominer en mettant plusieurs résistances en série, pour avoir une résistanceéquivalente dont la valeur est: !< O ! isposition des capacités en parallle:+i on dispose plusieurs résistances en parallle, la valeur de la résistance équivalente estcalculée comme suit: < O

    5" Le transistorRéf: http:GGG.piela.orgtheoprateletroni

  • 8/19/2019 Formation Arduino Tutoriel

    99/119

    3-1) Le transistor 2N2222 

    Le transistor est utilisé lorsque le circuit électrique nécessite plus de courant que celui qui estfourni par l'arduino. " La oine

    B" Le relaisUn relais électronique est un interrupteur qui se commande avec une tension continue defaile puissance. La partie interrupteur sert 3 piloter des charges secteur de forte puissance(usqu'3 !A couramment).

    Figure .6 - m$oles du relais

    Le s*mole du relais doit inclure ce qui représente la oine et ce qui représente le ou lesinterrupteurs (contacts).

    Lorsqu'on choisit ou qu'on récupre un relais, il peut 2tre intéressant de savoir de quel t*pede conneion il s'agit. /l eiste H grandes familles de relais, en fonction des contacts.

    - =elais I : +ingle 0ole +ingle @hroG. Le relais +0+@ possde & roches de contacts.>ans ce cas, le relais possde H roches au total : & pour les contacts, & pour la oine.

    - =elais I : +ingle 0ole >oule @hroG. Le relais +0>@ possde un seul contact maisavec une orne commune, un contact normalement ouvert (quand il n'* a pas de tension surla oine) et un contact normalement fermé (quand il n'* a pas de tension sur la oine).uand on applique une tension sur la oine, on entend [clic[ : la orne commune va se

    connecter sur le contact normalement ouvert (5; O normall* open) et le contactnormalement fermé (5< O normall* closed) s'ouvre. >s qu'on coupe la tension au ornesde la oine, on entend [clic[ et le relais revient 3 son état de repos. ;n peut ainsi asculerd'un circuit 3 l'autre (allumer soit l'ampoule rouge soit l'ampoule verte par eemple).

    Le relais +0>@ possde # roches au total : $ pour les contacts, & pour la oine. +i onn'utilise pas le contact [normalement fermé[ le relais +0>@ est équivalent 3 un relais +0+@.

    =elais I : >oule 0ole +ingle @hroG. Le relais >0+@ est équivalent 3 & relais +0+@ quifonctionnent ensemle, pilotés par la m2me oine. ;n peut par eemple commuter &

  • 8/19/2019 Formation Arduino Tutoriel

    100/119

    circuits indépendants en m2me temps par la m2me action (mettre du !&B sur la oine pareemple), ou commuter 3 la fois phase et neutre pour rancher un circuit électrique ausecteur.

    Le relais >0+@ possde D roches au total : && pour les contacts, & pour la oine.

    =elais I : >oule 0ole >oule @hroG. Le relais >0>@ est équivalent 3 & relais +0>@qui fonctionnent ensemle, pilotés par la m2me oine. Le relais >0>@ possde " rochesau total : &$ pour les contacts, & pour la oine.

    La lettre [+[ ou [>[ peuvent 2tre remplacées par le nomre de contacts pilotés ensemle. 0ar eemple : H0>@ signifie H ensemles >@ (!& ornes de contacts ] & ornes de oine). la place de [>@[, on rencontre parfois [

  • 8/19/2019 Formation Arduino Tutoriel

    101/119

    0our déterminer le courant consommé par la oine, il suffit de mesurer la résistance 3l'ohmmtre et déduire le courant.

  • 8/19/2019 Formation Arduino Tutoriel

    102/119

    Figure .. - =elais stati'ue

    Le courant maimum du c9té des contacts est plus faile : un triac possde une chute detension de !B environ contrairement 3 des contacts d'un relais mécanique 3 oine. /l * aaussi un trs léger courant de fuite lorsque la L4> n'est pas pilotée (L4> éteinte).

  • 8/19/2019 Formation Arduino Tutoriel

    103/119

    Une L4> fonctionne en courant et tension continus. neconduit que dans un sens. >ans l'autre sens, elle est loquée mais ne supporte pas destensions inverses élevées (souvent #B ma). Lorsqu'une L4> est passante, il s'étalit 3 ses ornes une tension asse indépendante du courant : on peut appeler cette tension la tensionde seuil. 4lle dépend du matériau utilisé dans la L4>, et donc de sa couleur.

    L4> rouge, orange, aune (amre) : !."B 3 &BL4> verte standard (vert clair) : !."B 3 &.&B

    Figure .9 - Caratéristi'ue t#i'ue #our :E rouge :E verte et :E $leue

    La tension au ornes de la L4> rouge ne varie que de !.##B 3 !.%$B quand on fait varier lecourant de !m 3 &Am. +i on dispose d'une alimentation stailisée réglale fiée 3 !.%$B,on pourrait * rancher directement une L4> rouge. /l faut éviter de faire ainsi parce 'u*une#etite variation de tension entraLne une grande variation de ourant4n passant de !.%$B 3 &.&AB, le courant dans la L4> est multiplié par &

    Calcul de la résistance série pour la LED

    0renons un eemple : 3 partir d'une alimentation 12, on souhaite allumer une :E rouge'ui su##orte 20mA. +a tension de seuil est de 19.

    L'additivité des tensions s'écrit : UL4> ] UR O !&B

  • 8/19/2019 Formation Arduino Tutoriel

    104/119

    UL4> est égale 3 la tension de seuil (supposée indépendante du courant).La tension UR vaut donc : UR O !&B 8 UL4> O !&B 8 !."B O !A.&B;r, le courant dans la résistance est égal 3 celui de la L4>, c'est838dire &Am.La valeur de la résistance se déduit 3 partir de ces deux informations :R O !A.&B &Am O !A.&B A.A& O #!A ;hms

  • 8/19/2019 Formation Arduino Tutoriel

    105/119

     

    :iste de a#teurs et atuateurs du monde desmiroontrMleurs

    2 Sonar 9 ultrasons (HC-S1@>"

    Le capteur sonar 3 ultrason est utilisé pour déterminer la distance qui le sépare d'un ostacle./l offre une onne précision, de quelques cm (& cm) usqu'3 $8H m.

    Eigure "A 8

  • 8/19/2019 Formation Arduino Tutoriel

    106/119

    Figure 92 - a#teur et sonde d*!umidité du sol4emple de programme:

    const int BLY0R;=4 O AP pin nalog A

    const int ?;/+@UR4YL4B4L O AP seuil 3 définir 

     

    void setup() M  +erial.egin(%DAA)P

    N

    void loop() M

      int moisture O analogRead(BLY0R;=4)P

      +erial.println(moisture)P

      if(moisture ?;/+@UR4YL4B4L) M

      digitalIrite(!$, Q/Q)P

      N else M

      digitalIrite(!$, L;I)P

      N

      dela*(!AA)P

    N

    > Capteur de son

    ; (sortie digitale) passe 3 ! lorsque l'intensité du son atteint uncertain seuil de son qui, lui, est réglé manuellement via le potentiomtre.

  • 8/19/2019 Formation Arduino Tutoriel

    107/119

    Figure 9" - Ca#teur de son4emple de programme:+;U5> +ensor 

    const int sensor0in O HP ?icrophone +ensor 0in on analog Hconst int elloGL4> O !Pconst int RedL4> O HPint sensorBalue O AP

    void setup() M  pin?ode(elloGL4>, ;U@0U@)P

     pin?ode(RedL4>, ;U@0U@)P+erial.egin(%DAA)P

    N

    void loop() M  Lire la valeur du capteur   sensorBalue O analogRead(sensor0in)P

    +erial.println(sensorBalue)P

    S /f *ou feel that the sensor values on the serial monitor are going * too quicl* for *ou to read, *ou can mae itso that the values onl* shoG up on the serial monitor if *ou mae a noise. ou can replace+erial.println(sensorBalue)P  Gith:if (sensorBalue ` #A%)M  +erial.println(sensorBalue)PNS

      digitalIrite(elloGL4>, Q/Q)P elloG is alGa*s on.  if (sensorBalue) M @he 'silence' sensor value is #A%8#!!  digitalIrite(RedL4>,Q/Q)P  dela*(!# )P @he red L4>s sta* on for & seconds

    N else M  digitalIrite(RedL4>,L;I)P

  • 8/19/2019 Formation Arduino Tutoriel

    108/119

    NN

    B Capteur digital de pression arométrique

    Oou an use this mo"ule to measure the absolute pressure o the environment using

    a "igital barometer suh as this has some interesting appliations< J. onverting thepressure measures into altitu"e, .ou have a reliable sensor or "etermining the

    height o .our robot or proPetile or e7ample<

     

    ? *hotoresistor Sensor :odule Light Detection Light

    Oou an use this mo"ule or light "etetion Eith an Ar"uino<

    = Digital %hermal Sensor :odule %emperature Sensor :odule

    he thermal sensor mo"ule is ver. sensitive to the ambient temperature, generall.use" to "etet the ambient temperature< hrough the a"Pustment o the

    http://ebay.to/1AwCRFlhttp://ebay.to/1bpMe3c

  • 8/19/2019 Formation Arduino Tutoriel

    109/119

    potentiometer, .ou an hange the temperature "etetion threshol"<

    1otar8 Encoder :odule rick Sensor De.elopment oard

    hen .ou rotate the rotar. eno"er it ounts in the positive "iretion an" the

    reverse "iretion< otation ounts are not limite"< ith the buttons on the rotar.

    eno"er, .ou an reset to its initial state an" start ounting rom 0<

    :Q-3 :Q3

  • 8/19/2019 Formation Arduino Tutoriel

    110/119

    2@ S0->3@ :otion Sensor :odule iration S4itch Alarm

    his mo"ule an be use" to trigger the eet o various vibration, thet alarm,

    intelligent ar, earth:uae alarm, motor.le alarm, et<

    22 Humidit8 and 1ain Detection Sensor :odule

    his is a rain sensor< %tSs use" or all in"s o Eeather monitoring<

    23 *assi.e u66er :odule

     A simple soun" maing mo"ule< Oou set high or loE to "rive this mo"ule b.

    hanging the re:uen. .ouSll hear a "ierent soun"

  • 8/19/2019 Formation Arduino Tutoriel

    111/119

     

    25 Speed Sensor :odule

    ahometer is a simple mo"ule that alloE .ou to test the spee" o the motor< i"el.

    use" or motor spee" "etetion, 'ulse ount, position limit, an" so on<

    2> I1 In,rared Flame Detection Sensor :odule

    Elame >etection +ensor ?odule is sensitive to the flame, ut also can detect ordinar* light.Usuall* used as a flame alarm. >etects a flame or a light source of a Gavelength in the range

    of CDAnm8!!AA nm. >etection point of aout DA degrees, particularl* sensitive to the flamespectrum.

    Figure 9+ - Ca#teur de 3lamme (ou lumire)

    @his module is sensitive to the flame8 ut also can detect ordinar* light. Usuall* used as aflame alarm. ;n oard8 digital output interface can e directl* connected Gith themicrocontroller /;.

    Eeature:

    >etects a flame or a light source of a Gavelength in the range of CDAnm8!!AA nm

    http://ebay.to/1JJKC3ghttp://ebay.to/1JimpO6

  • 8/19/2019 Formation Arduino Tutoriel

    112/119

    >etection angle aout DA degrees8 it is sensitive to the flame spectrum.ccurac* adustale;perating voltage $.$B #B;utput 8nalog voltage output 8>igital sGitch outputs (A and !)

    Iith a mounting screG hole0oGer indicator (red) and digital sGitch output indicator (green)

  • 8/19/2019 Formation Arduino Tutoriel

    113/119

    N

    2B B 3-Channel 1ela8 :odule

    his is a 2 Fhannel 5T ela. $o"ule, it alloEs .ou to ontrol various applianes,

    an" other e:uipment Eith large urrent< %t an be ontrolle" "iretl. b. an.

    miroontroller<

    2? readoard *o4er Suppl8 :odule 55 B

     A simple mo"ule to poEer .our brea"boar"< %t supplies both 3

  • 8/19/2019 Formation Arduino Tutoriel

    114/119

    2 :odule de calcul d#accélération

  • 8/19/2019 Formation Arduino Tutoriel

    115/119

  • 8/19/2019 Formation Arduino Tutoriel

    116/119

  • 8/19/2019 Formation Arduino Tutoriel

    117/119

    simple @ on pin >!&Iritten =* : ?ohannad RaGashdeh $:AApm , !$D&A!$http:GGG.genotrone.com..................................binclude `BirtualIire.h

    char ScontrollerPvoid setup() M  pin?ode(!$, ;U@0U@)P

    vGYsetYpttYinverted(true)P vGYsetYtYpin(!&)PvGYsetup(HAAA)P speed of data transfer Fps

    N

    void loop() Mcontroller O [![PvGYsend((uint"Yt S)controller, strlen(controller))PvGYGaitYt()P Iait until the Ghole message is gonedigitalIrite(!$, !)Pdela*(&AAA)Pcontroller O [A[PvGYsend((uint"Yt S)controller, strlen(controller))PvGYGaitYt()P Iait until the Ghole message is gonedigitalIrite(!$, A)Pdela*(&AAA)P

    N

    & Réception@he >!$ L4> ;n the arduino oard must e turned ;5 Ghen received character '!' and @urned ;ff Ghen received character 'A'La led >!$ s'allume lorsqu'on re1oit un '!' et s'éteint lorsqu'on re1oit un 'A'.

    simple R on pin >!&Iritten =* : ?ohannad RaGashdeh $:AApm , !$D&A!$http:GGG.genotrone.com..................................binclude `BirtualIire.hvoid setup()M  vGYsetYpttYinverted(true)P Required for >R$!AA  vGYsetYrYpin(!&)P  vGYsetup(HAAA)P =its per sec  pin?ode(!$, ;U@0U@)P  vGYrYstart()P +tart the receiver 0LL runningN

    void loop()M

  • 8/19/2019 Formation Arduino Tutoriel

    118/119

      uint"Yt uf^BIY?KY?4++4YL45_P  uint"Yt uflen O BIY?KY?4++4YL45P

      if (vGYgetYmessage(uf, Wuflen)) 5on8locing  M  if (uf^A_ OO '!') M

      digitalIrite(!$,!)P  N

    if (uf^A_ OO 'A') M  digitalIrite(!$,A)P  N

    NN

    vec la lirairie R

  • 8/19/2019 Formation Arduino Tutoriel

    119/119

    A ! ! A ! A ! L4E@! A A ! A A ! E! A ! ! A A ! E! ! A ! A ! A R/Q@! ! ! A ! ! A R4B

    3> Hall s4itch sensor 

    3B n1F3>L@2