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