PROGRAMMER THYMIO EN MODE TEXTE Démarrer Aseba Studio
Transcription
PROGRAMMER THYMIO EN MODE TEXTE Démarrer Aseba Studio
PROGRAMMERTHYMIOENMODETEXTE DémarrerAsebaStudiopourThymio BranchezunThymioàvotreordinateur,puiscliquezsurl'icôneAsebaStudiopourThymio: pourlancerAsebaStudio,lelogicielutilisépourprogrammerleThymioenmodetexte: SiThymion'estpasbranché? SileThymion'estpasbranché,ousivouslancezAsebaStudio(etnonpaslaversion«pourThymio»),une fenêtredesélectiondurobots'ouvrira: BranchezleThymioetcliquezsur: 1. PortSérie(c'estl'USB) 2. Thymio-IIRobot 3. Connecter Documentréaliséparl’AtelierCanopédesYvelinesàpartirdusitewww.thymio.org LadifférenceentreAsebaStudioetAsebaStudiopourThymioestsimplementqueladeuxièmeicôneouvrira Studiodirectement,sansafficherlafenêtredesélectionderobot,siunThymioestbranchéàl'ordinateur. PremierspasavecAsebaetThymio Enappuyantsurleboutondumilieu,onallumeThymio.Enappuyantensuitesurlesflèches,Thymiochange decouleur:enréappuyantsurleboutondumilieuonpeutactiverundesmodespré-programmés.Dansla suitedel’exerciceonvacréernotrepropremode,doncajouterunchoixdanslescouleurs. ConnecterThymioàl’ordinateuraveclecâbleUSBetlancerAsebaStudio.VoiciàquoiressembleAseba Studio: 1. Cesboutonsserventàchargeretexécuterlecodequ’onaécrit. 2. Cettefenêtredonneunevisiond’ensembledel’étatdesdifférentsélémentsdurobot:capteurs, actuateurs,variables. 3. Iciontrouvelesfonctionsetlesévénementsdisponiblesqu’onpeututiliserdanslecode 4. Aumilieuonvaécrirenotrecodequivadéterminerlecomportementdurobot. 5. Icionpeutdéterminerdesconstantes. 6. Icionpeutajouternosévénements. 7. Cettelignenousindiquesinosinstructionssontcomplètesetcorrectementécrites. Lescapteurs Onpeututiliserl’interfacedeAsebastudiopourvoirlavaleurdescapteursdurobot,danslemenusurlecoté. Uncapteursertàmesurerquelquechosedephysique,commedelalumière,dusonouuneaccélération,età letraduireenunevaleurnumérique,quelerobotpeutcomprendreetutiliser.Parexemplelescapteursde distancedevantlerobotpermettentdemesurerladistanceverslesobjetsproches.C’estlavaleur prox.horizontaldanslafenêtreVariables.Sionmetlamaindevantlerobotetquelacaseautoestcochée,on peutvoirlavaleurchangerendirect. Documentréaliséparl’AtelierCanopédesYvelinesàpartirdusitewww.thymio.org Danslapremièreimageonvoitquelescapteursnedétectentrien(0).Dansladeuxième,onamislamain devant,lesvaleurssontélevées. Qu’est-cequelecode? C'estuneséried’instructionsqu’ondonneaurobot,qu’ilvaexécuteretquivontdéfinirsoncomportement.Il fautécrirelecodeavecdesmotsclésbienprécis,quelerobotpeutcomprendre;onnepeutpassimplement luiparlerenfrançais. Uneastucepourécrirelecodeplusvite DansAsebaStudio,onpeuttirerlesmotsclésdepuislesmenusdecôtéjusquedanslafenêtreprincipale. Danslecasdeblocsdecodetrèssimilaires,onpeutaussilescopier(Ctrl-C)etcoller(Ctrl-V)sousWindowset Linux(ou(Commande-C)et(Commande-V)sousMac). Lescommentaires Cequ’onécritdanslecodeestinterprétéparlerobotcommedesinstructions.Cependant,parfoisonpeut vouloirécriredesindicationspournous-mêmes.Danscecas,onvafaireuncommentaire.Lesigne#permet d’indiquerquelapartiequisuitn’estpasuneinstructionpourlerobot.Onverraunexempleplustard. Danscettepartie,onvaprogrammerThymiopourqu'ilchangedecouleurquandonappuiesurlesboutons. LesLEDs UneLED(Diodeélectroluminescente)estuncomposantquipermetdefairedelalumièresurlerobot.Une LEDaunecouleurdéterminéeparsafabrication.Parexemple,ilyadesLEDsrougesdevantlerobot,des vertesdessusetc. Onavuquelerobotpouvaitchangerdecouleur.Commentçasepasse?Enréalité,ilyatroisLEDs différentesl’uneàcotédel’autre,trèsproches.Unerouge,uneverte,unebleue.Cestroiscouleurssontles couleursprimaires(additives);onpeutcréerlesautresenlesmélangeant.Parexemplesionallumebleuet rougeenmêmetemps,onobtientmagenta.OnappellecelauneLEDRVB(pourrouge,vert,bleu). Documentréaliséparl’AtelierCanopédesYvelinesàpartirdusitewww.thymio.org AllumonsuneLED Pourpouvoirallumerunelumièrenous-mêmessurlerobot,onvacommenceràcoder,doncàécriredes ordrespourlerobot. SioncliquesurFonctionsnatives->ledsonpeutvoirunelistedefonctions(unefonctionestunedes instructionspossiblespourlerobot).CesfonctionsserventàallumerlesdifférentesLEDs.Parexemple leds.top(topsignifiehaut)sertaallumerlaLEDRVBduhaut. Danslafenêtreprincipale,tapececi: callleds.top(0,0,32) calldoitêtreutilisépourappelerunefonction;leds.topsertàallumerlesLEDsRVBdudessusdurobot. Sionlaisselepointeurdelasourissurlenomdelafonction,onverraapparaîtredesinformationspour pouvoirl’utiliser.Entrelesparenthèsesondonnedesindicationsàlafonction:desarguments. Dansnotrecasilyena3:lesvaleursdestroispartiesdelaLED:rouge,vertetbleu.Lavaleur0signifieéteint, et32,alluméaumaximum.Onpeutfaireunelumièremoinsforteavecunevaleurentre0et32. MaintenantcliquesurCharger,puisExécuter.Lerobotvaexécuterlecode.OnvoitalorslesLEDsdudessus alluméesenbleu. Sionchangeslecodepourmettre: callleds.top(32,0,0) laLEDseraalorsrouge.Demême: callleds.top(0,32,32) donnerauneLEDturquoise.Vouspouvezessayerdejouersurlescouleursenchangeantcesvaleurs. Lesconditions Pourl’instant,dèsqu’onappuiesurExécuter,lerobotexécutenotrecode(allumeruneLED).Onpeutavoir enviedelierçaparexempleavecunbouton,pourallumeruneLEDquandonappuie. Documentréaliséparl’AtelierCanopédesYvelinesàpartirdusitewww.thymio.org Pourdétecterl’appuidesboutons,onpeutvérifierlavariabledanslafenêtreVariables: button.nom Icionvoitqueleboutonavant(forward)estappuyé. Danscecas,onvautiliserlaconditionif…then…else…end(si…alors…sinon…fin).L’idéeestdepouvoir direaurobotsileboutonestappuyé,alorsallumeuneled.DansAseba,çasefaitaveclasyntaxesuivante: ifbutton.forward==1then#sileboutondedevantestappuyé callleds.top(0,0,32)#alorsonallumeenbleu else callleds.top(0,0,0)#sinononéteint end cecodeditquesionappuiesurleboutondedevant(button.forward),onallumelaLEDdedessusenbleu, sinon,onl’éteint.Onpeutnoterlesphrasesaprèsles#quinesontpasenlangageAsebamaisenfrançais.Ce sontdescommentaires,desnotespourlapersonnequicode,paspourlerobot,donconlesmetàpartavecle signe#. Cecodeest-ilsuffisantpourobtenirlecomportementvoulu? Non.Aveccecode,sionappuieetrelâchelebouton,lerobotnechangepasdecouleur.Onpeutvoirqueça nemarchequ’uneseulefois,audémarrage.Lerobotfaitjusteunefoislesinstructionsqu'onluiadonné. Sil'onveutqu’àchaquefoisqu’onappuiesurlebouton,çaallumelaLED,ilfautvérifierrégulièrementsile boutonestappuyé.Pourça,onvautiliserlesévénements. Lesévénements Unévénement,c’estunmomentdéterminéparcertainesconditions,auquelonpeutexécuterducode.Un événementpeutavoirlieuplusieursfois!Parexemplesionregardedansnotreinterfaceenbas,ilyauneliste d’Événementslocaux. L’événementbuttonscorrespondàchaquefoisqu’onvérifiesiunboutonestappuyé.Demême, buttons.forwardcorrespondà"chaquefoisqu'onappuiesurleboutondedevant".Doncmaintenanton ajoutecetteligneavantnotrecode: Documentréaliséparl’AtelierCanopédesYvelinesàpartirdusitewww.thymio.org #àchaquefoisqu'onvérifielesbouton oneventbutton.forward ifbutton.forward==1then#sileboutondedevantestappuyé callleds.top(0,0,32)#alorsonallumeenbleu else callleds.top(0,0,0)#sinononéteint end Sil'ontestececode(Charger,Exécuter)onvoitquelerobotallumelalumièrebleuedèsqu'onmetledoigt surlebouton,etl'éteintdèsqu'onl'enlève. Ilyad’autresévénementsdisponibles:motorpourlesmoteurs,accpourl’accéléromètreetc. Maintenantonvafairebougerlerobot.Selonleboutonqu'ontouche,lerobotchangeradedirection. Lesmoteurs Pourlesmoteursonvoitdanslamémoirequ’ona3variablesdifférentes.Pourlemomentonvautiliserles deuxpremières.motor.coté.targetnouspermetdedirequellevitesseonveutavoir.motor.coté.speednous ditquelleestlavitesseactuelle. Onvoitquelavitesseréelle(motor.coté.speed)estunpeudifférentedelavitessedemandée (motor.coté.target) Onpeutmaintenantécrireuncodequiactivelesmoteursenfonctiondesboutons. Vouspouvezmaintenantessayerdecommanderlerobotaveclesboutonsetdelefairebouger(n’oubliezpas decliquersurCharger,puisExécuter). Etsionveutdébrancherlerobot? Testerlerobotaveclecâblen'estpastrèspratique.Alorscommentfaire? Siondébranchelerobotdel'ordinateur,AsebaStudiovaessayerdesereconnecter,etquandonbrancheraà nouveaulerobot,onpourracontinueràprogrammer.Néanmoins,sil’onquitteAsebaStudio,leprogramme seraperdu.Ilvautmieuxdoncsauvegarderlecodeavantdedébrancherlerobot.Pourcefaire,allerdansle menuFichieretclicsurSauvegarder.Uneboîtededialoguecommecelle-cidevraitapparaître: Documentréaliséparl’AtelierCanopédesYvelinesàpartirdusitewww.thymio.org Ensuitelecomportementresteetonpeutjoueraveclerobot.SiquoiquecesoitarriveàAsebaStudio pendantquel’onjouesaveclerobot,onpourraredémarrerAsebaStudioetrechargerlefichierqu'ona sauvegardé. Utiliserlescapteurs:s’arrêterauborddelatable Maintenantonvautiliserlescapteursdeproximitépouréviterquelerobotnetombedelatable.Ilya9 capteurssurchaqueThymio:5devant,2dessous,2derrière.Onvautiliserceuxdedessouspours’arrêteren borddetable. Lecapteurdeproximité Uncapteurdeproximitépeutmesurerlesdistancesauxobjetsproches.Pourlefaireilutilisedeux composants:unémetteurdelumièreinfrarouge,etunrécepteur.L’émetteurenvoiedelalumièreinfrarouge (invisiblepournous)etlerécepteurmesurecombiendelumièrerevient.Siunobjetestproche,beaucoupde lumièrevaêtrereflétéedessusetrevenirverslerobot.S’ilestloin,moinsdelumièrereviendra.Onpeutdonc mesurerladistanceauxobjets. Dansnotrecas,onpeututiliserlescapteursdessouspourdétecterlatable.Laisserlerobotsurlatableet regarderdansl’interface,lavaleurdeprox.ground.delta. Maintenantrecommençonsensoulevantlerobot.Onvoitquelavaleurchangebeaucoup. Quandlerobotestsurlatable,lesvaleurssontautourde600(beaucoupdelumièrerevient).Lorsqu'onle soulève,lesvaleurssontbeaucouppluspetites(peudelumière).Onvadoncajouterenbasdetoutnotre codececi: 27. oneventprox 28. #siuncapteurmesureunevaleurpluspetiteque300,doncilnevoitpaslatable 29. ifprox.ground.delta[0]<300orprox.ground.delta[1]<300then Documentréaliséparl’AtelierCanopédesYvelinesàpartirdusitewww.thymio.org 30. #onarrêtelesmoteurs 31. motor.left.target=0 32. motor.right.target=0 33. callleds.top(32,0,0)#onallumelerobotenrougepoursignalerl'arrêtd'urgence 34. else 35. callleds.top(0,0,0)#sionnedétectepasdeborddetable,onéteintlalumièred'urgence 36. end Silavaleurd’undesdeuxcapteursestbasse(pasdetabledétectée)onarrêtelerobot.Avecce programme,onpeutvoirquelerobots’arrêteenborddetableets'allumeenrouge(çamarcheégalement sionsoulèvelerobot). Ledébuggeur Ilpeutarriverquependantqu'ontestelerobot,onaitenviedevoircequisepasse.Onpeutlefairepour corrigerdeserreursparexemple,oupourexécuterlesinstructionspasàpas. Dansnotrecasonvavoircequisepassequandonarriveenborddetable. Sioncliqueavecleboutondroitsurlaligne callleds.top(32,0,0) OnpeutsélectionnerMettreunpointd'arrêt. Lepointd'arrêtestsignaléparuncarrérouge. celasignifiequequandonarriveàcetendroit,lerobotvaattendrequ'onluidisedecontinuer. Faisonsunessai.Ilfautdécocherlacaseautosionveutgarderlavaleuraumomentdupointd'arrêt.Unefois lepointd'arrêtmis,onfaitavancerlerobotjusqu'auborddelatable.Ils'arrête;onvapouvoirobserverla situationàcemoment,parexempleicionvoitquelescapteursdubasontmesurélesvaleurs151et45(peu delumière,donclatablen'estplusdétectée). Documentréaliséparl’AtelierCanopédesYvelinesàpartirdusitewww.thymio.org Dèsqu'onrappuiesurexécuter,lerobotcontinue(ils'allumeenrouge)jusqu'auprochainpointd'arrêt.On peutenleverlespointsd'arrêtsencliquantavecleboutondroitsurlaligneetensélectionnantEnleverle pointd'arrêt. L'accéléromètre Commentpeut-ondétecterunchoc?Quelcapteurpermetdefairecela? Ladétectiondechocsesttrèscouranteetutile.Voyonsquelquesexemples: • • • dansunevoiture,onpeutdétecterunchocencasd'accidentpourdéclencherl'airbag. dansdenombreuxtéléphonesportables,onpeutdétectersil'utilisateurtapeavecledoigt,uneou plusieursfoisdesuite. dansunordinateurportable,ondétecteleschocspourprotégerledisquedur. Cegenred'événementestdétectégrâceàl'accéléromètre.L'accéléromètrepermetdemesurerdes accélérations,dontparexemplelagravité.Onpeutaussimesurerlachutelibreetleschocs. Observerl'activitédel'accéléromètre:réagirauxchocsetémettreunson AsebaStudiopermetdefairedesgraphiquesdevariables.Pourça,ilfautcréernotrepropreévénement.Sion veutobserverlestroisaxesdel'accéléromètre(onmesurel'accélérationentroisdimensions)ilfautcréerun événementavec3arguments.Pourça,oncliquesurle+pourajouterunévénement,onluidonneunnom (p.exmes_accelerations)etonspécifielenombred'arguments(3). Maintenant,danslecode,onpeutenvoyerlavaleurdel'accélération(variableaccdanslafenêtreVariables, quicomporte3éléments)lorsdel'événementacc,ànotrenouvelévénementmes_accelerationsquipeut transmettre3arguments: oneventacc emitmes_accelerationsacc Documentréaliséparl’AtelierCanopédesYvelinesàpartirdusitewww.thymio.org Ensuite,danslafenêtreEvénements,onpeutsélectionnermes_accelerationsetcliquersurleboutonde graphique. Unnouvelonglets'ouvreavecungraphiquedes3accélérations.Onpeutalorsobservercequisepassesion tournelerobotouqu'ontapedessus. Icionvoitles3axesen3couleursdifférentes.Quandlerobotestposésursesroues,ondétectelagravitésur l'axeZ(enbleu).Quandonlemetsurlecôté,ondétectel'accélérationsurunautreaxe(lerouge).Encasde choc,onvoitdespics. Utiliserl'accéléromètre Onpeututiliserl'accéléromètrededifférentesfaçons.Commeonl'avu,lavariableaccdonclavaleurdes accélérationssurlestroisaxes,etl'événementaccalieuàchaquefoisquelesvaleursd'accélérationssont mesurées. Ilyaenplusunévénementtapquialieulorsquelerobotdétecteunetapeouunchoc.Onpeutainsiutiliser cetévénementpourfairefairedubruitaurobotlorsqu'onletape. oneventtap callsound.system(4)#cettefonctionpermetdejouerunsonsystème Documentréaliséparl’AtelierCanopédesYvelinesàpartirdusitewww.thymio.org