View
233
Download
1
Category
Preview:
Citation preview
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
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
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
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
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
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
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
APPLICATIONQuelquesexemplesià partirdesfichesPlanèteSciences
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
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 »
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
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
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
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
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
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
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
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)
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…
Fin
Recommended