Résumé
UnapprentissageludiquedelaprogrammationGrâce à différents projets de difficulté progressive, ce cahier d’activités vousinitieraàlapratiquedel’algorithmiqueaveclacalculatriceTI-83PremiumCE,enexplorantdeuxchampscomplémentairesdelaprogrammation.Vousapprendrezd’une part à générer des images et des graphismes avec votre machine pourréaliser un labyrinthe et un jeu de basket. Vous utiliserez d’autre part le TI-Innovator™Hub,unboîtiercapabled’interagiravecsonenvironnementaumoyendecapteursetd’actionneurs,afindeconcevoirunpianotéléguidéetunascenseur.
Issus de projets réalisés avec des élèves de seconde, les chapitres de ce livrecomportent un grand nombre d’exercices, de petits défis, ainsi que desprogrammesàexécuterouàcompléter.Touteslessolutionsdecesexercicessontdisponibles sur http://go.eyrolles.com/ti ou par les QR codes figurant dansl’ouvrage. Vous y trouverez également des vidéos qui viendront complétercertainesexplicationsthéoriquesoupratiques.
AusommairePréambule:programmationaveclaTI-83PremiumCEetleTI-Innovator™Hub.Écritured’unprogramme•Programmationgraphique•ProgrammationavecleTI-Innovator™Hub•Lelabyrinthe.Lescodesdes touches•Affichaged’unpoint à l’écran • Affichage et déplacement du personage • Construction dulabyrintheetfinalisationdujeu•Lepianonumérique.Etsionparlaitcouleurs?Transformer sa calculatrice en piano • Le capteur de lumière • Le capteur dedistance•Lejeudebasket.Préparationdesimagesd’arrière-plan•Descriptiondujeuettracédesdessins•Codagedelaboucleprincipaledujeu•L’ascenseur.Matériel nécessaire au projet • Connexion des microrupteurs • Connexion durelaisetdumoteur•Constructiondelacaged’ascenseur•Branchementducircuitetécritureducode•Gestiondeladescente•Annexe:liensutiles.
Àquis’adressecelivre?•AuxélèvesdesecondeICN•Àtousceuxquisouhaitentprogresserenprogrammation
BiographieauteurPassionnéparlarobotiqueetlesnouvellestechnologies,Jean-BaptisteCivetestprofesseurdemathématiquesetmembredel’équipeT3(TeachersTeachingwithTechnology),unréseauinternationald’enseignantsfédéréparTexasInstruments.Ilparticipeàlaformationcontinue(mathématiques,usagedunumérique)etanimeunatelierderobotiquedanssonétablissementdepuisseptans.Professeurdemathématiquesenlycéeetdanslesupérieur,égalementmembredel’équipeT3,BorisHanušenseignelesspécialitésISNenterminaleSetICNensecondedepuisleurcréation.Trèsinvestidansl’utilisationdel’informatique,descalculatricesetducalculformelavecsesélèves, ilcontribueaudéveloppementdel’usagedesnouvellestechnologiesdanssonétablissement.
www.editions-eyrolles.com
Jean-BaptisteCivetBorisHanuš
AlgorithmiqueetprogrammationaveclaTI-83PremiumCE
ÉditionsEyrolles61,bdSaint-Germain
75005Pariswww.editions-eyrolles.com
MerciàCarlos,JohannaetAntoinepourleursoutiendansceprojet.
Attention : la version originale de cet ebook est en couleur, lire ce livrenumériquesurunsupportdelecturenoiretblancpeutenréduirelapertinenceetlacompréhension.
Attention:pourlirelesexemplesdelignesdecode,réduisezlapolicedevotresupportaumaximum.
Conceptiongraphiqueetmiseenpages:NordCompo
Enapplicationdelaloidu11mars1957,ilestinterditdereproduireintégralementoupartiellementleprésentouvrage,surquelquesupportquecesoit,sansautorisationdel’éditeurouduCentrefrançaisd’exploitationdudroitdecopie,20,ruedesGrands-Augustins,75006Paris.
©A4Technologiepourlesphotosdespages60et61©Jean-BaptisteCivetpourlesphotosdespages55et62©TexasInstrumentspourtouteslesautresphotosdel’ouvrage
©GroupeEyrolles,2017ISBN:978-2-212-67400-2
Avant-propos
Cet ouvrage à vocation pratique va vous faire découvrir deux champscomplémentaires de l’algorithmique et de la programmation avec la TI-83PremiumCE.D’unepart,vousapprendrezàcréerdesimagesetdesgraphismessurvotrecalculatricedanslebutdeconcevoirunlabyrintheetunjeudebasket.D’autre part, vous utiliserez le TI-Innovator™ Hub, un boîtier relié à lacalculatrice qui est capable de communiquer et d’interagir avec sonenvironnement à l’aide de capteurs et d’actionneurs. Vous serez ainsi amené àconstruireunpianotéléguidéetunascenseur,niplusnimoins!
Chaquechapitreestponctuépardenombreuxexercicesetdéfisàréaliser.Àcôtéde chaque énoncé d’exercice, vous trouverez un QR code et son lien associépointant tous deux sur la solution. Ce lien est présenté de manière réduite(go.eyrolles.com/...) mais doit en réalité s’écrire sous la formehttp://go.eyrolles.com/... La solution pourra être un programme àtélécharger, ou/et un fichier PDF à lire, ou/et une vidéo à visionner. Dans cederniercas,leQRcodeseraaccompagnédusymbole .
Tousces fichiersetvidéossontparailleursdisponiblessur l’extensionwebdel’ouvrage http://go.eyrolles.com/ti, sur laquelle figurent également lessolutionsdechaquedéfi.
Àvousdejouermaintenant!
Sommaire
Préambule
ProgrammationaveclaTI-83PremiumCEetleTI-Innovator™Hub
Écritured’unprogrammeEnutilisantl’uniténomade(lacalculatrice)EnutilisantlelogicielTIConnect™CE
ProgrammationgraphiqueFenêtragePrimitivesdedessin
ProgrammationavecleTI-Innovator™HubInstallonsl’applicationTI-Innovator™HubAllumonsuneLEDOuvronsleTI-Innovator™Hubàsonenvironnement
Chapitre1
Lelabyrinthe
ÉTAPE1 Lescodesdestouches
ÉTAPE2 Affichaged’unpointàl’écranEnutilisantlescoordonnéesdurepèreEnutilisantlescoordonnéesdespixels
ÉTAPE3 Affichageetdéplacementdupersonnage
ÉTAPE4 Constructiondulabyrintheetfinalisationdujeu
Chapitre2
Lepianonumérique
ÉTAPE1 Etsionparlaitcouleurs?SurlaTI-83PremiumCESurleTI-Innovator™Hub
ÉTAPE2 TransformersacalculatriceenpianoL’instructionSOUNDLaleçondepiano
ÉTAPE3 Lecapteurdelumière
ÉTAPE4 Lecapteurdedistance
Chapitre3
Lejeudebasket
ÉTAPE1 Préparationdesimagesd’arrière-plan
ÉTAPE2 DescriptiondujeuettracédesdessinsPositiondelamainLepanierdebasketetlesjaugesTestintermédiaire
ÉTAPE3 Codagedelaboucleprincipaledujeu
Chapitre4
L’ascenseur
Matérielnécessaireauprojet
ÉTAPE1 Connexiondesmicrorupteurs
ÉTAPE2 Connexiondurelaisetdumoteur
ÉTAPE3 Constructiondelacaged’ascenseur
ÉTAPE4 Branchementducircuitetécritureducode
ÉTAPE5 Gestiondeladescente
Annexe
Liensutiles
Préambule
ProgrammationaveclaTI-83PremiumCEetleTI-Innovator™Hub
Avantdedécouvrirlesdifférentsprojetspratiquesdecelivre,étudionsensemblequelquesmanipulationsdelaTI-83PremiumCEquivontêtreessentiellespourlasuite.NousenprofiteronségalementpourfaireconnaissanceavecleTI-Innovator™Hub,unboîtierquipermetd’étendrelesfonctionnalitésdelacalculatrice.
Écritured’unprogrammePour écrire un programme avec la TI-83 Premium CE, vous avez deuxpossibilités:soitutiliserdirectementleclavierdelacalculatrice,soitsaisirceprogrammesurordinateuretletransférersurlacalculatricegrâceaulogicielTIConnect™CE.
Enutilisantl’uniténomade(lacalculatrice)
Appuyezd’abordsurlatouche delaTI-83PremiumCE.Puis,àl’aidedesflèches,allezdansl’ongletNOUVEAU,choisissezlaseuleactionpossibleCréeretvalidez votre choix via la touche . Saisissez alors le nom de votreprogramme.Cen’estqu’unefoiscetteopérationdesaisievalidéeparlatouche
quevouspourrezcommenceràécrirelecodeduprogramme.
Vousremarquerezquesivousappuyezdenouveausurlatouche ,lemenuachangé et donne désormais accès aux fonctions de programmation classiques :boucles,conditions,affichages...Saisissezalorsvotreprogramme.Enfin,quittezl’éditeurenappuyantsur , .
Pourexécuterleprogramme,appuyezsurlatouche ,sélectionnez-ledanslaliste des programmes proposés et validez votre choix via la touche . Leprogrammeeffacel’écran,écrit«Hello»,puiss’arrête.
EnutilisantlelogicielTIConnectTMCE
CelogicielpourPCetMacpeutêtretéléchargégratuitementsurlesitedeTexasInstruments : https://education.ti.com/fr/products/computer-
software/ti-connect-ce-sw. Il permet notamment de saisir des programmessurvotreordinateuretdelestransférersurlaTI-83PremiumCE.
Sur votre ordinateur, ouvrez le logiciel TI Connect™ CE. Cliquez ensuite àgauchesur l’icôneÉditeurdeprogrammesetécrivezvotreprogramme.Puis,aprèsvousêtreassuréquelacalculatriceestbienbranchéeàl’ordinateurviasoncâbleUSB,transférezleprogrammesurlaTI-83CEencliquantsurlebouton.Leprogrammetransféréauralemêmenomqueceluid’origine(ici,MONTEE).
C’estégalementlelogicielTIConnect™CEquivouspermettradetransférersurvotre calculatrice les fonds d’écran de jeu que vous aurez créés sur votreordinateur.Ilconvertiraces imagesdansunformatcompréhensiblepar laTI-83PremiumCE.
Pour transférer une image sur la calculatrice, connectez cette dernière à votreordinateur. Dans TI Connect™ CE, cliquez sur l’icône Explorateur de
calculatrice,puissurleboutondetransfertdel’ordinateurversl’uniténomade. Choisissez alors le fichier à transférer et son emplacement sur la
calculatrice.
ProgrammationgraphiqueDansleschapitresdece livre,vousallezgénérerdes imagesetdesgraphismesavecvotrecalculatrice.Maissavez-vousconfigurersonenvironnementgraphiqueetutilisersesfonctionsdedessin?
Fenêtrage
Pourbiendessiner sur laTI-83PremiumCE, il faut partir d’un écranvide auxdimensionsadéquates.Maiscen’estpas toujours lecasselon le travailquiyaprécédé : présence des axes, de fonctions, etc.Vous devrez alors configurer la
fenêtregraphiquedelacalculatrice,soitmanuellementvialatouche ,soitendéfinissant directement dans vos programmes les variables d’environnementgraphique,auxquellesonaccèdeparlatouche .
Ainsi,dans l’extraitdeprogrammeci-après,ondemandeà lacalculatricedesemettreenmodefonction(Fonc),denepasafficherlesfonctionssicertainessont
actives(FoncNAff),denepasafficherlesaxes(GraphNAff),etc.
Lesinstructionsci-avantsontaccessiblesvialestouches , etongletVARY, et ,et et .
Primitivesdedessin
Pourutiliserlesfonctionsgraphiquesdevotrecalculatricedansvosprogrammes,appuyez sur les touches , , puis naviguez dans les onglets DESSIN,POINTS,ENRetARR-PLAN.
C’est dans l’ongletDESSIN que vous trouverez par exemple la routine de tracéLigne,etdansl’ongletPOINTSlesroutinesrelativesauxmanipulationsdepixels.
Savez-vousqu’enpositionnantlecurseurenregardd’unefonctionàl’aidedesflèchesetqu’enpressantlatouche ,vousfaitesapparaîtreunmenucontextueld’aide?Bienpratiquepourretrouverlesparamètres
d’unefonction!
Attention,neconfondezpasl’ongletARR-PLAN,accessibleparlestouches ,, avec lemenu Pic et arrière-plan, accessible par la touche et
l’onglet Variables. Le premier donne accès à la fonction ArrPlanAff, quipermetdansunprogrammed’allerchercherunarrière-planpourl’afficher:
Lesecondpermetdevisualiserlesimagesd’arrière-plandisponiblesdansvotrecalculatrice,préalablementtransféréesàl’aidedeTIConnect™CE.
ProgrammationavecleTI-Innovator™HubDans ce livre, nous allons découvrir le très grand potentiel du TI-Innovator™Hub,unpetitboîtierquisebranchesurlacalculatriceTI-83PremiumCE.Grâceà ses composants intégrés (microcontrôleur, LED, capteur de lumière, haut-parleurs…) et ses différents ports d’entrée/sortie, il permet de développer demultiplesprojets.Regardonsicicommentlefairefonctionner,puistestons-leavecquelquesopérationssimples.
Installonsl’applicationTI-Innovator™Hub
Pour pouvoir utiliser le TI-Innovator™ Hub, vous devez d’abord vérifier quevotreTI-83PremiumCEutilisebienlesystèmed’exploitation5.2ouultérieur:appuyez sur , , et sélectionnez À propos de. Si ce n’est pas le cas,mettezàjourvotrecalculatriceviahttps://education.ti.com/fr/product-resources/whats-new-84-ce.
Pourvérifiersil’applicationTI-Innovator™Hubestdéjàinstalléesurvotrecalculatrice,appuyezsur , ,sélectionnezGest.Mémoire/Suppr.puisApps,etrecherchezHubdanslalistedes
applicationsinstallées.
Vousdevezensuite télécharger et installer l’applicationTI-Innovator™Hub sur
votrecalcultatrice,saufsielleyestdéjà.Voicicommentprocéder.
1. Assurez-vous d’avoir installé la version 5.2 ou ultérieure du logiciel TIConnect™CEsurvotreordinateur(voirpage9).
2. Sur votre ordinateur, allez à l’adresse https://education.ti.com/fr/software/details/en/150E0DDCE2FF46C0BB96C5230970F967/ti-innovator-hub.
3. Téléchargez l’application TI-Innovator™ Hub. Notez les noms du fichiertéléchargéetdudossierdanslequelvousl’enregistrez.
4.Connectezvotrecalculatriceàl’ordinateuràl’aideducâbleUSBfourni.
5.Sur l’ordinateur, ouvrez le logicielTIConnect™CE,quidoit reconnaître lacalculatrice.
6. Dans le menu Actions, sélectionnez Ajouter des fichiers depuis unordinateur.TIConnect™CEvousinvitealorsàchoisirunfichier.
7. Naviguez jusqu’au dossier où vous avez enregistré le fichier téléchargé etdouble-cliquezsurcedernier.
8. Dans la fenêtre Envoyer aux calculatrices qui apparaît, cliquez surENVOYER.
Votre TI-Innovator™ Hub est maintenant prêt à l’emploi ! Si vous allez dansl’éditeurdeprogrammes,vousconstaterezqu’enappuyantsur la touche ,unongletHUB est apparu enhaut, preuveque l’applicationTI-InnovatorHub™estbieninstallée.
AllumonsuneLED
Àl’aideducâbleUSBfourni,reliezleTI-Innovator™HubàlaTI-83PremiumCE,enbranchantleconnecteurUSBdetypeBsurleHub,commesignaléparlepictogramme.LeconnecteurdetypeAdoitêtrereliéàlacalculatrice.
CréezunprogrammeLIGHTetsaisissezleslignesdecodesuivantesennaviguantdanslesmenusSend(«SETetSettingsdel’ongletHUB:
Send(“SETLIGHTON”)
Wait1
Send(“SETLIGHTOFF”)
Wait1
Lorsquevouséditezunprogrammenécessitantl’utilisationduTI-Innovator™Hub,voustrouverezlesroutinespermettantdelepiloter
dansl’ongletHUB,accessibleparlatouche .
Attention!Rappelez-vousquelatouche nedonnepasaccèsauxmêmesmenusselonqu’onestdansl’écrandecalculoudansl’éditeurde
programmes.
Sionexécuteleprogramme,ladioderougeduTI-Innovator™Hubs’allumepuiss’éteintauboutd’uneseconde.
Pourexécuterunprogrammeàpartirdel’écrandecalcul,appuyezsurlatouche etsélectionnez-ledanslaliste.Validezunepremièrefoisvia
pourquelenomduprogrammeapparaissedansl’écrandecalcul,puisvalidezànouveaupourl’exécuter.
OuvronsleTI-Innovator™Hubàsonenvironnement
Grâceàsesmultiplesportsd’entrée/sortie,leTI-Innovator™Hubalapossibilitédecommuniqueravecsonenvironnement.IlestainsicompatibleaveclaplupartdescapteursetactionneursGrove,quisontdisponiblesenkitouaudétailchezlesrevendeursdefournituresélectroniques.
Commençonspartesteruncapteuràultrasons,enlebranchantsurleportIN1duHubàl’aideducâblenormaliséfourni.
Attention,certainscapteursdoiventêtrebranchéssurleportIN3duHubenraisondeleurtensiond’utilisation.
Saisissezleprogrammesuivant:
Send(“CONNECTRANGER1TOIN1”)
Send(“READRANGER1”)
Get(R)
Disp(R)
Lorsdesonexécution,ceprogrammerenverralavaleurdeladistanceséparantlecapteuràultrasonsdel’obstacleleplusproche.
BranchonsàprésentdesactionneursGrove(relaisetservomoteur)sur lesportsOUTduTI-Innovator™Hubàl’aidedescâblesfournis.Onferaattentionàleurtension d’utilisation : le relais sera branché sur le port OUT 1, mais leservomoteur devra être connecté au port OUT 3. Il faut en outre ajouter unealimentationexterneenlabranchantsurleportmicroUSBPWR.
ExerciceDéterminercequ’ilvasepasseravecleprogrammesuivant.
Send(“CONNECTSERVO1TOOUT3”)
Send(«SETSERVO1TO-90»)
http://go.eyrolles.com/ti-intro
ÉtudionsmaintenantunautremodedecommunicationduTI-Innovator™Hubavecson environnement : la platine d’expérimentation (breadboard en anglais).Appelée encore platine d’essai, cette plaque permet de réaliser des montagesélectroniques sans soudure, grâce à ses brochesqui sont reliées entre elles pardesbandesmétalliques.
Laplupartdesbrochessontregroupéesparcolonnesdecinq.Touteslesbrochesd’une même colonne sont connectées électriquement les unes aux autres, maischaque colonne est isolée des autres. De part et d’autre de ces colonnes setrouventdesrailsd’alimentation,signaléspardesbandesrouges(+)etbleues(–).Lesbrochesd’unrailsontreliéesentreellessurtoutelalongueurdelabande.
Voiciuneplatinevuededessus(imageduhaut)etdedessous(imagedubas).
QuantauxbrochesduHub,ellessontaunombrede20au total :10brochesdesignal, 8brochesdemise à la terre, unebroched’alimentationde3,3Vet unebroched’alimentationde5V.
Nous utiliserons une platine d’expérimentation dans le dernier chapitre de celivre.
Chapitre1
Lelabyrinthe
Lebutdecechapitreestdecréerunlabyrinthedanslequelilfautdéplacerunpersonnagejusqu’àlasortieàl’aideduclavier.
ÉTAPE1 Savoirsurquellestouchesduclavierappuielejoueurafindeprogrammerlemouvementdupersonnage.
ÉTAPE2 Apprendreàafficherunpointàl’écran.
ÉTAPE3 Dessinerlepersonnagepuisl’affichersurl’écranenutilisantlespixelsdecouleur.
ÉTAPE4 Créerlelabyrintheetgérerlemouvementdupersonnageàl’intérieur.
ÉTAPE1 Lescodesdestouches
Pourdéplacer lepersonnagedans le labyrinthe, le joueurdevraappuyersur lesflèchesdedirection.Ilfautdoncsavoirquellestouchesduclavierilpressepourdéterminerlemouvementdupersonnage.
À chaque touche du clavier est associé un nombre. Pour savoir dans unprogramme quelle touche est enfoncée, il faut utiliser l’instruction GetKey,accessiblevialatouche ,ongletE/S.Cetteinstructionrenvoielecodedelatouchequiaétéappuyée,ou0siaucunetouchen’estpressée.Maisattention:dèsqu’on a fini d’appuyer sur une touche, GetKey reprend la valeur 0. C’est unefonctiondontlavaleurestactualiséeàchaquemillièmedeseconde.
IlfautdoncécrireunprogrammequitesteconstammentlavaleurdeGetKey (quivaut0tantqu’unetouchen’estpasenfoncée),etquis’arrêtedèsqu’unetoucheaétépressée,enaffichantlecodedelatouche.Ceprogramme,quiaffichelecodedelatouchesurlaquelleonappuie,estprésentéci-après.
DÉFI1Commentmodifierleprogrammeci-avantpourque,sansêtrerelancé,ilaffichelecodedechaquetoucheenfoncée?Indication:ilsuffitdesupprimeruneligne…
Exercice1
Exécuter le programme précédent et déterminer le code des touches ,
, et .
Pourexécuterunprogramme,ilfaut:1.sortirdel’éditeurdeprogrammesvia , ;
2.choisirleprogrammeàexécutervia ,ongletEXEC;3.sélectionnerlenomduprogrammesouhaité.
go.eyrolles.com/ti-ch1ex1
Exercice2Surcettecalculatrice,inscrirelecodedechacunedestouches.
go.eyrolles.com/ti-ch1ex2
Exercice3Compléterlespointillésduprogrammesuivantpourqu’ilafficheàl’écranuncompteurCquidémarreà5etquiaugmentede10chaquefoisqu’onappuie
surlatouche .
5→C
0→B
WhileB=0
getKey→A
IfA=26
Then
………………→C
Output(10,14,C)
End
End
Laboucleci-avantvas’exécutertantqueB=0.CommeBnechangerapasdevaleur,leprogrammenes’arrêterajamais!
Outputpermetd’afficheruntexteouunevariableàunendroitprécisdel’écran,commeiciligne10etcolonne14.
go.eyrolles.com/ti-ch1ex3
Exercice4ModifierleprogrammeprécédentpourqueCdiminuede10lorsqu’onappuiesurlatouche .
go.eyrolles.com/ti-ch1ex4
Exercice5Modifier le programme précédent pour afficher, à gauche de l’écran, lavariableC (dont lavaleurchangeavec les flèches et ) et, àdroitede
l’écran,unevariableLquivarieaveclesflèches et .
go.eyrolles.com/ti-ch1ex5
ÉTAPE2 Affichaged’unpointàl’écran
Pourafficherunpointàl’écran,ilexistedeuxméthodes,selonqu’onseréfèreauxcoordonnéesdurepèreouàcellesdespixels.
Maistoutd’abord,ilfautsupprimeràl’écrantoutaffichagenonsouhaité(tracédefonctions, graphique statistique, etc.). Vous devez donc effacer les fonctionsprésentesdans etdésactiverGraph1,Graph2etGraph3quinedoiventpasêtreensurbrillance(sivousvoyezparexemple ,c’estqu’ilestactivé!).
Votreécrandoitressembleràceluici-après.
PourdésactiverunGraph,sepositionnerdessusaveclesflèchesdedirectionetappuyersur .
Enutilisantlescoordonnéesdurepère
Exercice6DéterminerlescoordonnéesdespointsCetD:
go.eyrolles.com/ti-ch1ex6
Lerepèrepeutêtremodifiéenappuyantsur .
Si on utilise les coordonnées du repère, l’instruction permettant d’afficher unpointàl’écranestalorsPt-Aff(abscisse,ordonnée).Elleestaccessiblevia
, ,ongletPOINTS.
Pour afficher le point A en bleu, il faut écrire la ligne de code Pt-Aff(2,4,BLEU)enrécupérantleBLEUdansl’ongletCOULEURvialatouche .
Exercice7Écrireunprogrammequipermetd’afficherlespointsprécédentsA,B,CetDenrespectantleurcouleur.
Onaccèdeauxnomsdescouleursdisponiblesvia ,ongletCOULEUR.
go.eyrolles.com/ti-ch1ex7
Enutilisantlescoordonnéesdespixels
Sionn’utilisepaslerepèreprécédent,ilfautd’abordsupprimersonaffichageenchoisissant via , .
Pourrepérerunpointsurl’écrandelaTI-83PremiumCE,onpeutaussiseréférerauxcoordonnéesdespixels,sachantquecetécranaunelargeurde265pixelsetune hauteur de 165 pixels.Dans ce cas, l’instruction pour afficher un point estPxl-Aff(ligne,colonne,[couleur]),accessiblevia , .
Attention!Onneserepèreplusaveclerepèrehabituel…maispar ligneetparcolonne (l’origine du nouveau repère étant en haut à gauche). Pour biencomprendreceprincipe,effectuonsunzoomducoinsupérieurgauchedel’écran:
et représentons la zone agrandie ci-après en activant quatre pixels de couleursdifférentes.
Lepixelnoirestsituéligne2,colonne4,doncl’instructionpourl’afficherest:Pxl-Aff(2,4,NOIR)
Dansunprogrammequidessine(despixelsouautres),ilfautprévoiraudébutl’instructionEffDess(accessiblevia , )poureffacerles
anciensdessins.
Exercice8Donnerlesinstructionspourafficherlestroisautrespixelsdecouleur.
go.eyrolles.com/ti-ch1ex8
Exercice9Écrireunprogrammequiaffichelesquatrepixelsprécédents(ouvrezbienlesyeux,c’esttoutpetit!).
Ledessinpixelparpixelpeuts’avérertrèslong!ReprésentonsunsegmentaveclaboucleFORgrâceàceprogrammenomméCARREMVT:
EffDess
For(I,5,17)
Pxl-Aff(I,10,NOIR)
End
Àl’exécution,onpeutvoirlesegmentci-aprèsquis’affiche.
go.eyrolles.com/ti-ch1ex9
Exercice10Compléterleprogrammeprécédentafindereprésenterlecarréci-dessous:
go.eyrolles.com/ti-ch1ex10
DÉFI2Commentécrireunprogrammeencinqlignesquicolorietoutl’écranenbleu?
ÉTAPE3 Affichageetdéplacementdupersonnage
Nous allons maintenant déplacer le carré précédent à l’aide des flèches dedirection. Pour commencer, écrivons un programme qui le fait avancer de 10pixelsàdroitelorsqu’onappuiesurlatouche (touchequiapourcode26).
Enréalité,nousavonsbesoindedeuxprogrammes.
• Le programme CARRE qui permetd’afficherlecarré:
For(I,5,17)
• Le programme PRINCIPA qui faitaugmenter de 10 une variable C
(démarrantà5)lorsqu’onappuiesur
Pxl-Aff(I,10,NOIR)
Pxl-Aff(I,22,NOIR)
End
For(I,10,22)
Pxl-Aff(5,I,NOIR)
Pxl-Aff(17,I,NOIR)
End
laflèche :
DispGraph
EffDess
5→C
0→B
WhileB=0
getKey→A
IfA=26
Then
C+10→C
End
End
L’instructionDispGraph,accessiblevia ,ongletE/S,permetd’afficherlafenêtre
graphique.
Pour faire le lien entre cesdeuxprogrammes, nous allonsd’abordmodifier lesinstructionsPxl-AffafindetenircomptedeC.Enparticulier,lescoordonnéesducarrédoiventdépendredecettevariable.Deplus,dansleprogrammePRINCIPA,dèsqueCchangedevaleur,ilfautdemanderd’exécuterledessinducarré,c’est-à-direleprogrammeCARRE.Onaboutitdoncauxprogrammessuivants.
• ProgrammeCARRE:
For(I,5,17)
Pxl-Aff(I,C+10,NOIR)
Pxl-Aff(I,C+22,NOIR)
End
For(I,10,22)
Pxl-Aff(5,C+I,NOIR)
Pxl-Aff(17,C+I,NOIR)
End
• ProgrammePRINCIPA:
DispGraph
EffDess
5→C
0→B
WhileB=0
getKey→A
IfA=26
Then
C+10→C
prgmCARRE
End
End
Pourécrirel’instructionprgmCARRE,appuyersur ,
ongletEXECetchoisirCARRE.
SionexécuteleprogrammePRINCIPAetqu’onappuiesurlaflèche ,lecarré
sedéplace!Maiscatastrophe,onconstatequelecarréprécédentrestevisible .Ilfautdoncl’effacer…
Pourcela,onvautiliser l’instructionPxl-NAff(ligne,colonne). Accessiblevia , ,ongletPOINTS,ellepermetd’éteindreunpixelenlecoloriantdelamêmecouleurquelefondd’écran(doncenblancici)avantdedessinernotrenouveaucarré.
Pourconnaîtrelapositionprécédenteducarré,nousallonsintroduireunevariableE qui correspondra à l’anciennevaleurdeC.E sera donc définie juste avant lechangementdevaleurdeC.
• ProgrammeCARRE:
For(I,5,17)
Pxl-NAff(I,E+10)
Pxl-NAff(I,E+22)
End
For(I,10,22)
Pxl-NAff(5,E+I)
Pxl-NAff(17,E+I)
End
For(I,5,17)
Pxl-Aff(I,C+10,NOIR)
Pxl-Aff(I,C+22,NOIR)
End
For(I,10,22)
Pxl-Aff(5,C+I,NOIR)
Pxl-Aff(17,C+I,NOIR)
End
• ProgrammePRINCIPA:
DispGraph
EffDess
5→C
0→B
WhileB=0
getKey→A
IfA=26
Then
C→E
C+10→C
prgmCARRE
End
End
Exercice11ModifierleprogrammePRINCIPApourquelecarrépuissesedéplacerverslagauche.
go.eyrolles.com/ti-ch1ex11
Exercice12ModifierlesprogrammesCARREetPRINCIPApourpouvoirdéplacerlecarréàl’aidedes flèches et .Onpourra introduireunevariable L (pourligne…).
go.eyrolles.com/ti-ch1ex12
Àprésent,ilfautdessinerlepersonnage!Sivoussouhaitezreprésenterl’image,ilfautladessinerpointparpoint…
Voicinotrepersonnagepixelparpixel:
Dessinerci-dessoussonproprepersonnage:
Dans le programme qui va dessiner le personnage, il est possible d’utiliserquelquesbouclespoursimplifierl'écritureducode.Eneffet,laligne1necontientquedespixelsverts.Cettelignepeutdoncs’écrire:
For(I,5,10)
Pxl-Aff(L+2,C+I,vert)
End
Cequiestpluscourtque:
Pxl-Aff(L+2,C+5,vert)
Pxl-Aff(L+2,C+6,vert)
Pxl-Aff(L+2,C+7,vert)
Pxl-Aff(L+2,C+8,vert)
Pxl-Aff(L+2,C+9,vert)
Pxl-Aff(L+2,C+10,vert)
Pourgérerlemouvementdupersonnage,nousavonsintroduitlesvariablesL(pourligne)etC(pourcolonne).
Onprocéderadelamêmemanièrepourladeuxièmeligne.Enrevanche,pourlaligne3,ondevraécrire:
Pxl-Aff(L+4,C+4,ROUGE)
Pxl-Aff(L+4,C+5,ROUGE)
Pxl-Aff(L+4,C+6,ROUGE)
Pxl-Aff(L+4,C+7,ORANGE)
Pxl-Aff(L+4,C+8,ORANGE)
Pxl-Aff(L+4,C+9,NOIR)
Pxl-Aff(L+4,C+10,ORANGE)
Exercice13ÉcrireleprogrammePERSquiaffiche lepersonnage.PuisanimercedernierenexécutantetenmodifiantleprogrammePRINCIPA.
Onremarquequ’àchaquedéplacement, lepersonnage resteaffiché. Il fautdoncécrire un programme qui va effacer l’ancien personnage avant d’afficher lenouveau.Onpourrautiliserl’instructionPxl-NAff.
go.eyrolles.com/ti-ch1ex13
Exercice14Écrire le programme PERSOFF qui efface le personnage, puis modifier leprogrammePRINCIPAen conséquence.Dans cedernier, il faudra appeler leprogramme PERSOFF en ayant préalablement stocké les coordonnées del’anciennepositiondupersonnage.
go.eyrolles.com/ti-ch1ex14
ÉTAPE4 Constructiondulabyrintheetfinalisationdujeu
Danslaprogrammationd’unlabyrinthe,ladifficultéestdetraduireencodedansquel cas le personnage a le droit d’effectuer un déplacement. Comment allons-nouscréerl’objetinformatiquelabyrinthe?
Partonsdulabyrintheci-après:
ModélisonslesmursenconsidérantquelesquatrelignesbleuesdiscontinuesL1àL4 contiennent parfois des murs et parfois non. Sur chacune de ces lignesverticales,laprésenced’unmurseracodéeparun1,etsonabsenceparun0.
Avec ce système, la première ligne du labyrinthe sera codée de lamanière ci-après:
Exercice15PoursuivezlecodagedeslignesL2,L3etL4.
Précisonsquevousn’êtespasobligédeprendrecommemodèlelelabyrintheci-dessus.Vouspouvezdessinervospropresmursetlescoder!
go.eyrolles.com/ti-ch1ex15
Nousallonsmaintenantentrer lescodescorrespondantauxmursdansdeslistes,enappuyantsur etenchoisissantModifier.Celanouspermettradelirecesvaleurslorsdelaconstructiondulabyrinthe,ouéventuellementdelesmodifiersionsouhaitechangersonaspect.
Entronsalorslesvaleursdéterminéesprécédemment:
S’ilmanquedeslistes,appuyersur ,puischoisirÉditeurConfig.
Poureffacerleslistes,appuyersur ,puisentrerEffListeL1,L
2,
L3,L
4.
IlfautmaintenantécrireleprogrammeLABYquivadessinerlelabyrintheentenantcomptedesmurs(qu’onpourraéventuellementchangerparlasuiteenmodifiantles valeurs des listes L1, L2, L3 et L4 correspondant aux lignes du même nom).Commençonsparendessinerlecadreci-après.
Onpeututiliserunebouclepourafficherlesdeuxlignesverticales:
EffDess
For(I,22,132)
Pxl-Aff(3,I,BLEU)
Pxl-Aff(163,I,BLEU)
End
Exercice16Écrirelabouclepermettantd’afficherlesdeuxligneshorizontalesducadre.
Occupons-nousàprésentdesmurs.Nousallonscréerquatreboucles,puisquecesmurs ont été codés dans quatre listes.Unmur étant un segment, il faut d’aborddéterminerlescoordonnéesdespixelsdesextrémitésdechacund’eux.
Pour la liste L1, nous avons comme coordonnées (ligne, colonne) : (3,44) ;(23,44);(43,44);(63,44);(83,44);(103,44);(123,44);(143,44)et(163,44).
• SiL1(1)=1,alorsilfauttracerlalignede(3,44)à(23,44),sinononn’afficherien.
• SiL1(2)=1,alorsilfauttracerlalignede(23,44)à(43,44),sinononn’afficherien.
• SiL1(3)=1,alorsilfauttracerlalignede(43,44)à(63,44),sinononn’afficherien.………….
• Si L1(8)=1, alors il faut tracer la ligne de (143,44) à (163,44), sinon onn’afficherien.
La listeL1 seradonccodéede lamanière suivante (pour l’instructionPxl-Aff,pasbesoinicidepréciserlacouleur:ceseraalorspardéfautladernièreutiliséeparlacalculatrice):
For(I,1,8)
IfL1(I)=1
Then
For(J,0,20)
Pxl-Aff(3+20*(I-1)+J,22*2)
End
End
End
Onarriveàlaformuleci-avantenremarquantquelesnombres3,23,43,...,143peuvents'écriresouslaforme3+20×(I-1)avecIvariantde
1à8.
go.eyrolles.com/ti-ch1ex16
Exercice17Écrirelecodepourlestroisautreslistesafind’affichertouslesmurs.
Pourmarquerlafindujeu,ilfautquevotrepersonnageatteignelacerise.Ilfautdonccoderledessindecefruit(oud’unautredevotrechoix).OnaindiquéicilescoordonnéesdupixelORANGEderéférence.
go.eyrolles.com/ti-ch1ex17
Exercice18Coderlacerise(outoutautrefruitdedimensionéquivalente).
Ona presque fini ! Il ne reste plus qu’à écrire le programmeprincipal, appeléMAITRE,quiva:
• afficherlelabyrinthe;
• afficherlepersonnageàsapositioninitiale;
• permettre lemouvement du personnage (selon la présence ou l’absence d’unmur);
• s’arrêteretafficher«Gagné»lorsquelepersonnageauraatteintlacerise.
Lepremierpointestdéjàréglépuisqu’ilsuffitd’appelerleprogrammeLABYpourafficherlelabyrintheetlacerise:prgmLABY
Le second point est facile : il faut appeler le programme PERS en donnant desvaleursdedépartàsesvariablesLetC.OnprendraL=5etC=26pourafficherlepersonnageenhautàgauchedulabyrinthe.
prgmLABY
5→L
26→C
prgmPERS
Pour gérer le déplacement du personnage, il faut savoir où ce dernier sepositionne dans le labyrinthe. Considérons les cases (ligne U, colonne V) où ilpeutsesituer.
go.eyrolles.com/ti-ch1ex18
Exercice19DéterminerlavaleurdeUetdeVdanslesquatrecasci-après:
go.eyrolles.com/ti-ch1ex19
InitialisonslesvaleursdeUetVà1:
prgmLABY
5→L
26→C
prgmPERS
1→U
1→V
PuisprenonsunevariableBinitialiséeà0quipasseraà1silepersonnageatteintlacasedelacerise.OnvaécrireuneboucleWhileB=0etprendrelavaleurdelatoucheenfoncéeparl’utilisateurenlastockantdansunevariableA.
Si l’utilisateur appuie sur la flèche (code 34), il faut vérifier si lepersonnagepeutdescendre.Celan’estpossiblequesiUeststrictementinférieurà8.
Si lepersonnagepeutdescendre, il faut alorseffacer l’ancienpersonnage.Pourcela, il fautdéfinir lavaleurdeLetC (qui servent à effacer le personnage) enfonctiondeUetV.Onaprévudescasesde22pixelsde largesur20pixelsdehaut,sibienqu’ilestfaciled’exprimerLetCenfonctiondeUetV.
En tenant compte de la valeur initiale du personnage (L=5 et C=26), on obtientnaturellementlesrelations:
L=5+20*(U-1)etC=26+22*(V-1)
Oncodealorscetteaffectation,puisonlanceleprogrammePERSOFF.
OnaugmenteUde1,ondéfinitlanouvellevaleurdeLetonappelleleprogrammePERSpourafficherlepersonnageàsonnouvelemplacement:
prgmLABY
5→L
26→C
prgmPERS
1→U
1→V
0→B
WhileB=0
getKey→A
IfA=34
Then
IfU<8
Then
5+20*(U-1)→L
26+22*(V-1)→C
prgmPERSOFF
U+1→U
5+20*(U-1)→L
prgmPERS
End
End
End
Exercice20Coderlecasoùl’utilisateurappuiesurlatouche (code25).
Pour finaliser lemouvementdupersonnage, il fautvérifier s’il y aunmurà sadroitequand l’utilisateurappuiesur la touche (code26).SiV=1,on teste la
valeurdeL1(U);siV=2,ontestelavaleurdeL2(U),etc.Silavaleurestnulle,onautoriseledéplacement.Voicidonclasuiteduprogramme:
IfA=26
Then
IfV=1
Then
IfL1,(U)=0
Then
5+20*(U-1)→L
26+22*(V-1)→C
prgmPERSOFF
V+1→V
26+22*(V-1)→C
prgmPERS
End
End
IfV=2
Then
IfL2,(U)=0
Then
5+20*(U-1)→L
26+22*(V-1)→C
prgmPERSOFF
V+1→V
26+22*(V-1)→C
prgmPERS
End
End
go.eyrolles.com/ti-ch1ex20
Exercice21Traiterlesdeuxautrescasoùlepersonnageestencolonne3ou4.
go.eyrolles.com/ti-ch1ex21
Exercice22
Coderlecasoùl’utilisateurappuiesurlaflèche (code24).
Pourfinir,lorsquelepersonnagearrivedanslacasedufruit,ilfautprogrammerl’affichage de «VICTOIRE». Pour cela, on pourra utiliser l’instructionTextequiutiliselescoordonnéesdespixels(ligne,colonne):
Texte(ligne,colonne,"Texteàécrire")
go.eyrolles.com/ti-ch1ex22
Exercice23Terminer le programme en prévoyant un test à la fin pour savoir si lepersonnageestauniveaudelaceriseetempêchertoutautredéplacement.
go.eyrolles.com/ti-ch1ex23
Chapitre2
Lepianonumérique
LebutdecechapitreestdesefamiliariseravecleTI-Innovator™Hubetd’utilisersescapteursintégrés,puisdeleconnecteràuncapteurextérieurpourréaliserunpianotéléguidé.
ÉTAPE1 ApprendreàcoderunecouleuretactiverlaLEDduTI-Innovator™Hub.
ÉTAPE2 Déterminerlafréquenced’unenoteetjoueraupianoavecleTI-Innovator™Hub.
ÉTAPE3 UtiliserlecapteurdelumièreduTI-Innovator™Hub.
ÉTAPE4 BrancheruncapteurdedistancesurleTI-Innovator™Hub.
ÉTAPE1 Etsionparlaitcouleurs?
SurlaTI-83PremiumCE
SurlaTI-83PremiumCE,ondisposede15couleursprédéfiniesaveclesquellesonpeutdessinerouécriredutexte.
Chaquecouleurpeutêtredésignéeparsonnom,maisaussiparunnuméroquiluiestassocié.Ainsi,lebleuportelenuméro10,lerougelenuméro11,etainsidesuite jusqu’à24 (se référerà l’ordred’apparitiondescouleurspourendéduireces numéros). Cette numérotation peut simplifier le codage, par exemple pourgénéreruneimagedontonferavarierlacouleurdansuneboucle.
Dansl’éditeurdeprogrammes,lenomdescouleursestaccessibleenappuyantsur etenchoisissantl’ongletCOULEUR.
Pour afficher un texte dans la fenêtre graphique, il faut utiliser l’instructionTexte(ligne,colonne,"texteàafficher").Pourdéfinirsacouleur,ilfautprécéder cette instruction de la ligne CouleurTexte(nom ou numéro de la
couleur).
Quandonécritunprogramme,onaccèdeàl’instructionCouleurTextevia, .
Cesdeuxprogrammesréalisentdonclamêmeaction:
CouleurTexte(ROUGE)
Texte(10,10,"COUCOU")
CouleurTexte(14)
Texte(10,10,"COUCOU")
Dansl’instructionTexte,lerepérageutiliséestlepixel.Lescoordonnéescorrespondentdoncàlaligneetàlacolonnedupixel.
À l’aide de l’instruction Ligne, accessible via , , onglet DESSIN,dessinonsmaintenantunsegment.Lesargumentssont:
Ligne(X1,Y1,X2,Y2,affichage,couleur)
Une ligne s’affiche ainsi du point de coordonnées (X1,Y1) jusqu’au point(X2,Y2).Cescoordonnéessontdonnéesdanslerepère«classique»(voirplusbas).L’argumentaffichagepeutprendre lavaleur0poureffacer la ligneou1pour l’afficher. Comme vu précédemment, la couleur doit être un numérocomprisentre10et24,oubienlenomdelacouleur.
Commevudanslechapitre1,ilyadeuxfaçonsderepérerdespointsàl’écran:
• aveclescoordonnéesdespixels(origineenhautàgauche);
• aveclerepèredéfinienappuyantsurlatouche .
Afinde travailler facilementavecces repères, il est conseillédeparamétrer lafenêtreainsi:
L’originedurepère«pixel»estenhautàgauche:
Enrevanche,l’originedurepère«classique»estenbasàgauche:
Exercice1Reproduirelerectangleci-après,delargeur10pixelsetdehauteur45pixels.
go.eyrolles.com/ti-ch2ex1
SurleTI-Innovator™Hub
LaTI-83PremiumCEpermetde travailleravec15couleursseulement.Mais ilexisteunsystèmedecouleursbienpluscomplet:lecodeRGB(pourRedGreenBlue, Rouge Vert Bleu ou RVB en français). En mélangeant ces trois couleurs«élémentaires»ou«primaires»,onpeutgénérerdesmillionsd’autrescouleurs.Lavaleurdechacunedecestroiscomposantesestunnombrecomprisentre0et255.
Envoiciquelquesexemples
COULEUROBTENUE R G B
255 0 0
0 255 0
0 0 255
255 0 255
0 255 255
128 128 128
255 255 255
0 0 0
100 50 255
Lavisionhumainedescouleursestrenduepossiblegrâceàdescônesdelarétinequiontdessensibilitésdifférentesaurouge,vertetaubleu.
NousallonsutilisercecodeRGBpourmodifierlacouleurdelaLEDmulticoloreintégréeauTI-Innovator™Hub.Danslecodeci-dessous,l’utilisateurestinvitéàsaisirlesvaleursdescomposantesR,GetB,quisontensuiteaffectéesàladiodeduHub.
LeTI-Innovator™HubestaussiappeléHub.
EffÉcran
Disp"T=0POURARRETER"
1→T
RepeatT=0
PromptT,R,G,B
Send("SETCOLOReval(R)eval(G)eval(B)TIME3")
Wait3
End
Promptpermetàl’utilisateurdesaisirlesvaleursdeT,R,GetBlorsdel’exécutionduprogramme.TIME3signifiequelaLEDvaresterallumée3
secondes.
Send("SETCOLORestobtenuenappuyantsur ,ongletHUB,etenchoisissantCOLOR.
Lafonctionevalestunedesfonctionsprimordialesàconnaîtrelorsqu’onutiliseleTI-Innovator™Hub.Ici,leprogrammeenvoieauHubunelignedecommande,compriseentre lesguillemets,quicontientunechaînedecaractères.Lafonction
evalconvertitlavaleurcontenuedanslavariablepasséeenargument.
Supposonsparexempleque0,128et255soientaffectésrespectivementàR,GetB.LaligneSend("SETCOLOReval(R)eval(G)eval(B)TIME3")enverradoncauHublacommandesuivante"SETCOLOR0128255TIME3".
Sionn’utilisepas lafonctionevaletquel’onécritSend("SETCOLORRGBTIME3"),leHubrecevralacommande"SETCOLORRGBTIME3",cequ’ilnesaurapasinterpréter.
Exercice2Écrire un programme qui affiche une lumière orange, puis violette, puisblanche,pendant1secondesuccessivement.
go.eyrolles.com/ti-ch2ex2
ÉTAPE2 Transformersacalculatriceenpiano
L’instructionSOUND
Le TI-Innovator™ Hub permet d’émettre des sons grâce à son haut-parleurintégré.
Lehaut-parleurduHubconvertitlecourantensonaudible.Ilpeutémettredessonssurdesfréquencesallantde40Hzà4000Hz.
Pourutilisercehaut-parleur,ondoitemployerl’instruction:
Send("SETSOUNDFreqTIMEtemps")
Freqestunnombrecorrespondantàlafréquenceenhertzettempsestexpriméensecondes.
Lorsqu’un guitariste ou un pianiste accorde son instrument, il prend commeréférencelanote laquidoitvibrerà440hertz.Pourproduirecesonpendant1secondeavecleHub,onentredoncl’instruction:
Send("SETSOUND440TIME1")
xs
Nousallonsmaintenantcréerunprogrammepourémettreceson.
Oncommenceparallerchercherl’instructionSend("SET,quiestaccessibledans,ongletHUB.
Unefoiscetteinstructionsélectionnée,onchoisitSOUND.
Onentrealorslafréquence440.Onafficheensuitel’instructionTIMEenappuyantsur ,ongletHUB,etenchoisissantSettingspuisTIME.
Onadoncécritlaligne:
Enexécutantceprogramme,onproduitunsonde440Hertzpendant1seconde.
Laleçondepiano
Nous allonsmaintenant créer un petit clavier pour jouer du piano à l’aide destouchesdelacalculatrice!Nousafficheronsàl’écranl’imagedececlavier:
Ildevracorrespondreauxtouchessuivantesdelacalculatrice:
Letravailàeffectuercomportetroisétapes.
1. DessinerleclavieravecunlogicieldedessincommePaintouGimp.
2. Déterminerlafréquencedechacunedesnotes.
3. Associer à la frappe d’une touche l’émission du son correspondant à lafréquencedelanote.
Lesétapes1et3sontréalisablesaveccequiaétévuprécédemment.Pourl’étape2,nousavonsbesoindequelquesnotionsdemusique.
Pour connaître la fréquence de chaque note de notre gamme, nous allons faireappelauxfractions,enutilisantdeuxrègles.
• Règlen°1:d’uneoctaveàlasuivante,lesfréquencessontmultipliéespar2.
Par conséquent, comme le la de référence vibre à 440Hz, le la de l’octavesupérieurevibreraà880Hzetceluidel’octaveinférieureà220Hz.
• Règlen°2:lerapportdefréquenced’unequinteesttoujoursde (pourceux
quinelesaventpas,onprécisequ’unequinteestcomposéede7demi-tons).
Danslafigureci-dessous,onestpartidudoetonaainsicompté7demi-tonspourarriverausol.
Autreexemple,onestpartiicidulaetonacompté7demi-tonspourarriveraumi.
Silelavibreà440Hz,lemidelafigureprécédente,quisetrouveunequinteau-dessus,vibreradoncà:
Etlemidel’octaveprécédentevibreraà =330Hz.
Afindeserepérersurleclavier,numérotonslesoctaves.Onadonclesrésultatssuivants:
Exercice3Enpoursuivantletravaildequinteenquinteetd’octaveenoctave,déterminerlesfréquencesdelaquatrièmeoctave(enbleuci-dessus).
go.eyrolles.com/ti-ch2ex3
Exercice4ÉcrireàprésentunprogrammePIANOquiassocieàchaquetoucheunenotedelagamme.
Indications:aprèsavoirdessinéleclavier,oncréerauneboucleWhileetonprendra la valeur de la touche sur laquelle l’utilisateur appuie à l’aide del’instructionGetKeyqu’onstockeradansA.Puis,selonlavaleurdeA,onferavibrer lehaut-parleurduHub en envoyant l’instructionSend( "SET SOUND*** TIME 1" ). On remplacera *** par la fréquence qui convient (quidépenddoncdelavaleurdeA).
go.eyrolles.com/ti-ch2ex4
ÉTAPE3 Lecapteurdelumière
SurlecôtéoùestbranchélecâblereliantleTI-Innovator™Hubàlacalculatrice,ontrouveuncapteurdelumièrequipermetdemesurerlaluminosité(Brightness).
L’instructionpourlirelaquantitédelumièrereçueparlecapteurestSend("READBRIGHTNESS"). Puis il faut récupérer cette valeur à l’aide de l’instructionGet(nomvariable),quilastockeradansunevariableafindel’exploiter.
LacommandeSend("READBRIGHTNESS")estaccessiblevia ,ongletHUB:choisiralorsSend("READ.
Stockonscettevaleurdeluminosité(expriméeenpourcentage)dansunevariableBetcommençonsparl’afficher:
Send("READBRIGHTNESS")
Get(B)
DispB
LacommandeGetestaccessiblevia ,ongletHUB.
Ce code va donc afficher la valeur de la luminosité captée par le Hub aulancementduprogramme.
Modifions-lepourobtenirunaffichagecontinudelaluminosité:
EffÉcran
0→A
WhileA=0
Send("READBRIGHTNESS")
Get(B)
Output(5,5,B)
End
Oncréeuneboucleinfinieenaffectant0àAetenécrivantWhileA=0.
Àl’exécutionduprogramme,onverra lavaleurde la luminosités’actualiserencontinu. Si on approche le capteur d’une source de lumière comme une lampe,cettevaleuraugmentera.
On remarque que la valeur est plutôt inférieure à 10 dans une pièce.Mais elleaugmente rapidement lorsqu’on s’approche d’une source lumineuse naturelle ouartificielle.
Exercice5Compléterlespointillésduprogrammeci-dessous,quiémetunsonlorsquelavaleurducapteurdelumièreestsupérieureà10.ÀquoisertlavariableL?
EffÉcran
0→A
0→L
WhileA=0
Send("READBRIGHTNESS")
Get(B)
Output(5,5,B)
IfB>……………
Then
IfL=0
Then
1→L
Send("SETSOUND500TIME1")
End
End
End
go.eyrolles.com/ti-ch2ex5
DÉFI3MettezleTI-Innovator™Hubsousunelampe.CommentmodifierleprogrammeprécédentpourqueleHubémetteunsonaiguquandlalampeestalluméeetunsongravequandelleest
éteinte?
ÉTAPE4 Lecapteurdedistance
Nous allons à présent utiliser un capteur de distance, qui permet demesurer ladistance leséparantd’unobstacleà l’aided’ultrasons. Iln’yenapasdefourniavecleHub,maisonpeuts’enprocurerunaveclekitTI-Innovator™BreadboardPack.
Tout d’abord, il faut connecter le capteur de distance au port IN 1 du TI-Innovator™Hub.
Écrivonsunprogrammequiaffichelavaleurrenvoyéeparlecapteur:
EffÉcran
1→A
Send("CONNECTRANGER1TOIN1")
WhileA=1
Send("READRANGER1")
Get(R)
Output(5,13,100*R)
Wait0.1
End
La ligneSend("CONNECTRANGER1TOIN1")permetd’établir laconnexiondu capteur avec le TI-Innovator™ Hub au port IN 1. La ligne Send("READRANGER1")écritlavaleurrenvoyéeparlecapteuretGet(R)stockecettevaleurdanslavariableR.Onaécrit100*Rpourexprimerlavaleurencentimètres.
Exécutezceprogrammeetmettezvotremainau-dessusducapteurenl’approchantouenlareculant.
Exercice6Modifierleprogrammeprécédentpourqu’unsonsoitémissivotremainestàmoinsde20cmducapteur.
go.eyrolles.com/ti-ch2ex6
Exercice7Jean-Michel Jarre utilise des capteurs pour jouer de la musique dans sesconcerts : il met sa main au-dessus d’un capteur ce qui génère une note.Reproduisez ce phénomène en écrivant un programme qui joue un do si ladistancemain-capteurestinférieureà10cm,unrésielleestcompriseentre10et15cm,etunmientre15et20cm.
go.eyrolles.com/ti-ch2ex7
DÉFI4Serez-vouscapabledecréerunprogrammeaffichantuncarréde3×3pixelsquisedéplacesurlesordonnéesenfonctiondeladistancemain-capteur?Lebutseradecolorierentièrementlaligne.Attention,l’instructionPxl-Affnefonctionnantqu’avecdesvaleursentières,ilfaudrautiliserlafonctionentquipermetd’isolerlapartieentièred’unevariable.
Pourvoirunevidéodurésultat:go.eyrolles.com/ti-ch2de4
Sivouspossédezundeuxièmecapteurdedistance,modifiezleprogrammeprécédentafindevousdéplacerselonlesabscissesetutilisezvosdeuxmainspourcoloriertoutl’écran.
Chapitre3
Lejeudebasket
Lebutdecechapitreestdeprogrammerunjeudelancerdeballondebasketquicomptabiliselenombred’essaisnécessairespourmarquerunpanier.Cejeusejoueraseul,maispourraêtreétenduàdeuxjoueurs.
ÉTAPE1 Préparerlesimagesd’arrière-plandedébutetdefindejeuafind’accélérerl’affichagegraphique.
ÉTAPE2 Décrirelesfonctionnalitésdujeuettracerlesdessinsdupanieretdesjauges.
ÉTAPE3 Coderlaboucleprincipaledujeuettracerlatrajectoireduballon.
ÉTAPE1 Préparationdesimagesd’arrière-plan
Onapuconstaterdanslechapitre1quelesdessinsmettentdutempsàs’afficherpoint par point sur l’écran de la calculatrice. Heureusement, tous les élémentsgraphiques de notre jeu n’ont pas besoin d’être créés en temps réel : certainsd’entre eux peuvent être dessinés à l’avance, comme on va le voir. Sinon, àchaque exécution de l’instruction EffDess, il faudrait tout redessiner, enparticulierlesélémentsd’arrière-plan,cequisetraduiraitparuntempsd’attentedésagréablepourlejoueur.
Nousallonsd’aborddessinerl’écrandelancementdujeu,appelésplashscreen.Sonbut estdeprésenter le thèmedu jeuau joueur,maispas seulement…Cetteimagedevrafaire165pixelsdehauteuret265pixelsdelargeur.
Exercice1Avecunoutildedessin,dessinersurordinateurunécrandedémarragepournotrejeudebasket.PuistransférersurlacalculatricelefichierimagedecetécranvialelogicielTI-Connect™CE.NommercefichierImage8.
go.eyrolles.com/ti-ch3ex1
Passons maintenant à l’écriture du programme ou plutôt des deux programmesassociés. Car un splash screeen a un deuxième rôle, celui d’initialiserl’environnement graphique du jeu. Le temps que cette opération se réalise, il
occupel’attentiondujoueuraulieudelelaisserdevantunécrannoir.
Exercice2Dans le programme DINIT ci-dessous, identifier le rôle de chaque ligne decode.
LenomduprogrammecommenceparunDpourindiquerqu’ils’agitd’unprogrammededessin.
Radian
Fonc
FoncNAff
GraphNAff
QuadNAff
ÉtiqNAff
PleinÉcr
CGRect
1→Xmin
265→Xmax
0→Xgrad
1→Ymin
165→Ymax
0→Ygrad
DispGraph
EffDess
ArrPlanNAff
DÉFI1Sionsupprimel’affichagedesaxesdurepèresurlacalculatrice,ilfaudrabienlesfaireréapparaîtrelorsqu’elleserautiliséeencoursdemathématiques!Uneremarquequivautaussipourlesautresvariablesd’environnementgraphique.Heureusement,avantdemodifierunenvironnement,ilestpossibledelesauvegardervial’instructionEnrBDG.Revoyezalorsleprogramme DINITenrappelantl’environnementàlafin(grâceàl’instructionRappelBDG).
LeprogrammeDINITadonceffacétoutlecontenugraphiquedelacalculatriceetconfigurél’environnementpourquel’onpuissedémarreravecunepageblanche.Nousallonsàprésentremplircettepageavecl’écrandelancementdéjàdessiné.
go.eyrolles.com/ti-ch3ex2
ÉcrivonsleprogrammeDSPLASH:
prgmDINIT
ArrPlanAff8
Output(4,4,"LANCEMENT")
CouleurTexte(JAUNE)
Texte(25,125,"APPUYERSURENTRER")
Lenomd’unprogrammenedoitpascomporterplusde8caractères.
L’image de l’écran de démarrage a été importée en 8e position dans lacalculatrice, qui peut stocker en tout 10 images d’arrière-plan. Il est doncimportant de mémoriser la place de l’image que l’on souhaite utiliser dans leprogramme.Pourvérifierlapositiondecetteimage,appuyezsurlatouche .Allez alors dans le menu Pic et arrière-plan et naviguez parmi lesdifférentesimages.
Exercice3DéterminerladifférenceentrelesinstructionsOutputetTexte.
go.eyrolles.com/ti-ch3ex3
Exercice4CoderleprogrammeDFINALpourqu’ilafficheunécranfinaldevictoiresilejoueur a inscrit un panier, en indiquant le nombre d’essais (stocké dans lavariable N) qui auront été nécessaires pourmarquer. L’image de cet écrandevraêtreimportéeen7epositiondanslacalculatrice.
Voiciunexempled’écranfinal,oùlescorecorrespondaunombredecoupsjoués.
Silejoueuramarqué,leprogrammeDFINALdemanderaaujoueurdepresserlatouche ,effaceralesdessinsprésentsà l’écran(trajectoireduballon,panier,etc.)etafficheracenouvelarrière-plandevictoire.Lejeus’arrêteraunefoislatouche presséedenouveau.
Ce travail préliminaire nous a permis d’appréhender quelques fonctionsgraphiques essentielles à la réalisation d’un jeu, même si habituellement cettephasededessinintervientplutôtàlafin.
go.eyrolles.com/ti-ch3ex4
ÉTAPE2 Descriptiondujeuettracédesdessins
Commençonspardécrirelefonctionnementdujeu.
Leballonseratoujourslancéàpartirdumêmeendroitdel’écran,auniveaudela
main du joueur dessiné en train de sauter. Ce sera en fait le panier qui sedéplacerad’unepartiedejeuàl’autre.Ilfaudradoncstockerlescoordonnéesdece panier pour que le programme puisse déterminer si le ballon l’a ou nontraversé.
L’angleetlaforcedutirserontreprésentésrespectivementparunejaugeenquartdecercleetunejaugeverticale.Sionsouhaiteaméliorerlejeu,onpourrafaireévoluerlacouleurdesjaugesduvertaurougeenfonctiondelavaleurdel’angleetdelaforce.
Pourvousaideràcomprendrecequevousallezcoder,voiciquelquescapturesd’écrandujeu:
S’ilyabienquelquechosedontonnemanquepassurlacalculatrice,cesontdestouches!Nousallonsenutiliser8dansnotrejeu.
• Latouche permettradevalideruncertainnombred’écrans.
• Lesflèches et réglerontl’angledetirdulancerduballon.
• Lesflèches et réglerontlaforcedutir.
• La touche permettra d’activer ou de désactiver unmode turbo pour leremplissagedesjauges.
• Latouche serviraàlancerleballon.
• Latouche permettradeforcerlafindujeu.
Commentleprogrammedujeuvadétectersil’unedecestouchesestpresséeparle joueur?Pour la touche , il suffirad’introduire la fonctionPausedans lecode,quibloqueraleprogrammejusqu’àcequecettetouchesoitenfoncée.Pourles7autres,onutiliseraleurcodeetlafonctionGetKey(voirchapitre1).
Exercice5Déterminerlescodesdeces7touches.
go.eyrolles.com/ti-ch3ex5
Exercice6Dessiner à présent sur ordinateur le fond d’écran de votre jeu, sur lequeldevraaussi apparaître le joueur. Ici, nous avons choisi un ciel bleuavecunbasketteurentraindesauter,maislibreàvousdereprésenterunparquetetdesgradinsremplisdesupporters!
Pourl’imagedefond,ilestimpératifderespecterlatailledéjàmentionnéeauparavant(165×265pixels).
Seuls le panier, les jauges et la trajectoire du ballon vont être dessinés par leprogrammeprincipal.
go.eyrolles.com/ti-ch3ex6
Positiondelamain
Pour commencer, il faut repérer la position de la main du joueur à partir delaquelleleballonseralancé.Pourcela,unefoisl’imagedefondchargéedanslacalculatrice,modifieztemporairementleprogrammeDSPLASHenremplaçantlen°defondd’écranàafficherparceluidevotrefonddejeu.Ici,notrefonddejeusetrouveen1reposition.
Onmodifiedoncleprogrammeenconséquence:
Puis exécutez-le : DSPLASH appelle alors le programme DINIT, puis chargel’image de fond de jeu et s’interrompt.À l’aide des flèches de la calculatrice,déplacez-vous jusqu’à lapositionde lamainet relevezsescoordonnées.Enfin,corrigezleprogrammeDSPLASHenyreplaçantlefondd’écraninitial.
Surnotreimage,lamainsepositionneen(54;92).Nousavonschoisidecoder« en dur » ces coordonnées dans le programme plutôt que d’utiliser deuxvariablessupplémentaires.
Pournos tests,nousavonsdessinéunpaniersur le fondde jeudansunpremiertemps.Maiscepanierest à supprimerpuisqu’il seradessinépar leprogrammelui-même.Noustravailleronsdoncmaintenantaveccefondd’écran:
Lepanierdebasketetlesjauges
Exercice7CoderleprogrammeDPANIERquidessinelepanierdebasket.Lapositionducentre du panier (la croix rouge sur l’image) sera initialisée dans leprogrammeprincipal.Sonabscissedevra être stockéedans lavariableL et
son ordonnée dans la variable H. Le dessin du panier sera réalisé à l’aided’appelsrépétésàlafonctionLigne(voirchapitre2).
Ilnousrestemaintenantàdessinerlesjaugesdujeu.
• Laforcedu tirserastockéedans lavariableF.Elle seracompriseentre0et100,etinitialiséeà100.
• L’angledetirserastockédanslavariableR. Ilseracomprisentre0et90,etinitialiséà90.
• Lepasd’incrémentdesjaugesserastockédanslavariableZ.Ilvaudra1ou10selonquelemodeturboestdésactivéounon,etilserainitialiséà1.
go.eyrolles.com/ti-ch3ex7
Exercice8Coder leprogrammeDJAUGEquidessinera la jauge verticale symbolisant laforcedutir.
Le placement de cette jauge dépendra de votre décor. Dans notreprogramme, nous l’avons représentée de la position (10;10)pour son coininférieurgauchejusqu’à laposition(25;110)pour son coin supérieurdroit.
Sa hauteur dépend quant à elle de la variable F. Nous avons choisi decomplétertoutelapartievidedelajaugepardublanc.
CeprogrammeDJAUGEnefaitquedessinerlajaugeenfonctiondelavaleurdeF.IlnegèrepaslasaisiedestouchesnidonclamodificationdeF.C’estlaboucleprincipaledujeuquis’enchargera.
go.eyrolles.com/ti-ch3ex8
Exercice9Codez leprogrammeDANGLEquidessinera la jauge représentant l’angle dutir.
Àvousdechoisirlapositiondecettejaugeenquartdecercle.Ici,lecercleapour centre la position de la main (54;92) et pour rayon 40 pixels. LahauteurdelajaugedépenddelavariableR.Nousavonschoisidecompléterpardublanctoutelapartievidedelajauge.
CeprogrammenefaitquedessinerlajaugeenfonctiondelavaleurdeR. IlnegèrepaslasaisiedestouchesnidonclamodificationdeR.C’estlaboucleprincipaledujeuquis’enchargera.
go.eyrolles.com/ti-ch3ex9
Testintermédiaire
À ce stade du projet, vous avez probablement envie de voir ce que cela peutdonner !Créez leprogrammeTEST en saisissant le code suivant (onexpliqueraplusloincequereprésententlesvariablesG,MetK):
prgmDSPLASH
1→G
100→F
90→R
0→M
0→K
1→Z
0→N
nbrAléatEnt(50,150)→H
245→L
Pause
prgmDBACKGR
oùprgmDBACKGRcontientlui-mêmelesélémentsdedessindujeu,àsavoir:
prgmDINIT
ArrPlanAff1
EffDess
EffÉcran
prgmDJAUGE
prgmDANGLE
prgmDPANIER
Désormais,notre jeus’initialiseetsedessine.Nousallonsmaintenantcoder lesactionsdujoueurencomplétantl’écritureduprogrammeTEST.
ÉTAPE3 Codagedelaboucleprincipaledujeu
Unefoiscettephased’initialisationvalidée,ilfautàprésenttesterenbouclesilejoueurrèglel’angleoulaforcedesontir,réaliseunetentativedetir,ousouhaiteinterrompre la partie. Puis nous devronsmodifier la jauge ou l’angle de tir, oueffectuerletirduballon.
Pour déterminer quelle action graphique doit réaliser la TI-83 Premium CE,introduisonsunevariableG.Nousallonsécrireunebouclequis’arrêtelorsqueGvaut4etquistockedansunevariableKlecodedelatouchepresséeparlejoueur.
Exercice10QuelleestladifférenceentreREPEATetWHILE?
Si G vaut 1, sa valeur initiale, le joueur paramètre son tir, ce qui consiste àincrémenter ou décrémenter les valeurs de F ou R en fonction des touchesutilisées.
Deplus, leprogrammedoitsavoirs’ildoitactualiser l’affichagedela jaugedeforceouceluidelajauged’angle.Pourcela,onvaintroduirelavariableM,quivaudra1 si c’est la jaugede forcequidoit êtremodifiée, et2 si c’est la jauged’angle.
go.eyrolles.com/ti-ch3ex10
Exercice11Compléterlespointillésducodeci-dessousdanslecasoùlejoueurappuiesurlatouche .Attention,ilnefautpasoublierquelavariableFnedoitpasdépasser100,doncilfautprévoiruneinstructionpourentenircompte.
IfK=……………………
Then
IfG=1
Then
……………………
……………………
……………………
……………………
………………→M
End
End
go.eyrolles.com/ti-ch3ex11
Exercice12Ens’inspirantduprogrammeprécédent,écrireà lasuite laportiondecodecorrespondantaucasoù le joueurpresse la touche .Attention,nepasoublierqueFnepeutpasdescendreendessousde0!
go.eyrolles.com/ti-ch3ex12
Exercice13Demême,écrireà lasuite laportiondecodetraduisant lecasoù le joueurappuiesurlatouche ,puislecasoùilpresse .Attention,Rnepeutpas
dépasser90niêtreinférieurà0!
Maintenant,siM=1,onlanceleprogrammequiactualiselajaugedeforce:
IfM=1
Then
prgmDJAUGE
0→M
End
EtsiM=2,onactualisel’affichagedelajauged’angle:
IfM=2
Then
prgmDANGLE
0→M
End
go.eyrolles.com/ti-ch3ex13
Exercice14Coderl’actiondelatouche quiactiveoudésactivelemodeturbo.
Lorsquelejoueurafinisonparamétragedetir,ilappuiesurlatouche .LavariableGdoitalorsprendrelavaleur3.
Pourquoi3etpas2?Parcequ’onseréservecettevaleur2danslecasd’unedéclinaisondujeupourdeuxjoueurs.L’étatG=2permettraitalors
degérerl’alternanceentrelesjoueurs.
go.eyrolles.com/ti-ch3ex14
Exercice15Compléterlespointillésducodeci-dessousdanslecasoùlejoueurpresselatouche :
IfK=………………………
Then
………………………→G
End
go.eyrolles.com/ti-ch3ex15
SiG=3, il fautalorsdessiner la trajectoireduballon.Onvapourcelaécrire leprogrammeDTRAJECT. Le calcul de cette trajectoire et son affichage sont assezdifficiles…
Nousallonsutilisercequ’onappelleune« représentationparamétrique»de latrajectoire à l’aide de la fonction Pt-Change(X,Y,Couleur). Cette fonctionallume le pixel de coordonnées (X;Y) avec le paramètre Couleur. Deuxpossibilités:soitlepixelétait«éteint»etdanscecaslaprocédureestréalisée;soit il était déjà allumé et dans ce cas la fonction éteint le pixel, laissantapparaîtreceluidel’imagedefond.
Cettefonctionestdoncintéressantecarellen’interagitqu’avecl’écrangraphiqueetnetouchepasàl’imagedefond.Ainsi,lecieletsesnuagesresterontintacts,àladifférencedelajauged’anglesielleesttouchéeparledessindelatrajectoiredutir.
Deplus,enappelantdeuxfoisdesuiteleprogrammeDTRAJECT,onpeuteffacerlatrajectoiredutirpourpréparerletirsuivant.
Attention,l’équationdelatrajectoiredépenddelapositiondedépartduballon.Silamainn’estpassituéecommeiciauxcoordonnées(54;92),il
faudramodifiercetteéquationdansleprogrammeDTRAJECT.
Pourvousaider,vouspouveztéléchargerleprogrammeDTRAJECT:
go.eyrolles.com/ti-ch3DT
Vous pouvez aussi consulter le lienhttps://education.ti.com/fr/activities/france/algorithme/programmation-
graphique-en-couleur
Lejeuestbientôtterminé!
SilavariableGvaut3,lejoueurafinisonparamétragedetiretaappuyésurlatouche15 (touche ).Dans ce cas, le programme incrémente le nombre de
coupsjoués,stockédanslavariableN.IlappelleensuiteDTRAJECTpourdessinerlatrajectoiredutir.Siletirestréussi,DTRAJECTpasselavaleurdeGà4.Siletirest raté,G vaut toujours 3 et le programme appelle de nouveauDTRAJECT poureffacerlatrajectoiredutir.Deplus,siGestdifférentde4,onrepasseenmode«paramétragedetir»oùGvaut1.
Exercice16Compléter les pointillés du code ci-dessous pour réaliser les actionsprécédentes.
IfG=3
Then
………………………→N
prgmDTRAJECT
IfG=3
Then
prgmDTRAJECT
End
IfG≠……………………
Then
1→G
End
End
End
prgmDFINAL
Pourrappel,Nreprésentelenombredelancers.
go.eyrolles.com/ti-ch3ex16
Le jeu doit s’arrêter lorsque le joueur appuie sur la touche oumarque unpanier.IlfautalorsaffecteràGlavaleur4.
Exercice17
Compléterlespointillésducodeci-dessouscorrespondantaucasoùlatoucheestpressée:
IfK=………………………
Then
…………………→G
End
Lecasoùlejoueurmarqueunpanierestdétectélorsdutracédelatrajectoire,quiestcodédansleprogrammeDTRAJECT.
go.eyrolles.com/ti-ch3ex17
Laprogrammationdujeuestfinie:touslesélémentsquicomposentlaboucledejeu principal ont été traités. Pour vous aider, ils ont été réunis dans un seulprogrammeDSAISIEquevouspouveztélécharger.
go.eyrolles.com/ti-ch3DS
Ainsi, en partant de cemoteur de jeu, vous pourrez essayer de relever le défisuivant…
DÉFI2Etsivousamélioriezencoreleprogrammedecejeu?Enaffichantuntableaudesscores,enlimitantlenombredelancers,oumêmeenadaptantlejeupourdeuxjoueurs…
Chapitre4
L’ascenseur
Lebutdecechapitreestdefabriquerunascenseurenrepoussantleslimitesd’interactionetdepilotagedelacalculatriceavecleTI-Innovator™Hub.
ÉTAPE1 Apprendreàutiliseruneplatined’expérimentationetyconnecterdesmicrorupteurs.
ÉTAPE2 Découvrircommentfairefonctionnerunrelaisetunmoteursurlaplatine.
ÉTAPE3 Fabriquerlacaged’ascenseur.
ÉTAPE4 Finaliserlesbranchementsdumontageetécrirelesprogrammesassociés.
ÉTAPE5 Gérerladescentedelacabined’ascenseur.
Matérielnécessaireauprojet
Pour réaliser le projet de ce chapitre, vous aurez besoin de vous procurer lescomposantsetéquipementssuivants:
• deuxmicrorupteurs;
• unrelaisdelamarqueGrovecompatibleavecleTI-Innovator™Hub;
• unealimentationexterne5VUSB;
• unealimentation3Vconnectablesurlaplatined’expérimentation;
• unmoteuràcourantcontinucompatible3V;
• uneplatined’expérimentation;
• descâblespourplatined’expérimentation.
UnepartiedecematérielfiguredanslekitTI-Innovator™BreadboardPack.
Vousaurezaussibesoindefourniturespourfabriquerunecaged’ascenseur,saufsivousl’achetezenkit.
ÉTAPE1 Connexiondesmicrorupteurs
Toutdéveloppeurquisouhaiteapprendreàpilotermoteursetcapteursseraamenétôtoutardàutiliseruneplatinedeprototypage,appeléeencorebreadboard(voirpréambuledulivre).Leprincipeenestsimple:onvientdirectementenfichersescomposants sur la plaque selon le schéma électronique qu’on a imaginé et quel’onsouhaitevalider.
Surlaplatineci-après,onrappellequelespointscontenussurchaqueligne+sontinterconnectés, de même que ceux d’une ligne -. En revanche, ces lignes sontisolées les unes des autres, ce qui permet notamment d’obtenir deux niveauxd’alimentation (5 V et 12 V, par exemple) pour certains montages. Quant auxpointsencolonnes, ilssontreliéslesunsparautresparcolonnesdecinq.C’estsur ce type de platine que nous allons réaliser les différents montages de cechapitre.
Dansunpremier temps,pourdélivrerune tensionauxcomposantsélectroniquesutiliséssurlaplatined’expérimentation,nousutiliseronslesportsmarqués3.3Vet5VduHub.Parlasuiteetparsécurité,nousauronsrecoursàunealimentationsecondairepourlemoteurdel’ascenseurdenotreprojet.
Sionprévoyaituneseulealimentationpourl’ensembleduprojet,onrisqueraitdesollicitertropd’ampérageetdegrillerleHub.Enisolantl’alimentationdumoteurdansuncircuitdédié,onréduitquasimentce
risqueànéant.
Pournousouvrirsurl’extérieuràl’aidedesportsbreadboard(BB)duHub,nousallonsreliercedernieràuncomposantélectroniqueappelémicrorupteur.Onliraen boucle l’état (ouvert ou fermé) de ce composant en l’affichant sur lacalculatrice.
Un microrupteur possède trois broches. S’il n’est pas enclenché, les brochesCOM et NF sont reliées entre elles. Si un contact est établi, l’interrupteur estferméetcesontalorslesbrochesNOetCOMquisontinterconnectées.C’estcedernierévénementquenousallonsdétecter.
Attention!PourqueleTI-Innovator™Hubpuissedétectercetévénement,ilfautque l’enclenchement dumicrorupteur délivre une tension sur l’un des ports duHub, par exemple le port BB1. Par conséquent, il ne suffit pas de relierdirectement lesbrochesNOetCOMauxbrochesBB1etMassepuisqueaucunetensionneseraitfournie.OndoitauparavantrécupérerlatensiondesortieduHubde3,3Vsurlaplatine,puislaréinjecterdansleHubvialemicrorupteur.
Onréalisedonc lemontageci-après,où la fermeturede l’interrupteurpermettrabiendedélivrer3,3VsurlabrocheBB1duHub.
Écrivonsmaintenantleprogrammequivanouspermettrededétecterlafermeturedumicrorupteur.Leprincipeesttoujourslemême:oninitialised’abordleHubendécrivant lescomposantsélectroniquesconnectésàsesdifférentsports(danscecas,leportBB1uniquement),puisondéveloppelaboucleprincipale.Ici,nousallonsnous servird’une entréenumériquequi renvoie soit 1 soit 0 selonqu’unévénementseproduitoupas.
Saisissezleprogrammesuivant:
Send(“CONNECTDIGITAL.IN1TOBB1”)
0→T
WhileT≠1
Send(“READDIGITAL.IN1”)
Get(T)
DispT
End
Exercice1Déterminer ce qu’il se passe lorsque le contact sur le microrupteur estréalisé.
go.eyrolles.com/ti-ch4ex1
Exercice2Connecterunsecondmicrorupteuretécrireleprogrammequipermettradevisualiserenpermanencel’étatdesdeuxmicrorupteurs.
go.eyrolles.com/ti-ch4ex2
ÉTAPE2 Connexiondurelaisetdumoteur
Nousvoicidoncenmesurededétecterdesévénementscommelafermetured’uninterrupteur. Nous allons maintenant découvrir comment utiliser un relais pourpiloterunpetitmoteuràcourantcontinu.Cedernierseraalimentéparunebatterieexterne,commedéjàsignalé.
Outrepourdesraisonsdesécurité,cetajoutd’alimentationsecondaireestutilelorsqu’onsouhaiteparexemplealimenteruneélectrovanneen12
VoutoutautredispositifnécessitantunetensiondifférentedecelledisponiblesurleHub.
Un relais est un interrupteur mécanique dont l’ouverture ou la fermeture estpilotée électroniquement. Dans ce projet, nous allons utiliser un relais de lagammeGrove.Celui-cipossèdedeuxcontactsquisontreliésensemblelorsqu’ilestactivé,ainsiqu’unedioderougeservantdetémoinlumineux.
Repartons du montage de l’étape 1, enrichi donc d’un second microrupteur, etbranchons le relais sur le port OUT 1 du TI-Innovator™ Hub. Il suffit alorsd’expliquerauHubqu’undispositifde typerelaisestbranchésurceport.Pouractiverlerelais,ilfaudraenvoyerlacommandeSend(«SETRELAY1TO1»),etpour le désactiver la commande Send(«SET RELAY 1 TO 0»), la diodes’allumantets’éteignantconjointement.
Ilestimportantdesignalerquepourutiliserlerelais,nousauronsbesoind’uneautrealimentationcomplémentairede5V.OnlabrancheradirectementsurleHubdansleconnecteurPWRprévuàceteffet.
Complétonsalorsleprogrammedel’exercice2pourquelerelaisresteactivétantque lemicrorupteur 1 (celui connecté sur le portBB1) n’est pas enclenché. Sicelui-ciestenclenché,alorsondésactivelerelais.
Saisissezainsileprogrammesuivantsurvotrecalculatriceettestez-le:
Send(“CONNECTRELAY1TOOUT1”)
Send(“CONNECTDIGITAL.IN1TOBB1”)
Send(“CONNECTDIGITAL.IN2TOBB2”)
Send(“SETRELAY1TO1”)
0→T
WhileT≠1
Send(“READDIGITAL.IN1”)
Get(T)
DispT
End
Send(«SETRELAY1TO0»)
Pourl’instant,lesecondmicrorupteurn’apasd’utilité.
Exercice3Modifierleprogrammeprécédentpourquel’enclenchementdumicrorupteur1activelerelaisetquel’enclenchementdumicrorupteur2ledésactive.
go.eyrolles.com/ti-ch4ex3
Maintenant que nous savons piloter le relais, branchons le moteur à courantcontinu et son alimentation externe. Dans notre exemple, celui-ci fonctionne àl’aided’unetensionde3V,soitdeuxpilesd’1,5V.
Attention!Nepasconfondrelabatterieexternedumoteuravecl’alimentationcomplémentairebranchéesurleportPWRduHub,quielle
sertàfairefonctionnerlerelais.
Sur le schéma ci-après, nous n’avons pas replacé les deux microrupteurs parsoucidesimplification.
Exercice4Inverser les broches de l’alimentation externe du moteur en branchant labroche+surlalignebleuedelaplatineetlabroche-surlalignerouge.Quese passe-t-il lorsque le programme est exécuté ? Dans quel sens tournedésormaislemoteur?
go.eyrolles.com/ti-ch4ex4
ÉTAPE3 Constructiondelacaged’ascenseur
Nous allons à présent fabriquer la cage de notre ascenseur. Pour cela, vouspouvezutiliserunemaquettepédagogiqueenkitcommecellecommercialiséeparA4 Technologie, sur laquelle vous fixerez vos propres capteurs et actionneurs.Autresolution,vouspouvezchoisirdecréervous-mêmevotremodèle,enbalsa,encarton,ouàl’aidedejeuxdeconstructionenplastiqueouenmétal.
Surleprincipe,votreascenseurdevrautiliserunmoteurautourduquels’enrouleun fil.Une extrémitédu fil sera reliée àun contrepoids, tandisque l’autre seraraccordée à la cabine de l’ascenseur. La masse du contrepoids devra êtresensiblementégaleàcelledelacabine.
Nousutiliseronsdeuxmicrorupteurspourdétecterledébutetlafindecoursedelacabine,quidesserviradeuxétages.Pourvousaider,voicici-aprèsunschémadelacaged’ascenseur.
Ici,nousavonsoptépour lamaquettepédagogiqued’A4Technologie,quiaétélégèrement adaptée aux besoins du projet. Sur cette image, on peut voirl’ensembledesélémentsquicomposentleprojet:cabine,contrepoidsenarrière-plan,lesdeuxmicrorupteursetlemoteur.
Cette vue de dos de la maquette permet de mieux comprendre le système deguidagedelacabineetducontrepoids:
Onnoteralaformeastucieusedel’ergotpositionnésurlacabined’ascenseur.Ilpermetd’enclencherendouceuretefficacementlesmicrorupteursdedébut(Rdc)etdefin(Étage1)decourse.
Onvoiticicommentnousavonssoudédirectementlesfilssurlemoteurenvuedelerelieraurelais:
Exercice5Fabriquerlamaquettedelacaged’ascenseur.
ÉTAPE4 Branchementducircuitetécritureducode
Il reste maintenant à connecter les différents éléments du projet et à relierl’ensembleàlacalculatrice.
Commedécrità l’étape1, ilfautbrancherlemicrorupteur1sur leportBB1du
TI-Innovator™Hub,etlemicrorupteur2surleportBB2.LerelaisserareliéauportOUT1duHub,tandisquelemoteurdel’ascenseurdevraêtreconnectéselonleschémadebranchementde l’étape2.Onplacera lacabineenpositionbasse.Bien sûr, on n’oubliera pas de brancher le Hub à la TI-83 CE Premium etl’alimentationexternesurleportPWR.
Nous allonsmaintenant créer un programme qui activera le relais une fois quel’utilisateurauraappuyésurlatouche (code92)delacalculatrice.Lacabined’ascenseur entamera lors sa montée et s’arrêtera automatiquement lorsque lemicrorupteur2auraétéenclenchéparlecontactaveclacabine.Unepressiondelatouche (code105)arrêteraleprogramme.
En prévision de l’étape 5, nous vous proposons de créer en réalité deuxprogrammes :unprogrammeprincipalnomméPRINCIP gérant lespressions surlestouchesdelacalculatriceetunsous-programmeMONTEEgérantlamontéedel’ascenseur.
Exercice6
CompléterlespointillésduprogrammePRINCIPpourqu’ilréaliselesactionsdécritesprécédemment
Send(“CONNECT……………TOOUT1”)
Send(“CONNECT……………TOBB1”)
Send(“CONNECT……………TOBB2”)
0→K
Disp«APPUYERSUR1»
Disp«ENTRERPOURSORTIR»
WhileK≠…………
getKey→K
IfK=………………
…………………………
End
go.eyrolles.com/ti-ch4ex6
Exercice7Compléter lespointillésduprogrammeMONTEEpourqu’il réalise les actionsdécritesprécédemment.
0→T
Send(“READDIGITAL.IN2”)
Get(T)
IfT=0
Then
Send(“SETRELAY1TO…………”)
Disp“MONTEE”
WhileT≠1
Send(“READDIGITAL.IN2”)
Get(T)
End
Send(“SETRELAY1TO…………”)
Disp“ETAGE1”
End
Iln’estpasnécessairedefaireappelàlafonctionCONNECTpuisqu’elleadéjàétéappeléeparleprogrammePRINCIP.
go.eyrolles.com/ti-ch4ex7
Exercice8Expliquer pourquoi le programme MONTEE commence par tester l’état dumicrorupteur2.
go.eyrolles.com/ti-ch4ex8
ÉTAPE5 Gestiondeladescente
À ce stade du projet, vous disposez donc d’une cage d’ascenseur capable departirdurez-de-chausséepourarriveraupremierétage.Nousvousproposonsàprésentdecompléteretmodifierjudicieusementlesprogrammesprécédentspourréaliserunascenseurgérantlamontéeetladescentedelacabine.
Comme vous vous doutez, vous devrez créer un deuxième sous-programmenomméDESCENTE.Ilfaudraégalementinclurel’appeldecesous-programmedansleprogrammeprincipal.
DÉFI1Ledéfisesituedanslagestiondel’alimentationdumoteur.Plusprécisément,ilvousfaudratrouveruneméthodepourinverserélectroniquementlesensderotationdumoteur.Denombreusessolutionsexistent.Nousenavonsretenuune.Saurez-vousmettrelavôtreenœuvre?
Vous voici arrivé à la fin de ce livre. Grâce aux techniques qui vous ont été
présentées, vous êtesmaintenant enmesure de programmer vos propres jeux etconstruirevospropresrobots.Laissezvotrecréativités’exprimer!
Liensutiles
• https://education.ti.com/fr/france/home
Voustrouverezsurcesite toutes les informationspourmettreà jourvotreTI-83PremiumCE,télécharger le logicielTIConnect™CEetaccéderàdes tutorielssurlaprogrammationdevotrecalculatrice.
• https://education.ti.com/fr/purchase/purchase_dealers
Si vous souhaitez vous procurer une calculatrice TI-83 PremiumCE ou un TI-Innovator™Hub,cettepagevousindiqueralalistedesprincipauxfournisseurs.
• http://www.lestutosmaths.fr/home
Rendez-voussurcesitepourmaîtriserencoredavantagevotrecalculatriceTI-83PremiumCE.Ilcontientbeaucoupdevidéosetdetutoriels.
• https://education.ti.com/fr/customer-support
EncasdeproblèmeavecvotreTI-83PremiumCEouvotreTI-Innovator™Hub,consultezcesite.
PoursuivretouteslesnouveautésnumériquesduGroupeEyrolles,retrouvez-noussurTwitteretFacebook
@ebookEyrolles
EbooksEyrolles
Etretrouveztouteslesnouveautéspapiersur
@Eyrolles
Eyrolles