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

Documents pareils