Telechargé par remi2006

Allumer une simple LED Les bases Gérer une barrière télécommandée

publicité
Allumer une simple LED
Les bases / Gérer une barrière télécommandée
ÉTAPE 1
Votre premier programme !
Nous allons dans cette partie réaliser notre premier programme consistant à simplement allumer
une LED. Retenez surtout la démarche car elle nous servira tout au long de ce tutoriel.
06.A.1 - Le résultat attendu est le suivant :
Objectif du programme PROG01
1. Allumer simplement 1 LED branchée sur D4
2. et rien d'autre pour le moment
06.A.2 - Nous allons commencer par injecter le programme minimal.
Pour cela, il faut vous arranger pour ne garder que le bloc "Boucle". Comme ceci :
Si vous avez suivi à la lettre ce tutoriel, cela devrait être le cas. Sinon, retenez ceci :
Pour supprimer un bloc :
● faites-le glisser vers le menu de gauche (il retournera d'où il vient)
● pour placer un bloc "Boucle" allez dans “Contrôles"
C'est fait ? Vous n'avez plus qu'un bloc "Boucle" ? Passez alors à la suite !
Maintenant, cliquez sur le bouton : "Téléverser vers l'Arduino".
Cela permet de compiler et d'injecter le programme minimal, c'est-à-dire un programme
totalement neutre pour vos modules. Même si cela n'a pas d'importance pour le moment, prenez
l'habitude d'injecter le programme minimal ( = programme neutre) avant de changer les
branchements de vos montages.
Pourquoi injecter le programme minimal avant un nouveau montage ?
Imaginons que vous branchiez un capteur (qui donne donc une information) sur une prise
qui alimentait précédemment une LED : il y aura un court-circuit ! En général, il n'y a pas
de conséquence fâcheuse avec des modules élémentaires mais certains modules évolués
(souvent beaucoup plus chers) n'apprécient pas ce genre d'erreur.
06.A.3 - Nous allons ajouter un module LED
Le branchement est très simple : prenez votre module LED, prenez un câble Grove et réalisez le
branchement suivant.
REM : branchez sans crainte ! Le programme que nous avons injecté est totalement neutre !
Reliez votre module LED au shield de connexions par un câble Grove
06.A4 - Nous allons ajouter un module LED dans Ardublock
Pour cela, c'est assez simple :
1. cliquez sur le bouton DuinoEDU (menu de gauche) => un menu apparaît
2. faites glisser le bloc LED du menu vers votre espace de travail
3. emboîtez ensuite votre bloc LED dans la mâchoire boucle (ou loop). Comme ceci :
4. placez ensuite le curseur de votre souris au dessus de l'étiquette marron *1
a. un petit menu doit apparaître
b. Sélectionnez D4
c.
*1 : rappelez-vous, c'est le n° de la prise sur laquelle vous avez branché votre LED !
Vous devriez obtenir ceci :
VOTRE 1ER PROGRAMME ARDUBLOCK
EXPLICATIONS
Broche : permet de dire sur quelle prise est
branché le module (nous, c'est D4 )
Statut : permet de choisir entre "Allumé"
et "Éteint"
LED : le nom du bloc pour piloter les LED
Boucle : le programme principal (oui ! il
peut aussi y avoir des sous-programmes)
06.A.5 - Cliquez maintenant sur "Téléverser vers l'Arduino"
Le programme correspondant à vos blocs est automatiquement créé et se téléverse dans la carte
Arduino. Dans quelques instants, votre LED branchée sur D4 devrait s'allumer.
Vous devriez obtenir ceci :
Ce petit programme ne fait pas grand chose. Mais notez que la LED s'est allumée par programme !
Passons à un exemple un peu plus complet.
Profitons en pour coder juste un petit peu dans le langage de la carte Arduino qui est proche du
langage C. On va faire clignoter la LED. Il suffit d'écrire, juste en dessous de digitalWrite (4, HIGH)
et avant }
les lignes suivantes :
« delay » indique un temps d'attente, en
millisecondes, donc ici 1 seconde.
delay (1000) ;
« digitalWrite » met la sortie indiquée à un
digitalWrite (4, LOW) ;
niveau électrique haut ou bas, ce qui allume ou
delay (1000) ;
éteint la LED.
Téléversez dans la carte arduino et observer.
Revenez esuite au code initial, qui allume simplement la LED, téléverser, observer l'alllumage de la
DEL et passez à la suite.
Gérer 1 condition
(Bouton poussoir)
ÉTAPE 2
Dans cette partie, vous allez apprendre 1 notion indispensable en programmation :
la condition Si… Alors… Sinon...
Une condition Si… Alors… Sinon… est utilisée à chaque fois qu'il faut prendre une décision. Elle est
facile à comprendre car vous l'utilisez tous les jours sans le savoir. Vous n'en êtes pas convaincu ?
Alors voici un exemple.
SI la pluie tombe…, ALORS je prend mon parapluie, SINON, je ne prends pas mon parapluie.
Ce type de prise de décision peut être décliné à l'infini mais reste une notion absolument
indispensable en programmation.
07.A - Nous allons allumer 1 LED si un poussoir est appuyé
07.A.1 - Le résultat attendu est le suivant :
Objectif du programme PROG02
1. Si un bouton poussoir est appuyé...
a. … alors la LED doit être allumée
2. Si le même bouton poussoir n'est pas appuyé
a. … alors la LED doit être éteinte
07.A.2 - Nous allons ajouter un module Poussoir à votre montage
Ne débranchez rien.
Prenez votre module Poussoir (Button), prenez un câble Grove et réalisez le branchement
suivant.
07.A.3 - Nous allons ajouter un module bouton poussoir dans Ardublock
Pour cela, c'est assez simple :
1. décrochez le bloc LED du bloc boucle (nous le replacerons plus tard)
2. cliquez sur le bouton Seeed Studio Grove
a. faites glisser le bloc Bouton dans la zone de travail
b. placez votre souris au-dessus de l'étiquette marron
i. cliquez sur la petite flèche
ii. sélectionnez D2
3. cliquez sur le bouton Contrôle
a. faites glisser le bloc Si - Sinon
b. emboîtez-le dans le bloc Boucle
4. emboîtez le bouton dans la mâchoire Test
5. emboîtez le bloc LED dans la mâchoire "Alors exécute…"
6. placez votre souris au-dessus du bloc LED
a. faites un "clic droit" puis Cloner
7. placez le nouveau bloc LED dans la mâchoire "Sinon exécute..." et pour ce même
bloc :
a. placez la souris au-dessus de l'étiquette violette
b. sélectionnez "Éteint"
Vous devriez obtenir ceci :
07.A.4 - Nous allons téléverser le programme dans la carte Arduino
Dans Ardublock, cliquez sur Téléverser vers l'Arduino
=> Le programme doit se téléverser tout seul dans la carte.
07.A.5 - Nous allons tester notre programme
Le programme est dans la carte. Il n'a pas besoin de l'ordinateur pour prendre des décisions.
Appuyez sur le poussoir, la LED doit s'allumer !
En sciences physiques, nous savons faire la même chose sans carte Arduino !
● Effectivement, ici la carte Arduino ne sert pas à grand chose.
● Mais imaginons que nous voulions éteindre la LED quand on appuie sur le
poussoir, nous pouvons le faire sans rien débrancher !
Essayez de modifier votre programme pour avoir ceci : PROG02-BIS
1. Si un bouton poussoir est appuyé...
a. … alors la LED doit être éteinte
2. Si le même bouton poussoir n'est pas appuyé
a. … alors la LED doit être allumée
Réponse annexe 01
Vous savez maintenant gérer une condition. Passons à un savoir-faire indispensable : gérer un
servomoteur.
Gérer 1 servomoteur angulaire
ÉTAPE 3
Les servomoteurs angulaires sont très utilisés en robotique. Ils permettent de faire
bouger quelque chose suivant un certain angle.
Un servomoteur est constitué d'une partie mobile (= le palonnier) et d'une partie fixe (le moteur
avec tous les engrenages). Mais à la différence d'un moteur classique, on ne fait ici que piloter un
angle entre 15° et 165° environ. Bref, juste de quoi ouvrir et fermer une porte ou fermer les
mâchoires d'une pince.
PRINCIPE D'UN SERVOMOTEUR ANGULAIRE
-Le palonnier ne peut pas faire un tour
complet
-On pilote un angle !
Dans cette section, nous allons juste faire comme si nous voulions ouvrir et fermer une porte en
appuyant sur un bouton poussoir.
8. A - PILOTAGE SIMPLE
08.A.1 - Le résultat attendu est le suivant :
Objectif du programme PROG03
1. Si l'interrupteur est fermé,
a. la LED doit être éteinte
b. le palonnier doit être positionné sur45°
2. Sinon,
a. la LED doit être allumée
b. le palonnier doit être positionné sur 135°
La seule chose qui manque à notre montage est un servomoteur.
Pour rendre ce test plus visuel :
● nous vous invitons à monter un des palonniers fournis sur l'axe du
servomoteur
● vous pouvez aussi fixer sur ce palonnier un élément qui matérialisera la
porte
08.A.2 - Ne débranchez rien. Nous allons juste ajouter un servomoteur
Le branchement est un peu différent. Grove est un système très ouvert acceptant nombre de
modules d'autres marques. Nous allons vous montrer comment brancher un servo qui n'est pas
Grove sur un shield de connexions Grove. Il existe bien sûr des servos Grove mais ils sont un peu
plus chers.
Prenez votre servomoteur
Montez un palonnier fourni sur l'axe de votre servomoteur
Pour cela, vous pouvez simplement l'emboîter, il n'est pas absolument nécessaire de le visser.
Vous devriez obtenir ceci :
SERVOMOTEUR + PALONNIER + VIS
SERVOMOTEUR ASSEMBLE
Reliez un adaptateur Grove à la prise du servomoteur
ADAPTATEUR
BRANCHEMENT
SERVOMOTEUR DUPONT
Procédez comme ceci :
1. fil noir Grove => fil
marron servo
2. fil rouge Grove => fil
rouge servo
3. fil noir Grove => fil orange
servo
Il existe aussi des adaptateurs pour servos
http://duinoedu.com/store1/cables-et-fils/253-gp-adaptateur-pour-1-servo.html
Il ne reste plus qu'à le brancher avec la prise.
Reliez votre servomoteur au shield de connexions par l'adaptateur branché précédemment.
Encore une fois, nous avons branché le servomoteur sur une prise paire même si tous ces modules
pourraient très bien être branchés les uns à la suite des autres. Mais rappelez-vous : certains
modules évolués utilisent 2 prises en même temps et nous ne savons pas encore les différencier.
08.A.3 - Il reste maintenant à placer le bloc "Servomoteur" dans Ardublock
La seule chose qui nous intéresse véritablement ici, c'est l'angle du palonnier (= la partie qui
bouge). Nous voulons que cet angle change quand on appuie sur le bouton poussoir. Le bloc que
nous allons utiliser a plusieurs options que nous utiliserons plus tard. Ne vous en souciez pas pour
le moment.
Procédez comme ceci :
1. Cliquez sur le bouton DuinoEDU :
a. faites glisser le bloc Servo Plus dans votre zone de travail
b. emboîtez-le sous le 1er bloc LED
i. puis sélectionnez :
1. Broche# : D6 (car notre servomoteur est
branché sur D6)
2. Angle : 45 (comme 35 degrés = 35°)
3. laissez le reste en l'état (nous y
reviendrons)
2. Placez votre souris au-dessus du bloc LED
a. cliquez avec le bouton droit
i. cliquez sur Cloner
3. Emboîtez le 2ème bloc LED (celui que vous avez cloné) sous la 2ème LED
a. puis sélectionnez :
i. Broche# : D6 (notez que le clonage garde les options !)
ii. Angle : 135 (135° donc)
iii. laissez le reste en l'état
4. fin
Vous devriez obtenir ceci :
08.A.4 - Cliquez sur Téléverser vers l'Arduino
08.A.5 - Nous allons tester notre montage
Appuyez sur le Bouton poussoir :
» La LED devrait s'allumer
» Le palonnier devrait se positionner sur 135°
Relâchez le Bouton poussoir :
» La LED devrait s'éteindre
» Le palonnier devrait se positionner sur 45°
Si votre LED s'éteint quand vous appuyez sur le Bouton poussoir...
… c'est que vous avez oublié de replacer les bonnes options pour les LED dans Ardublock.
Regardez bien l'exemple juste au-dessus. La LED est éteinte en haut et allumée en bas...
8.B - PILOTAGE AVEC AJUSTEMENT DE VITESSE
Un servomoteur angulaire cherchera toujours à aller le plus vite possible vers la nouvelle position.
Cela peut être un avantage mais c'est pour nous un inconvénient. En effet, comme nous voulons
piloter une porte on préférerait que le déplacement soit plus lent (=moins brutal). De plus, sur une
maquette, un déplacement trop rapide peut être source de casse.
08.B.1 - Le résultat attendu est le suivant :
Objectif du programme PRO05
3. Si l'interrupteur est fermé,
a. la LED doit être allumée
b. le palonnier doit être positionné sur 45° en douceur
4. Sinon,
a. la LED doit être éteinte
b. le palonnier doit être positionné sur 135° en douceur
La seule chose que nous avons à faire est de régler une vitesse plus lente pour le servo.
08.B.2 - Voici le détail des options du bloc Servo Plus
Prenez un instant pour étudier ce bloc
BLOCS ARDUBLOCK
Options
Bloc "Servo Plus"
Permet de piloter un servomoteur angulaire
Broche# : prise sur laquelle est branché le servo
Angle : angle auquel pour le palonnier (entre 15° et
165°)
Vitesse : vitesse de déplacement du palonnier
-1000 = vitesse maximum
-0=vitesse nulle
Min : angle minimal que l'on s'autorise (*1)
Max : angle maxi que l'on s'autorise (*1)
(*1) pour éviter une erreur de manipulation (anti-casse)
08.B.3 - Nous allons modifier les vitesses d'ouverture et de fermeture du servomoteur
Dans Ardublock, faites comme ceci :
1. Dans le 1er bloc Servo Plus :
a. cliquez sur l'étiquette rose à côté de vitesse => ce qui
vous permet d'écrire dedans
i. écrivez 500
2. Dans le 2ème bloc Servo Plus :
a. cliquez sur l'étiquette rose à côté de vitesse
i. écrivez 300
3. fin
Vous devriez obtenir ceci :
08.B.4 - Cliquez sur Téléverser vers l'Arduino
08.B.5 - Nous allons tester notre montage
Appuyez sur le Bouton poussoir :
» La LED devrait s'allumer (comme avant)
» Le palonnier devrait se positionner sur 135° mais d'une manière lente
Relâchez le Bouton poussoir :
» La LED devrait s'éteindre
» Le palonnier devrait se positionner sur 45° mais d'une manière encore plus lente
Nous savons maintenant piloter un servomoteur et ouvrir et fermer une porte… mais imaginons
qu'il s'agisse réellement d'un système d'ouverture de porte ; nous n'avons pas le temps d'entrer…
Il faudrait que notre montage attende un certain temps…. juste le temps pour quelqu'un de passer
la porte.
Nous allons voir comment faire cela dans la partie qui suit.
8.C - PILOTAGE AVEC TEMPORISATEUR
Dans cette partie, nous voulons simplement que le servomoteur attende un certain temps avant
de refermer la porte.
08.C.1 - Le résultat attendu est le suivant :
Objectif du programme PRO06
1. Si l'on appuie sur le Bouton poussoir,
a. la LED doit être allumée
b. le palonnier doit se positionner sur 45° en douceur
2. Le système doit rester "figé" pendant 5 secondes quoi qu'il arrive
3. Si l'on appuie pas sur le Bouton poussoir
a. la LED doit être éteinte
b. le palonnier doit être positionné sur 135° en douceur
La seule chose que nous avons à faire est d'ajouter un bloc qui obligera à attendre un certain
temps.
08.C.2 - Voici un nouveau bloc à étudier
Prenez un instant pour étudier ce bloc
BLOCS ARDUBLOCK
Options
Bloc "delay MILLIS" Permet de définir un temps de pause
Millisecondes : temps de pause exprimé en ms
1000 = 1000ms = 1s = 1 secondes
08.C.3 - Nous allons introduire une pause à notre programme
Dans Ardublock, faites comme ceci :
1. Cliquez sur le bouton Contrôle
a. faites glisser le bloc Delay MILLIS dans la zone de travail
b. placez-le sous le 1er bloc Servo Plus
c. cliquez sur l'étiquette rose en face de Millisecondes
i. écrivez 5000 (pour avoir une pause de 5 secondes)
2. fin
Vous devriez obtenir ceci :
08.C.4 - Cliquez sur Téléverser vers l'Arduino
08.C.5 - Nous allons tester notre montage
Appuyez brièvement sur le Bouton poussoir :
» La LED devrait s'allumer (comme avant)
» Le palonnier devrait se positionner sur 135° mais d'une manière lente
Le système doit attendre 5 secondes
Puis :
» La porte doit se refermer
» La LED devrait s'éteindre
» Le palonnier devrait se positionner sur 45° mais d'une manière encore plus lente
Nous savons maintenant gérer un mouvement lent avec un servomoteur. Nous allons ajouter une
petite télécommande pour piloter cette barrière à distance. Ne vous inquiétez pas, ce n'est pas
très compliqué.
Découper en sous-programmes
ÉTAPE 4
Nous allons dans cette partie organiser notre programme en sous-programmes.
Cette étape va vous permettre de prendre tout de suite de bonnes habitudes.
Un sous-programme est un ensemble de blocs pouvant être appelés à tout moment par une
simple étiquette. Cette étiquette peut être utilisée autant de fois que nécessaire.
Nous allons juste réorganiser les blocs. Le programme ne fera rien de plus qu'avant.
09.A.1 - Le résultat attendu est le suivant:
Objectif du programme PROG06
1. Si on appuie sur le Bouton poussoir :
=> on appelle le sous-programme GESTION OUVERTURE
2. Si l'on n'appuie pas sur le Bouton poussoir
=> on appelle le sous-programme GESTION FERMETURE
(avec)
GESTION OUVERTURE =
1. allumer la LED
2. lever la barrière (angle du palonnier = 45° )
3. attendre 5 secondes
GESTION FERMETURE =
1. éteindre la LED
2. baisser doucement la barrière (angle du palonnier = 135°)
Comme le programme se complique un peu, nous allons organiser notre programme en 2 sousprogrammes. C'est une bonne habitude à prendre, même si au début on a l'impression de perdre
un peu de temps.
Ensuite, nous ajouterons le bloc Buzzer.
09.A.2 - Voici 2 nouveaux blocs à étudier
Prenez un instant pour les étudier
BLOCS ARDUBLOCK
Options
Bloc "Sous_programme" - 1er bloc
On place à l'intérieur l'ensemble des blocs de notre
sous-programme
Sous_programme : c'est une petite zone de texte
où vous pouvez donner un nom à votre sousprogramme.
Bloc "Sous_programme" - 2ème bloc
Permet d'appeler un petit programme construit
séparément.
Sous_programme : c'est une petite zone de texte
où vous pouvez donner un nom à votre sousprogramme.
09.A.3 - Nous allons ajouter les blocs pour nos 2 sous-programmes
Si vous regardez bien votre programme précédent, vous devriez voir apparaître très clairement :
● un assemblage de blocs lié à l'ouverture de la barrière
● un assemblage de blocs lié à la fermeture de la barrière.
Ce sont ces 2 assemblages ( OUVERTURE et FERMETURE ) que nous allons placer dans 2 sousprogrammes différents.
Dans Ardublock, faites comme ceci :
● Cliquez sur le bouton Contrôle
○ faites glisser les 2 blocs sous_programme dans la zone de travail
(ceux étudiés juste avant)
○
vide)
= le Sous-programme (encore
○
= l'étiquette (pour appeler le Sousprogramme)
○ remplacez le texte "Sous_programme" par "GESTION OUVERTURE".
Comme ceci :
○
● Cliquez à nouveau sur le bouton Contrôle
○ faites glisser à nouveau 2 blocs sous_programme
○ remplacez le texte "Sous_programme" par "GESTION FERMETURE"
dans les 2 blocs
○
Vous devriez obtenir ceci :
09.A.4 - Nous allons réorganiser notre programme en 2 sous-programmes
Dans Ardublock, faites comme ceci :
1. Déplacez et emboîtez
a. tous les blocs de gestion d'OUVERTURE dans la mâchoire "GESTION
OUVERTURE"
b.
c. tous les blocs de gestion de FERMETURE dans la mâchoire"GESTION
FERMETURE"
d.
2. Déplacez les étiquettes
a. GESTION_OUVERTURE dans la mâchoire alors exécute (du bloc Si Sinon)
Sinon)
b.
c. GESTION_FERMETURE dans la mâchoire Sinon exécute (du bloc Si -
d.
3. fin
Attention, vérifiez bien qu'il n'y a pas de faute dans le nom des sous-programmes
Si vous écrivez "GESTION OUVERTURE" dans une étiquette, il faut écrire EXACTEMENT la
même chose dans le bloc associé ! Une seule faute et ça ne fonctionne pas !
Vous devriez obtenir ceci :
(programme principal)
(sous-programme de gestion d' OUVERTURE)
(sous-programme de gestion de FERMETURE)
09.A.5 - Explications
Dans le programme principal (voir juste avant) , lorsque l'étiquette GESTION OUVERTURE est
trouvée, le sous-programme correspondant est appelé et exécuté. Une fois le sous-programme
exécuté, on revient au programme principal. Il se passe la même chose pour la GESTION
FERMETURE.
On perd du temps ? Non ?
Quand vos projets deviendront plus compliqués, il sera difficile de les comprendre si vous
ne les découpez pas en sous-programmes. C'est d'ailleurs ainsi que les ingénieurs
procèdent pour réaliser des projets complexes. Savoir découper un problème compliqué
en tâches simples est une excellente habitude.
Le programme ainsi obtenu doit faire exactement la même chose que précédemment. Nous allons
vérifier cela.
09.A.6 - Cliquez sur Téléverser vers l'Arduino
09.A.7 - Vérifiez que tout fonctionne comme avant.
Appuyez brièvement sur le Bouton poussoir :
(GESTION OUVERTURE)
» La LED doit s'allumer
» La barrière doit se lever
» Le système doit attendre 5 secondes
Puis :
(GESTION FERMETURE)
» La porte doit se refermer
» La LED doit s'éteindre
» Le barrière doit se baisser
Après tous ces efforts, nous allons maintenant faire quelque chose de plus simple: générer un
simple bip.
Gérer un buzzer
ÉTAPE 5
Nous allons dans cette partie utiliser un simple buzzer pour générer un "bip"
sonore.
Un buzzer est capable de produire un son dès l'instant où il est alimenté. Il ne faut pas le confondre
avec un haut-parleur qui lui doit être alimenté avec une tension variable pour émettre un son.
Nous allons utiliser ce petit buzzer pour signaler que le temps d'ouverture est terminé.
10.A - Générer un simple "bip"
10.A.1 - Le résultat attendu est le suivant :
Objectif du programme PROG08
3. Si on appuie sur le Bouton poussoir :
=> on appelle le sous-programme GESTION OUVERTURE
4. Si l'on n'appuie pas sur le Bouton poussoir
=> on appelle le sous-programme GESTION FERMETURE
(avec)
GESTION OUVERTURE =
1. allumer la LED
2. lever la barrière (angle du palonnier = 45° )
3. attendre 5 secondes
4. émettre un "bip" de 0,01 seconde (= fin d'ouverture)
GESTION FERMETURE =
3. éteindre la LED
4. baisser doucement la barrière (angle du palonnier = 135°)
10.A.2 - Voici un nouveau bloc à étudier
Prenez un instant pour étudier ce bloc
BLOCS ARDUBLOCK
Options
Bloc "Buzzer" Permet de générer un son
Broche : la prise sur laquelle est branchée le buzzer
Statut : permet d'activer ou désactiver le buzzer
10.A.3 - Voici un principe à étudier
BLOCS ARDUBLOCK
Options
Génère un son pendant 10ms (=0,01 s)
Pourquoi ?
Car on active le buzzer (Buzzer Allumé)
Puis on attend 0,01 seconde (Bloc Delay)
Et enfin, on désactive le buzzer (Buzzer éteint)
10.A.4 - Nous allons ajouter un module Buzzer à votre montage
Ne débranchez rien.
Prenez votre module Buzzer, prenez un câble Grove et réalisez le branchement suivant.
10.A.5 - Nous allons ajouter la gestion du buzzer
Rappel : nous voulons émettre un bip pendant 0,5 secondes. Il y a donc une durée à gérer. Nous
allons pour cela utiliser le bloc Delay MILLIS (déjà utilisé avant) qui permet de maintenir "en l'état"
pendant un certain temps.
Dans Ardublock, faites comme ceci :
1. cliquez sur le bouton Seeed Studio Grove
a. puis faites glisser le Buzzer
b. emboîtez-le à la fin de votre sous-programme GESTION OUVERTURE
c. remplacez D2 par D8
d. placez votre souris au-dessus de l'étiquette violette en face de Statut
i. sélectionnez Allumé (cela activera le buzzer)
2. cliquez sur le bouton Contrôle
a. faites glisser le bloc Delay MILLIS
b. emboîtez-le sous le bloc précédent
c. remplacez la valeur 1000 par 500 (comme 500ms = 0,5s)
3. cliquez sur le bouton Seeed Studio Grove
a. puis faites glisser un 2ème Buzzer
b. emboîtez-le sous le bloc précédent
c. remplacez D2 par D8
d. remplacez Allumé par Éteint
4. fin
Vous devriez obtenir ceci :
(programme principal)
(sous-programme de gestion d' OUVERTURE)
(sous-programme de gestion de FERMETURE)
Bip pendant toute la durée de fermeture
Il est tout à fait possible (voire plus logique) d'activer le buzzer pendant toute la durée de
fermeture. Mais pour limiter au maximum le bruit, nous avons choisi d'émettre un bip
court…
Gérer 1 répétition
ÉTAPE 6
Nous allons dans cette partie voir comment répéter une action un certain nombre
de fois.
En général, à chaque fois qu'une partie de programme doit se répéter un certain nombre de fois
(par exemple 10 fois), on l'écrit une seule fois et on la place dans une boucle de répétition.
Il est fortement déconseillé d'écrire 10 fois la même chose.
Nous allons générer un signal sonore un peu spécial. Il va émettre 10 bips courts pour signaler que
la barrière va bientôt se baisser. Encore une fois, nous allons créer un petit sous-programme de
gestion du signal sonore.
11.A.1 - Le résultat attendu est le suivant:
Objectif du programme PROG09
5. Si on appuie sur le Bouton poussoir :
=> on appelle le sous-programme GESTION OUVERTURE
6. Si l'on n'appuie pas sur le Bouton poussoir
=> on appelle le sous-programme GESTION FERMETURE
(avec)
GESTION OUVERTURE =
4. allumer la LED
5. lever la barrière (angle du palonnier = 45° )
6. attendre 5 secondes
7. GESTION ALERTE
GESTION FERMETURE =
5. éteindre la LED
6. baisser doucement la barrière (angle du palonnier = 135°)
(et avec)
GESTION ALERTE =
1. répéter 10 fois ceci :
a. émettre 1 bip de 0.01s (= 0.01 seconde = 10ms )
b. silence pendant 0.150s s (= 0,15 seconde = 150ms)
2. attendre 0,5 s (=0,5 secondes = 500ms)
Comme on le voit, un sous-programme peut très bien appeler un autre sous-programme. Ce n'est
pas un problème. C'est d'ailleurs ce qui se passe dans tous les logiciels…
Il n'y a aucun matériel supplémentaire à ajouter. Tout est déjà branché.
11.A.2 - Voici 1 nouveau bloc à étudier
Prenez un instant pour les étudier
BLOCS ARDUBLOCK
Options
Bloc "Répète" Permet de répéter plusieurs fois ce qui est dans la
mâchoire "Commandes"
Fois : nombre de répétitions
Commandes : tout ce qui doit être répété (autant
de blocs que l'on veut)
11.A.3 - Voici un principe à étudier
BLOCS ARDUBLOCK
Options
Génère 10 bips courts
Pourquoi ?
Car on répète 10 fois ceci
{
-activer le buzzer (Buzzer Allumé)
-attendre 10 ms
-désactiver le buzzer (Buzzer éteint)
-attendre 150ms (à ne pas oublier)
}
11.A.4 - Nous allons ajouter le sous-programme GESTION ALERTE
Dans Ardublock, faites comme ceci :
1. Cliquez sur le bouton Contrôle
a. faites glisser les 2 blocs Sous-programme
b. nommez-les tous les 2 GESTION ALERTE (attention aux fautes de
frappe). Comme ceci :
c.
= bloc Sous-programme
d.
= Étiquette
2. Cliquez sur le bouton Contrôle
a. faites glisser le bloc Répète
i. emboîtez-le dans le bloc GESTION ALERTE
ii. en face de Fois, écrivez 10 (car on veut 10 répétitions)
3. Déplacez les blocs liés à la gestion du buzzer et placez-les dans la mâchoire
Commandes du bloc Répète
4. Cliquez sur le bouton Contrôle
a. faites glisser le bloc Delay MILLIS
b. placez-le sous le dernier bloc Buzzer
c. Réglez 150ms
5. Cliquez sur le bouton Contrôle
a. faites glisser le bloc Delay MILLIS
b. placez-le sous le dernier bloc Répète
c. Réglez 500ms
6. Emboîtez l'étiquette GESTION ALERTE à la fin du sous-programme GESTION
OUVERTURE
7. fin
Vous devriez obtenir ceci :
(programme principal)
(sous-programme de GESTION OUVERTURE)
(sous-programme de GESTION FERMETURE)
(sous-programme de GESTION ALERTE)
11.A.5 - Cliquez sur Téléverser vers l'Arduino
11.A.6 - Vérifiez que tout fonctionne comme avant.
Appuyez brièvement sur le Bouton poussoir :
(GESTION OUVERTURE)
» La LED doit s'allumer
» La barrière doit se lever
» Le système doit attendre 5 secondes
GESTION ALERTE
» 10 "bips" doivent retentir
Puis :
(GESTION FERMETURE)
» La porte doit se refermer
» La LED doit s'éteindre
» Le barrière doit se baisser
Gérer un afficheur LCD
ÉTAPE 7
Nous allons dans cette partie voir comment nous pouvons afficher diverses
informations sur un afficheur LCD.
L'afficheur proposé permet d'écrire du texte et des nombres sur 2 lignes de 16 caractères. Il
dispose en plus d'un rétroéclairage coloré. Il s'agit d'un module évolué se branchant sur une prise
I2C (c'est un peu l'USB pour les puces électroniques). Tout ce qu'il faut retenir pour l'instant, c'est
que l'on peut brancher un grand nombre de modules évolués I2C sur une prise I2C comme il est
possible de brancher un grand nombre d'appareils sur une prise USB d'ordinateur.
Nous allons afficher des informations liées à l'état de la barrière. Le plus compliqué est de savoir à
quel moment afficher les messages. Plusieurs solutions sont possibles.
12.A - Afficher un message simple sur une ligne
Voici les messages que nous vous proposons :
● APPUYEZ SVP !
● OUVERTURE…
● PASSER…
● STOP !
12.A.1 - Le résultat attendu est le suivant :
Objectif du programme PROG10
7. Si on appuie sur le Bouton poussoir :
=> on appelle le sous-programme GESTION OUVERTURE
8. Si l'on n'appuie pas sur le Bouton poussoir
=> on appelle le sous-programme GESTION FERMETURE
(avec)
GESTION OUVERTURE =
1. Afficher [ OUVERTURE... ]
5. allumer la LED
6. lever la barrière (angle du palonnier = 45° )
7. Afficher [ PASSEZ... ]
8. attendre 5 secondes
9. Afficher [ STOP ! ]
10. GESTION ALERTE
GESTION FERMETURE =
7. éteindre la LED
8. baisser doucement la barrière (angle du palonnier = 135°)
9. Afficher [ APPUYER SVP ! ]
12.A.2 - Voici un nouveau bloc à étudier
Prenez un instant pour étudier ce bloc
BLOCS ARDUBLOCK
Options
Bloc "LCD I2C" Permet d'afficher 2 lignes de texte
n° de ligne : ligne à utiliser sur
l'afficheur
0 = première ligne
1 = deuxième ligne
n° de colonne : colonne à utiliser sur
l'afficheur
0 = première caractère
15 = dernier caractère
Attention au nombre de caractères
Une ligne doit faire un maximum de 16 caractères. Si vous dépassez, le message ne sera
pas affiché !
Attention à la numérotation
En informatique, le premier élément est toujours le 0, le deuxième, le 1… La
numérotation des lignes et des colonnes respectent cette règle.
12.A.3 - Nous allons ajouter un module Afficheur à votre montage
Ne débranchez rien.
Prenez votre module Afficheur, prenez un câble Grove et réalisez le branchement suivant.
12.A.4 - Nous allons ajouter la gestion de l'afficheur dans Ardublock
Dans Ardublock, faites comme ceci :
1. Allez chercher le premier bloc LCD I2C (bouton "DuinoEDU Grove Add" )
a. emboîtez-le à la fin du sous-programme GESTION FERMETURE
b. réglez les paramètres comme ceci :
i. Imprimer : APPUYEZ SVP !
ii. n° de ligne : 0 (on écrit donc sur la 1ère ligne)
iii. n° de colonne : 0 (on écrit donc au début de la ligne)
2. Allez chercher un 2ème bloc LCD I2C (bouton "DuinoEDU Grove Add" )
a. emboîtez-le au début du sous-programme GESTION OUVERTURE
b. réglez les paramètres comme ceci :
i. Imprimer : OUVERTURE…
ii. même chose
3. Allez chercher un 3ème bloc LCD I2C (bouton "DuinoEDU Grove Add" )
a. emboîtez-le dans le même sous-programme sous Servo Plus
b. réglez les paramètres somme ceci :
i. Imprimer : PASSEZ…
ii. même chose
4. Allez chercher un 4ème bloc LCD I2C (bouton "DuinoEDU Grove Add" )
a. emboîtez-le dans le même sous-programme sous delay MILLIS
b. réglez les paramètres somme ceci :
i. Imprimer : STOP !
ii. même chose
5. fin
Vous devriez obtenir ceci :
(programme principal)
(sous-programme de gestion d' OUVERTURE)
(sous-programme de gestion de FERMETURE)
(sous-programme de GESTION ALERTE)
12.A.5 - Cliquez sur Téléverser vers l'Arduino
12.A.6 - Vérifiez que tout fonctionne comme avant.
Appuyez brièvement sur le Bouton poussoir :
» Le message par défaut doit être : [ APPUYEZ SVP ! ]
» Appuyez sur le bouton =>
» Le message par défaut doit être : [ OUVERTURE... ]
» Le message par défaut doit être : [ PASSEZ... ]
» Le message par défaut doit être : [ STOP !... ]
Des variations lumineuses sur l'afficheur
Le servomoteur et l'afficheur LCD consomment beaucoup d'énergie. Si votre montage est
intégralement alimenté par le port USB de votre ordinateur, il est possible que sa
luminosité soit variable… Vous pouvez alors :
● SOLUTION 01 : éteindre totalement le rétro-éclairage (expliqué plus bas)
● SOLUTION 02 : brancher une alimentation sur votre carte Arduino
○ http://duinoedu.com/store1/alimentation-pour-arduino/15alimentation-pour-carte-arduino-unomega.html
Le programme précédent permet d'ouvrir une barrière avec un bouton poussoir. C'est bien, mais
nous pouvons faire bien mieux. La partie suivante traite de la gestion d'une télécommande infrarouges. Elle va nous permettre de piloter notre barrière à distance.
Rétro-éclairage afficheur LCD
Un bloc permet de changer la couleur du rétro-éclairage en choisissant la quantité de
rouge, de vert et de bleu désirée. Il s'agit d'un choix de couleur par synthèse additive (voir
programme de Sciences physiques 4ème)
12.B - Enregistrer son travail
12.B.1 - Si vous souhaitez enregistrer votre travail
Dans Ardublock, faites comme ceci :
1. Cliquez une fois sur Enregistrer sous (attention ! le programme ne doit pas être vide)
2.
3. Choisissez un emplacement
4. Cliquez sur Enregistrer
Téléchargement