20
Programmer l’arduino avec mBlock 2 ème approche Ce support a été complété des résultats de l’atelier arduino du 5 février 2017 http://learn.makeblock.com/getting-started-programming-with- mblock/?utm_source=software&utm_medium=mblock&utm_campaign=mblocktorumeng http://download.makeblock.com/mblock/mblock_extension_guide.pdf http://www.planete-sciences.org/iledefrance/index.php/robotique/60- aller-plus-loin-en-robotique

Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

Embed Size (px)

Citation preview

Page 1: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

Programmerl’arduino avecmBlock2ème approche

Cesupportaétécomplétédesrésultatsdel’atelierarduino du5février2017

http://learn.makeblock.com/getting-started-programming-with-mblock/?utm_source=software&utm_medium=mblock&utm_campaign=mblocktorumeng

http://download.makeblock.com/mblock/mblock_extension_guide.pdf

http://www.planete-sciences.org/iledefrance/index.php/robotique/60-aller-plus-loin-en-robotique

Page 2: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

PrésentationdemBlock• La programmation visuelle par blocs est un atout majeur dansl’apprentissage de l’algorithmique et du codage d’applications• Historiquement, le MIT a développé un atelier très pédagogique :Scratch, qui permet de créer des applications et d’interagir avec elles

2Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

• L’environnement mBlock constitue un nouveau développement quipermet de réaliser des programmes avec Scratch et d’en dériver unevariante téléversable dans l’Arduino, qui fonctionne alors de façonautonome

• Plus tard, avec le développement de l’Arduino, une versionadaptée permettant de piloter un microcontrôleur, S4A(Scratch for Arduino) a été mise au point par une équipe dechercheurs espagnols. Toutefois, le contrôle de l’Arduinonécessite une liaison constante avec l’environnementScratch

Page 3: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

EnmodeScratch:unenvironnementvisueletludiqueavecuneconvivialitéquin’estplusàdémontrer

3Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

La logique du« glisser-déposer »est la même et desfonctionssupplémentairespermettent desinteractions et denombreux effetsvisuels et sonores.Il est possible deprogrammer desjeux et même departiciper à desconcours ou demettre en communses programmes(scripts) Scratch

Page 4: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

EnmodeArduino :unenvironnementdeprogrammationquifaitbonnefigure

4Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

La logique est simple: les instructionssont sélectionnéesdans le cadre degauche etcombinées parglisser-déposer surla page centrale. Lecode généré pourl’arduino s’affichedans le cadre dedroite.

Il n’y a plus d’erreurde syntaxe et leprogammeur seconcentre sur sonalgorithme

Page 5: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

EnmodeArduino :laprogrammationvisuelle

5Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

4 familles de blocks sont utilisables pour la programmation :- Blocs et variables : définir des variables, paramètre et procédures- Contrôle : les structures usuelles de contrôle du code- Opérateurs : arithmétiques et autres- Pilotage : gère les interactions avec l’Arduino

Les instructions peuventêtre complétées par desextensions correspondantaux primitives decommande des modulesmBlot ou des shieldsarduino ou encore descapteurs et actionneurspersonnalisés

Le guide de développement des extensionsest disponible sur le sitehttp://download.makeblock.com/mblock/mblock_extension_guide.pdf

Le guide de démarrage de mBlock estdisponible à l’adressehttp://learn.makeblock.com/getting-started-programming-with-mblock/?utm_source=software&utm_medium=mblock&utm_campaign=mblocktorumeng

Page 6: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

EnmodeArduino :lesfamillesdeblocks

6Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

LescontrôlesElle comprend les structuresde contrôles basiques enalgorithmique :- Larépétitionjusqu’àcequ’uneconditionsoitremplie

- l’alternative« sialorssinon »

Ainsiquel’équivalentdesinstructionsdelay()=attendrensecondesetloop()=répéterindéfiniment

LesblocsetvariablesElle comprend un boutonqui permet de créer unevariable et des blocs quipermettre de lui affecterune valeur, del’incrémenter (ou de ladécrémenter par unevaleur négative) et deuxblocs qui permettent demontrer ou de cacher unevariable mais qui ne sontpas utilisables avecl’arduinoElle comprend un boutonqui permet de créer desblocs en tant quefonction ou de procédure

Page 7: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

EnmodeArduino :lesfamillesdeblocks

7Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

LesopérateursElle comprend lesopérateursarithmétiques etlogiques basiques ainsique les fonctionsmathématiquescourantesIl y a également ungénérateur de nombrealéatoire et desfonctions detraitement de tableauxde caractèresLes opérateurs sontutilisés dans lesconditions

LepilotageElle comprend un en-têtede bloc qui permet depasser en mode degénération de code et lesopérations demanipulation de portA noter : l’apportinestimable de la getsiond’un servomoteur parune instruction uniqueainsi que la récupérationdirecte d’une distancemesurée par un capteur àultrasons et la simplicitéd’écriture des messagessur le moniteur série

Page 8: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

APPLICATIONQuelquesexemplesià partirdesfichesPlanèteSciences

Page 9: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

FaireclignoteruneLED

9Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

Pour faire clignoter une LEDavec Arduino, on se souvientqu’il suffit :1. De mettre le PIN de la

LED à l’ état haut2. D’attendre un certain

temps (que l’on fixe)3. De mettre le PIN de la

LED à l’état bas4. D’attendre encore un

certain temps (que l’onfixe)

5. De recommencer

Onreliel’anode(pattelonguedelaLEDauPIN13)

Iln’estplusnécessairededéfinirnid’initialiserlesPIN

LecodeArduino estgénéré

automatiquement

Page 10: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

FaireclignoteruneLED– versionPRO

10Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

Bien évidemment, cette version du« Hello World » des programmeurs dumonde entier n’est pas une avancéemajeure de l’algorithmique mais ellemérite quelques améliorations :- Si on veut que la LED ne soit passystématiquement sur le PIN 13, onpeut utiliser une variable quidéfinira le PIN en début deprogramme et la modifier (lapersonnaliser) à un seul endroit(portabilité)

- Si on veut modifier simplement leclignotement, on peut mettre ledélai d’attente en variable pourn’avoir à le changer qu’à un seulendroit ou le faire varier par leprogramme, par exemple, plus unobjet est proche et plus leclignotement est rapide

Oncrée2variables

Onleuraffecteunevaleur

Onlesutiliseensuitedansleprogramme

LecodeArduino devientunpeuplus« verbeux »

Page 11: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

Contrôlerunservomoteur

11Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

On se souvient que la bibliothèque« servo » d’Arduino permet decommander un servomoteur en nelui donnant que la valeur de l’angle àlaquelle il devait se positionner

Pour un servomoteur à rotationcontinue, cette valeur d’angleconditionnait le sens et la vitesse desa rotation (0 = à gauche, 90 = arrêt,180 = à droite)

On se souvient également qu’il fallaitdéclarer un objet servo,« l’attacher » à un PINpréalablement déclaré lui aussi

mBlock asimplifiéconsidérablementlagestiondesservomoteurs:1seulblocsuffit

Sionveutousil’ondoitutiliserplusieursfois,cebloc,onpeutlevariabiliser

Page 12: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

Contrôlerunservomoteur:lesclassiques

12Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

Lebalayageprogressif*desanglesparleservomoteurdansunsenspuisdans

l’autre

Laséquencedebasculed’unbacàl’appuid’unboutonpoussoir:rotationà90°,

pause,rotationinverseNotez la condition de test de la valeur lue sur le PINdu bouton qui sera relié à GND lors de l’appui (ondétecte un passage à l’état 0 ou LOW)

(*)Anoter:pourobtenirunmouvementprogressifetnonsaccadéd’unservomoteur,onpeututiliserunebouclerépétitive

Lescommentairespermettentdegarderlatracedesbonnesidées

Page 13: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

Mesurerunedistance

13Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

On se souvient que l’utilisation d’unsonar (capteur à ultrasons) n’étaitpas évidente au premier abord mBlock aégalementsimplifiéconsidérablementla

gestiondumodule« sonar »:1seulblocetunevariable« cible »suffisent

Page 14: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

Mesurerunedistanceetasservirunservomoteur

14Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

Comme on sait mesurer une distance etpositionner un servomoteur à un angle précisavec mBlock, on sait réaliser un asservissementd’un servomoteurPar exemple, pour ajuster un angle de tir ou delancer de quelque chose à une distancemesurée, ce qui peut être utile comme action dejeu

Maisilmanqueencoredesblocspermettantdegérerdestableauxafindefaireune

correspondanceentrelavaleurdedistancemesuréeetlavaleurd’anglecorrespondante

Toutefois,onpeutfaireuneapproximationparunecascaded’alternatives« si… alors… sinon… »

ouparunefonction

Page 15: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

ContrôlerlapuissanceaveclePWM

15Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

Leprincipe:certainsportsdel’ArduinopeuventmodulerlesignalensortieselonlalaméthodeduPWM(voirlaficheF3sur

lesitedePlanèteSciences)avecl’instructionanalogWrite()

Desvaleurssontprédéfiniesmaisonpeutmettreunevaleurpersonnaliséedanslamesureoùellesesituedansl’intervalle[0;255]l’exempleci-contrefairecroîtrepuisdécroîtrelapuissanced’uneLED

Page 16: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

Pourgérerl’alimentationencourantfort,onutiliseuntransistordepuissance

ContrôlerlapuissanceaveclePWM

16Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

Applications :• moduler la puissance d’un groupe de LEDou d’une LED RGB pour avoir une lumièreparticulière ou des effets lumineux

• Faire varier la puissance d’un moteurélectrique en rotation dans un seul sensavec un potentiomètre (pour changer desens, utiliser un pont en H)ATTENTION:ilfautpenseràmettreunediodeenparallèledumoteurpouréviter

uncourantretourquirisqued’endommagerlecircuit http://arduino103.blogspot.fr/2011/05/co

ntrole-moteur-dc-via-transistor-pwm.html

Page 17: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

Un potentiomètre réglablepar vis (trimmer) permetd’ajuster une valeur pour laconserver

La taille du transistordépend de la puissance ducourant utilisé par le moteur

Nepasoublierladiodeanti-retour!

UnpotentiomètreestutilisépourdonnerunevaleurdePWM,cettevaleurestluesurportA0del’Arduino etunsignalPWMcorrespondantàlavaleurlueestenvoyésurlabasedutransistorquimodulel’alimentationdumoteurenconséquence

ContrôlerlapuissanceaveclePWM

17Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

Lescript

Page 18: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

ContrôlerunmoteuravecunpontenH

18Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

La fiche F3 explique le principe du pont en Hpour contrôler le sens de rotation et lapuissance d’un moteur électrique à courantcontinuOn se base sur la table de vérité du circuitqui implémente le pont en H pour envoyerles signaux de commande par 3 PIN pourchaque moteur

La vitesse est modulée par l’envoi de savaleur via l’instruction analogWrite(PIN,valeur), ce qui est pratique pour contrôler lavitesse par un joystick

EN 1A(3A) 2A(4A) FonctionHIGH LOW HIGH Tourne à droiteHIGH HIGH LOW Tourne à gaucheHIGH LOW LOW Arrêt rapideHIGH HIGH HIGH Arrêt rapideLOW Indifférent Indifférent Arrêt

Parexemplepourfairetournerlemoteuràdroiteàmi-vitesse,lesblocscorrespondantàlapremièrelignedutableauseraientlessuivants

L’algorithmeestplusclairetplussûrendéclarantdesvariablescorrespondantsauxPINd’l’Arduino àutiliser(PWMpourEN)

Page 19: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

ContrôlerunmoteuravecunpontenH

19Programmerl'ArduinoavecmBlock:2èmeapproche,retoursurl'atelierArduinodu5février2017

Le script réalisé par Nicolas : le joystick donne une valeurentre 0 et 1023 et de 512 au point de repos. Le script litcette valeur et la convertit en une valeur de PWM puisl’analyse pour déterminer le sens de rotation ou uneconsigne d’arrêt

Lemontage

LemontageutiliseuncircuitpontenHàbasedeL298etunmoteuralimentéparunepile9V.ILNEFAUTPASOUBLIERDE

RELIERLAMASSEDEL’ARDUINOAVECLAMASSEDUCIRCUITsouspeined’interférence.AvecmBlock,laréalisation(etlamiseau

point)dumontageetduscriptaprisuneheure…

Page 20: Programmer l’arduino avec mBlock - Planète Sciences · En mode Arduino : un environnement de programmation qui fait bonne figure 4 Programmer l'Arduino avec mBlock : 2ème approche,

Fin