TI Codes:
TI-84 Plus CE-T:
TI-Innovator™ Hub en
TI-Innovator™ Rover
Met deze activiteiten maken leerlingen stap voor stap kennis met TI-Innovator technologie. Laat de robotauto Rover bewegen!
Module 1: Beginnen met de TI-Innovator™ Hub
Oefenblad 1: Your First Program
Teacher's NotesIn de eerste les van unit 1 leer je om met de programma-editor een programma te schrijven dat een lampje op de TI-Innovator™ Hub laat branden.
Doelen:
- Gebruik van de TI-84 Plus CE Programma-editor
- Het gebruik van het Send command om een lichtje aan te zetten op de TI-Innovator Hub
- Introductie van het wait commando
- Timing tussen de TI-Innovator Hub en de rekenmachine
Stap 1
Sluit de TI-Innovator Hub aan op de TI-84 Plus CE. De rekenmachine zal aangaan. Op de TI-Innovator Hub zal een groen lampje gaan branden. Dit geeft aan dat de TI-Innovator™ Hub spanning krijgt en gereed is om te gebruiken.
Terwijl je programmeert in de rekenmachine met de TI-Innovator™ Hub, zul je merken dat je in twee gescheiden maar gekoppelde werelden werkt: de rekenmachine en de TI-Innovator™ Hub
Een programma schrijf je in de rekenmachine in de “programma editor”.
- Als je een programma schrijft in de rekenmachine dan plak je de commando’s in het programma vanuit het menu dat je krijgt met de [prgm] knop
- Het Send commando wordt gebruikt om commando’s naar de TI-Innovator™ Hub te zenden die fysieke reacties veroorzaken (lampje laten branden, geluid maken of een motor laten draaien).
- De TI-Innovator™ Hub commando’s kun je vinden onder de [prgm] knop en hebben een eigen submenu HUB
Stap 2
Het eerste programma zorgt er voor dat de TI-Innovator Hub het rode lampje (LED) 5 seconden zal laten branden.
Een nieuw programma krijg je door op de knop [prgm] te drukken en dan nieuw te kiezen. Voer vervolgens een naam in voor het programma (hier LIGHT1) en druk op enter.
Stap 3
Je programma bevat maar 1 regel met code:
Send(“SET LIGHT ON TIME 5”)
LIGHT is de naam van de rode LED op de HUB.
Je maakt de regel als volgt:
- Druk op de [prgm] knop en selecteer het HUB menu.
- Selecteer Send “SET
- Selecteer daarna LIGHT uit het menu
Stap 4
Je programma moet er uit zien als het voorbeeld hiernaast. We moeten het commando nog afmaken zoals hieronder.
Send(“SET LIGHT ON TIME 5”)
Stap 5
Je krijgt de woorden ON en TIME via:
- Druk op de [prgm] knop, en selecteer het HUB menu.
- Kies Settings.
Vergeet niet de aanhalingstekens sluiten ([alpha] [ + ]) en de haakjes op het einde van het commando. Een spatie krijg je met [alpha] [ 0 ]).
Stap 6
Het complete programma staat rechts.
- Het Send commando zendt de string (de regel tekst tussen aanhalingstekens) naar de TI-Innovator Hub.
Stap 7
Het programma uitvoeren:
- Verlaat de Programma Editor door op [quit] te drukken (2nd [MODE] [ON] [DEL] [ENTER]).
- Druk op [prgm] en selecteer de naam van het programma uit het EXEC menu. Hierdoor wordt de naam van het programma in het basisscherm geplakt.
- Controleer of de TI-Innovator Hub is aangesloten op de rekenmachine.
- Druk op [enter] om het programma uit te voeren.
Stap 8
Als de coderegel correct is, dan brandt het lampje (de rode LED) 5 seconden. Als er een fout in de regel zit, dan knippert de rode LED een keer en klinkt er een piep.
De rekenmachine toont ‘Klaar’ als het programma beëindigd is. Het programma is al klaar voor dat het licht uitgaat. Om het programma gelijktijdig te laten stoppen met het uitgaan van het licht, moeten we de rekenmachine vertellen dat het moet wachten tot het licht uit is.
Om dit toe te voegen aan het programma, moeten we het programma aanpassen:
- Druk op [prgm] en verplaats met de pijltjestoets naar EDIT
- Selecteer het programma uit de lijst.
- Beweeg naar het einde van het programma (met de pijltjestoets).
- Druk op [enter] om een nieuwe regel toe te voegen.
- Voeg het commando Wait 5 toe door op [prgm] te drukken, dan met de pijltjes toets naar het HUB menu en kies dan Wait (druk op 4 of met de pijltjes + enter) en voer daarna 5 in.
Stap 9
Verlaat de editor en voer het programma opnieuw uit door op [enter] te drukken. Het programma zal nu ongeveer op hetzelfde moment stoppen als het lichtje uitgaat.
We kunnen de timing van het lampje ook bepalen met het Wait commando. Verwijder daarvoor het Time 5 stukje uit het SEND commando.
Extra
- Om het lampje uit te zetten, gebruik je het commando:
Send(“SET LIGHT OFF”)
- Voeg dit commando toe aan het programma om het lampje een aantal maal te laten knipperen.
Oefenblad 2: Input en kleur
Teacher's NotesIn deze tweede les van unit 1 leer je hoe een programma input krijgt en hoe je de KLEURENLED kunt gebruiken op de TI-Innovator™ Hub.
Doelen:
- Argumenten gebruiken in een programma
- De KLEURENLED aansturen
Stap 1
De kleuren LED (light emitting diode) heeft drie ‘kanalen’: rood, groen en blauw. Deze LED wordt vaak de “RGB LED” genoemd.
Om een bepaalde kleur te krijgen, moet je de juiste hoeveelheden rood, groen en blauw mengen. Alle kleuren zijn mogelijk met de juiste mix van deze drie kleuren.
Stap 2
Met het programma kun je experimenteren met de “RGB LED”. De waarden voor rood, groen en blauw worden als argumenten in het programma gebruikt. De LED zal dan branden in de gewenste kleur.
Naast het bestuderen van de KLEURENLED, introduceren we ook het eerste programma commando dat we kunnen gebruiken om input van de gebruiker te krijgen in een programma: Prompt.
Stap 3
Het Prompt commando geeft de gebruiker de mogelijkheid om een waarde voor een variabele in te voeren als het programma uitgevoerd wordt. Het wordt een Promt genoemd omdat het een visuele boodschap (variabele met vraagteken) geeft als het programma wordt uitgevoerd. De gebruiker moet reageren met het invoeren van een waarde voor de variabele.
De syntax van het commando luidt:
- Prompt <variable>
- Prompt <variable1>,<variable2>,<variable3>,…
De numerieke variabelen in de TI-84 Plus CE zijn de letters letters A..Z en Ɵ (theta). Deze variabelen kunnen decimale getallen of complexe getallen bevatten.
In dit programma gebruiken we de promt om te vragen naar de waarde voor rood, groen en blauw. De waarden mogen variëren tussen 0 en 255. De waarden worden vervolgens naar de KLEURENLED gestuurd. In verband met efficiency vragen we in één commando naar alle drie de variabelen.
Stap 4
Het ‘Color’ Programma:
- Druk op [prgm] > Nieuw, en geef de naam van het programma (We gebruiken hier COLOR1), druk op enter.
- Voeg het commando ClrHome toe door op [prgm] te klikken en dan met de pijltjes I/O te selecteren. Kies vervolgens 8: ClrHome.
- Voeg het Prompt commando toe door op [prgm] te drukken en met de pijltjes naar I/O te gaan. Selecteer daar 2: Prompt.
- Voeg de variabele R toe door [alpha] *.
- Voeg ook de andere variabelen voor Groen en Blauw toe. Let er op dat je een komma tussen de variabelen plaatst.
Stap 5
We gebruiken het Send( commando om de instructies maar de TI-Innovator Hub te sturen.
- Druk op [prgm] en kies het HUB menu met de pijltjes.
- Selecteer Send(“SET… en vervolgens COLOR.
Het commando eval( ) begrijpen
Het is niet mogelijk om de variabelen R G B als de kleurvariabelen in het Send commando te gebruiken omdat de letters R, G, en B naar de TI-Innovator Hub worden gestuurd in plaats van de waarden van de variabelen.
We moeten de speciale functie eval( ) uit het Hub menu gebruiken die is gemaakt om de waarde van een uitdrukking in de rekenmachine om te zetten in een tekstregel die de TI-Innovator Hub kan uitvoeren.
Stap 6
Het programma voltooien:
- Voeg de eval( functie toe door op [prgm] te drukken, het HUB menu te selecteren en vervolgens eval(.
- Type de letter R en dan het rechter haakje.
- Voeg een spatie toe met ([alpha] [0]).
- Herhaal dit twee keer voor G en B. Vergeet de spaties niet!
Stap 7
- Als laatste moet je na de eval(B) functie de aanhalingstekens sluiten en dan het rechter haakje om het Send( commando af te sluiten.
De hele regel luidt nu:
Send(“SET COLOR eval(R) eval(G) eval(B)”)
Stap 8
Het programma uitvoeren:
- Ga naar het thuisscherm (basisscherm) met [2nd] [MODE].
- Druk op [prgm] en kies onder EXEC het programma.
- Druk op [enter] om het programma uit te voeren. Je krijgt drie vragen op het schone scherm: één voor R, één voor G en één voor B.
- Geef een getal tussen 0 en 255 voor elke variabele.
- Na het invoeren van het derde getal zie je de kleur van de KLEURENLED op de TI-Innovator Hub.
Speel met de waarden van de variabelen. Druk steeds op [enter] om het programma opnieuw uit te voeren.
Oefenblad 3: Input en SOUND
Teacher's NotesIn deze derde les van unit 1 leer je een andere methode om input te vragen in een programma. Je leert ook om het geluid (SOUND) van de TI-Innovator™ Hub te gebruiken.
Doelen:
- Gebruik van het Input commando
- Instellen van de frequentie en de timing van de luidspreker (SOUND)
Stap 1
De TI-Innovator Hub heeft een ingebouwde luidspreker die aangeduid wordt met SOUND.
Je regelt het geluid dat uit SOUND komt door een frequentie naar de SOUND te sturen. Geluidfrequenties hebben de eenheid Hertz (Hz).
Stap 2
Het Input commando kun je vinden in het I/O menu. Het wordt gebruikt om input van de gebruiker te krijgen. Het commando heeft de mogelijkheid om de gebruiker een betekenisvolle boodschap te geven.
Commando Syntax: Input <tekst> , <Variabele>
In dit sound programma gaan we het Input commando gebruiken.
Stap 3
Het SOUND programma maken
- Begin een nieuw programma en noem het SOUND1.
- Voeg ClrHome en Input commando’s toe via het I/O menu.
- Na het Input commando voeg aanhalingstekens toe met y[alpha] + en dan de tekst Frequentie ? ”.
- Sluit de alfa mode af met [alpha] en typ een komma.
- Type vervolgens de naam van de variabele die gebruikt gaat worden voor de frequentie, F. Druk hiervoor eerst op de [alpha] knop.
- Voeg nog een ander Input commando toe dat vraag naar de tijd dat het geluid moet duren.
Stap 4
Net als het COLOR programma in het vorige oefenblad moet je de functie eval( ) gebruiken om de waarden van F en T te krijgen (evalueren).
Afronding van het SOUND programma
- Druk op [prgm]
- Ga met de pijltjes naar het HUB menu, en selecteer 1: Send(“SET….
- Daarna 6:SOUND
- Druk weer op [prgm].
- Met de pijltjes naar het HUB menu, en selecteer 6:eval(.
- Voeg de variabele F toe en sluit de haakjes.
- Type een spatie met [alpha]0 en voeg een volgende eval( functie toe met de variabele T. Sluit de haakjes.
- Voeg ook aanhalingstekens toe om de tekst af te sluiten en als laatste het rechter haakje om het Send( commando af te ronden.
Stap 5
Het programma uitvoeren
- Verlaat de editor met [2nd] [MODE]. Druk op [prgm] en kies EXEC. Kies het programma en druk op [enter].
- Voer de frequentie 440 (Hz) en een tijd van 5 (s) in.
- Nu klinkt er een toon van 440 Hz gedurende 5 seconden. Dit betekent dat de speaker 440 keer per seconde trilt gedurende 5 seconden.
- In een lawaaierige omgeving kan het nodig zijn om de hub tegen je oor te houden om de toon te horen.
- Druk nogmaals op enter om het programma opnieuw uit te voeren met een andere frequentie en tijdsduur.
Experimenteer met andere frequenties.
Toepassing: Verkeerslicht
Teacher's NotesMaak een programma voor een verkeerslicht
Doelen:
- Gebruik van de KLEURENLED om een verkeerslicht te simuleren met één lamp
- Een reeks commando’s maken met de juiste timing.
Stap 1
Je opdracht is om een programma te maken dat een verkeerslicht simuleert met behulp van de KLEURENLED op de TI-Innovator Hub.
De KLEURENLED moet wisselen van groen naar oranje naar rood, en dan weer terug naar groen. De timing van de kleuren mag je zelf kiezen.
Je programma zal bestaan uit een reeks commando’s dat de wisseling van ROOD naar GROEN naar ORANJE en weer naar ROOD uitvoert zonder onderbrekingen.
Het gebruik van Disp en Pause
Het commando Disp toont een boodschap op het scherm van de rekenmachine. Het kan ook gebruikt worden om de waarde van een variabele te tonen, zoals in Disp X, of het kan een tekst tonen. Je krijgt Disp via de knop [prgm] en dan met de pijltjes naar I/O en selecteer 3:Disp.
Het Pause commando toont ook een boodschap maar stopt het programma totdat je op [enter] drukt. Je vindt Pause met [prgm] en dan 8:Pause.
Stap 2
Beginnen met een titelpagina
- Start een nieuw programma en noem het Toepas1.
- Voeg het commando ClrHome toe via [prgm] en het I/O menu.
- Voeg Disp via [prgm], I/O menu en dan 3:Disp.
- Voeg dan tussen aanhalingstekens de tekst toe zoals in het voorbeeld.
- Voeg Pause toe via [prgm] en dan 8:Pause
- Tussen aanhalingstekens “DRUK OP ENTER” zoals het voorbeeld.
Stap 3
Definiëren van de kleuren
Als eerste maak je het rode licht door de waarde 255 0 0 naar de HUB te zenden. In het voorbeeld rechts wordt het Wait Commando gebruikt om de rekenmachine 5 seconden te laten wachten voordat het volgende commando naar de TI-Innovator Hub moet worden gezonden. Het rode licht blijft gedurende die tijd branden.
Jouw opdracht is om commando’s toe te voegen voor het groene, het oranje en weer het rode licht.
Uitdaging: Voeg een geluid toe zodat een blind persoon (voetganger) weet wat de kleur van het licht is.
- Oefenblad 1
- Oefenblad 2
- Oefenblad 3
- Toepassing
Module 2: For Loops
Oefenblad 1: Knipperend licht
Teacher's NotesIn de eerste les van unit 2 leer je de For loop (lus) kennen via een knipperend lampje en informatie die op het rekenmachinescherm wordt getoond.
Doelen:
- De For loop leren kennen
- Een lichtje laten knipperen.
- Gebruik van het Disp commando voor tekst en variabelen.
Stap 1
We gaan een programma gaan schrijven dat een LED een aantal keer laat knipperen. Met argumenten kun je bepalen hoe lang het LED-je aan en uit is. Dit programma introduceert de For…End loop (lus).
Stap 2
Setting up the program:
- Start een nieuw programma en noem het LIGHT2.
- Voeg ClrHome toe door [prgm] en met de pijltjes naar I/O en selecteer 8:ClrHome.
- Voeg Disp toe met [prgm], weer I/O, en selecteer 3:Disp.
- Tussen aanhalingstekens tik je de tekst “KNIPPER”
- Voeg Input toe via [prgm], I/O, en nu 1:Input.
- Tussen aanhalingstekens de tekst “AANTAL KEER ?”
- Daarna, op dezelfde regel, een komma en de variabele N.
Stap 3
De For Loop toevoegen:
- Voeg het commando For( toe via [prgm] en dan 4:For(.
- Voeg het restant van het commando I,1,N) toe.
- Dit commando betekent nu: “Voor i van 1 tot n in stappen van 1”
Stap 4
- Druk een aantal keer op Í om lege regels te creëren en voeg dan het End commando toe ([prgm] en dan 7:End). De lege regels worden later opgevuld.
- Het aantal lege regels is niet van belang. Je kunt er altijd meer invoegen. Lege regels beïnvloeden het programma niet.
- De regels tussen For en End wordt de ‘loop body’ genoemd. Dit is het deel van de code dat N keer wordt uitgevoerd door de For loop.
- Om lege regels in een programma toe te voegen, plaats je de cursor aan het einde van een regel en druk je op [ins] ([2nd] [del]) en dan [enter].
Stap 5
We willen dat het LED-je N knippert en de rekenmachine het knippernummer weergeeft. We starten de loop body met Disp I om de waarde I te tonen.
Stap 6
We gaan nu commando’s toevoegen die er voor zorgen dat de LED aan en uit gaat, zoals hiernaast
- Voeg Send(SET LIGHT toe via [prgm] HUB.
- Vervolgens ON via [prgm] HUB SETTINGS.
- Vergeet niet de aanhalingstekens en het rechter haakje.
- Voeg een Wait commando (in seconden) via [prgm] HUB zodat de rekenmachine wacht voordat het volgende commando gestuurd wordt.
- In ons programma gebruiken we 1 seconde maar je kunt elke waarde gebruiken, ook decimale waarden.
- Voltooi het programma zoals in het voorbeeld.
- Verlaat de editor en voer het programma uit.
Zag je het lampje knipperen? Het gaat snel dus knipper zelf niet.
Stap 7
Een uitdaging:
Voeg meer input commando’s toe (voor de For loop) om de timing van de twee Wait commando’s te variëren.
Laat het programma weer uitvoeren. Bekijk het knipperen en bekijk de waarden die worden getoond op het scherm van de rekenmachine.
Oefenblad 2: Kleuren variëren met een loop
Teacher's NotesIn de tweede les van Unit 2 leer je de intensiteit van de drie kleuren van de KLEURENLED op de TI-Innovator™ Hub te variëren
Doel:
- Gebruik van de For loop om de drie kleurkanalen van de KLEURENLED te beïnvloeden.
Stap 1
De rood, groen en blauw waarden (van 0 tot 255) die naar de HUB gezonden worden, bepalen de helderheid van ieder kanaal. Dit programma demonstreert een variatie aan kleuren uit de 16 miljoen (256³) mogelijke kleuren. Hierbij ga je gebruik maken van een aantal For( loops.
Creatie van een “Color Changer” programma
- Start een nieuw programma en noem het COLOR2.
- Voeg ClrHome end Disp toe met de titel van het programma (zie voorbeeld).
- Voeg Input toe met tussen aanhalingstekens WACHTTIJD. Daarna komt een komma en de W.
- Deze variabele zal gebruikt worden in het commando Wait. Een lager getal zal een kortere wachttijd hebben en het programma zal sneller het volgende commando uitvoeren.
- Vraag ook om de stapgrootte, zoals in het voorbeeld hiernaast. Deze variabele zal gebruikt worden in de For loop. Een grote stapgrootte zorgt voor een sneller programma.
Stap 2
Het programma zal geleidelijk (afhankelijk van de wachttijd en de stapgrootte) de intensiteit van ROOD vergroten, daarna van GROEN, vervolgens de intensiteit van ROOD verminderen en BLAUW weer laten toenemen, dan GROEN laten afnemen en ROOD weer laten toenemen en dan BLAUW laten afnemen en als laatste weer het ROOD laten afnemen. Dit is een vrij lang programma, en je kunt het laten lopen nadat elke For loop compleet is om te testen.
Wen jezelf aan om nadat je een For( commando hebt toegevoegd meteen een aantal lege regels te maken en dan meteen End toe te voegen. Je kunt het dan niet meer vergeten.
Stap 3
De eerste loop
- Voeg de details van het For commando in zodat de loop variabele I loopt van 0 tot 255 met als stapgrootte S
- Voeg het commando Send(“SET COLOR toe via [prgm] HUB.
- Gebruike eval( functie via [prgm] HUB menu voor de variabele I, en zet het GROENE en BLAUWE kanaal op 0.
- Vergeet niet de aanhalingstekens en het haakje.
- Na het Send commando komt een Wait commando met de variabele W die we hebben gekregen via het Input commando eerder in het programma.
Stap 4
Na de van deze eerste For loop kun je een Pause commando gebruiken met een boodschap om de tijd te hebben om het rode licht te bekijken.
Stap 5
Het toevoegen van de Groene kleur
We gaan nu een nieuwe loop maken om het groene licht aan de LED toe te voegen. We willen alleen het groene kanaal beïnvloeden en niet het rode kanaal. Dit kunnen we op twee manieren oplossen:
Send( “SET COLOR 255 eval(I) 0”)
(we weten ROOD is altijd aan en BLAUW is altijd uit)
of
Send( “SET COLOR.GREEN eval(I)”)
Dit laatste commando beïnvloedt alleen het GROENE kanaal en heeft geen invloed op het RODE en BLAUWE kanaal. In beide gevallen kunnen we de variabele I opnieuw gebruiken.
- In het voorbeeld hiernaast gebruiken we de tweede methode: Send(“SET COLOR.GREEN eval(I)”).
- Voeg het Wait commando toe binnen de loop body en gebruik de variabele W.
- Voeg weer het Pause commando toe na End om de nieuwe kleur te bewonderen. Welke kleur is dat?
Stap 6
Nu willen we de bijdrage van ROOD verminderen zodat we alleen groen overhouden.
Om een aflopende For loop te krijgen, start je met het hoogste nummer, dan het laagste nummer en gebruik je een negatieve stapgrootte:
For( i, 255, 0, -S)
Deze loop start met 255 en trekt daar bij elke stap van de loop step vanaf totdat de variabele i kleiner is dan 0 en de loop stopt. Gebruik de [(-)] knop en niet het minteken voor aftrekken. Dat veroorzaakt een error.
We willen alleen het RODE kanaal beïnvloeden daarom gebruiken we COLOR.RED in het Send commando. De rest van deze loop is hetzelfde als de eerste twee loops die we hebben gemaakt. Het voorbeeld toont alleen de keywords.
Voltooi zelf de rest van deze commando’s. Lukt dat niet, kijk dan bij de volgende stap.
Stap 7
Hier is het complete stuk code dat de bijdrage van ROOD geleidelijk laat afnemen. Aan het einde van deze loop moet het licht helder groen zijn.
- Voeg zelf een loop toe om BLAUW toe te voegen.
- Voeg dan een loop toe om GROEN te verwijderen.
- Voeg een loop toe om ROOD weer toe te voegen.
- Welke kleur zie je aan het einde van deze loop?
- Voeg een loop toe die het BLAUW verwijdert.
- Tenslotte, voeg een loop toe die ook het ROOD verwijdert.
- Wat is de kleur van de LED aan het einde van het programma?
- Wat gebeurt er als alle drie de kanalen de waarde van 0 hebben?
Oefenblad 3: Loop met muzieknoten
Teacher's NotesIn de derde les van Unit 2 leer je de verbanden tussen de muzieknoten en ga je een programma schrijven dat deze muzieknoten laat horen.
Doelen:
- Uitleg over toonlader en de relatie met 12√2
- Een programma maken dat een toonlader speelt.
Stap 1
Muziektheorie
Muzieknoten worden bepaald door de frequentie van trillende objecten zoals een luidspreker, een trommelvel of een snaar (zoals van een gitaar of een piano). De noten van een (chromatische) toonladder hebben een speciaal wiskundig verband. Er zijn 12 stappen in een octaaf om van een toon in het ene octaaf naar een dezelfde toon in het volgende octaaf te gaan. Als een toon een frequentie f heeft dan heeft de volgende toon in de toonladder een frequentie van f × 12√2
Als je de frequentie van een toon 12 keer vermenigvuldigd met 12√2 of 2^(1/12) (de twaalfde machtswortel van 2) dan geeft dit een verdubbeling van de originele frequentie. Dit betekent dat de 12-de noot in een toonladder een frequentie heeft van f× 12√2^12=2×f. De frequentie van de lage toon is de helft van de frequentie van de toon een octaaf hoger. Bijvoorbeeld bij een toon met een frequentie van 440 Hz heeft dezelfde toon een octaaf hoger een frequentie van 880 Hz, en een octaaf lager heeft een frequentie van 220 Hz.
Het menselijk oor ervaart tonen die een octaaf uit elkaar liggen toch als “dezelfde” toon. Dit wordt veroorzaakt door de overeenkomstige hogere harmonische trillingen. Omdat het menselijk oor deze tonen als “hetzelfde” waarneemt hebben deze tonen dezelfde naam gekregen in het Westers muzieksysteem. De naam van een toon een octaaf boven een C is ook een C. De intervallen tussen de tonen van een chromatische toonladder worden halve toonsafstanden genoemd.
In dit project gebruiken we het 12√2 principe om de frequenties van de twaalf tonen in een octaaf uit te rekenen. De
Stap 2
C in het ééngestreept octaaf (de eerste noot in het notenvoorbeeld hierboven) heeft een frequentie 261.64 Hz. De C in het tweegestreept octaaf heeft een frequentie van 2×261.64 Hz dus 523.28 Hz. Dit is de laatste noot in het notenvoorbeeld hierboven. Er zijn 12 stappen (halve noten) tussen deze twee tonen en elke toon heeft een frequentie 21/12 x de frequentie van de toon ervoor.
In het figuur hiernaast hebben we het getal 261.64 in getikt in de rekenmachine en in de volgende regel hebben we dit vermenigvuldigd met 21/12.
De rekenmachine voegt Ans in als je begint met vermenigvuldigen omdat je altijd minimaal 2 getallen met elkaar vermenigvuldigt. Als je een aantal maal op enter klikt dan krijg je de antwoorden zoals in het figuur. Als je 12 keer doorgaat met enter drukken dan wordt het antwoord 523.28, precies 2 x de beginwaarde, omdat f × (2(1/12))12 = 2 × f.
In het programma gaan we gebruik maken van deze herhalende eigenschappen van noten.
Stap 3
Het programma:
- Start een nieuw programma en noem het SOUND2
- Voeg de commando’s ClrHome en and Disp toe en geef de naam van het programma tussen aanhalingstekens.
- Geef de variabele F de waarde 261.64 met behulp van !
- Deze variabele zal alle frequenties krijgen van de twaalf noten in de toonladder.
Stap 4
De For Loop:
- Maak een For loop die loopt van 1 tot 12 (voor de twaalf noten in de ladder plus het octaaf)
- Voeg het Send( “SET SOUND commando toe via het HUB menu.
- Gebruik eval( voor de variabele F zoals in het voorbeeld. Vergeet de aanhalingstekens en het haakje niet.
Stap 5
Aanpassen van de frequentie:
- Vermenigvuldig F steeds met 21/12 en sla de waarde weer op in F
F*2^(1/12)→F
Deze regel neemt de huidige waarde van F en vermenigvuldigd dit met 21/12 en slaat deze nieuwe waarde weer op in F.
Stap 6
Aanpassingen aan het Programma:
Voeg een TIME parameter toe aan het commando Send( “SET SOUND en een even lang Wait commando om er voor te zorgen dat elke noot gespeeld kan worden. Zodra de TI-Innovator Hub een nieuw commando gaat hij verder met het volgende commando. Hij maakt het eerdere commando niet eerst af.
Toepassing: Computermuziek
Teacher's NotesIn dit programma gebruik je de random-generator om de rekenmachine zelf muziek te laten maken.
Doel:
- Gebruik van een For loop om het aantal tonen te bepalen
- Gebruik van de random generator om willekeurige muzieknoten te kiezen.
Stap 1
Jouw opdracht is om een programma te schrijven dat vraagt om het aantal te spelen tonen en vervolgens een For loop gebruikt om dat aantal gekozen tonen op willekeurige (random) hoogte te spelen. Als de toon klinkt moet er op het scherm de frequentie van de noot worden getoond met Disp.
In deze toepassing gebruiken we de functie randInt( ) van de TI-84 Plus CE om willekeurige tonen te generen van de toonladder.
- In het basisscherm kun je de functie randInt( vinden in het math>PROB menu.
- Dit commando heeft 2 (of drie) argumenten, je krijgt een hulpscherm.
- Geef de onder en bovengrens en laat n leeg. n krijgt dan de waarde 1.
- Deze functie wordt gebruikt om een lijst met n getallen te genereren.
- Kies Paste om het commando op het ‘HOME’ scherm te krijgen en druk op [enter]
- Gebruik nu steeds het pijltje omhoog en druk op Í om het commando opnieuw te gebruiken. Wijzig de argumenten en druk op [enter].
Stap 2
Je gaat de functie randInt( ) gebruiken in de muziek-noten-formule zodat de rekenmachine zelf willekeurige tonen gaat produceren gebaseerd op de 21/12 relatie tussen deze tonen.
Het belangrijkste stukje nieuwe code is:
Zoals je kunt zien in de tabel hiernaast is de frequentie van de A in het lage (contra) octaaf gelijk aan 55 Hz. Het bereik van 0 tot 59 is nodig voor alle 60 tonen in de tabel. De formule 2^(N/12) wordt gebruikt om de frequentie van de Nde noot vanaf A te bereken. Als N gelijk is aan nul, dan klinkt er een noot met een frequentie van 55 Hz, omdat 20 gelijk is aan 1.
- Oefenblad 1
- Oefenblad 2
- Oefenblad 3
- Toepassing
Module 3: BRIGHTNESS, IF, en WHILE
Oefenblad 1: BRIGHTNESS metingen
Teacher's NotesIn de eerste les van Unit 3 gaan we de ingebouwde lichtsensor van de Ti-Innovator HUB gebruiken en introduceren we de het Output( commando uit Ti-Basic om getallen weer te geven.
Doelen:
- Uitlezen van de BRIGHTNESS sensor
- Introductie van de While loop
- Gebruik van het Output( commando
- Introductie van het commando toString( en tekstsamenvoegingen.
Stap 1
In de vorige lessen hebben we alleen opdrachten naar de TI-Innovator™ Hub gestuurd die de ingebouwde apparaten zoals LIGHT, SOUND en COLOR aanstuurden.
In deze unit gaan we werken met de ingebouwde lichtsensor, en gebruiken we de waarde in het programma om een lichtmeter te bouwen. De lichtsensor geeft een waarde tussen 0 en 100 (met decimalen).
Om de waarde van de lichtsensor te krijgen, hebben we twee commando’s nodig:
- Send (“READ BRIGHTNESS”)
- Get(B)
Stap 2
Het programma:
- Maak een nieuw programma en noem het BRIGHT1.
- Voeg de commando’s ClrHome en Disp toe met de titel van het programma zoals in het voorbeeld.
- Press [prgm] en ga met de pijltjes naar het HUB menu.
- Selecteer 2: Send(“READ… en dan 1: BRIGHTNESS.
- Druk weer op [prgm] en dan het HUB menu.
- Kies 5:Get(
Hoe werkt het:
- READ BRIGHTNESS geeft de opdracht aan de TI-Innovator Hub om de helderheid of wel de lichtsterkte (brightness) te meten. Deze waarde wordt in de innovator in een buffer opgeslagen.
- Get(B) zorgt er voor dat de waarde die in de buffer is opgeslagen wordt doorgegeven naar de TI-84 Plus CE en in de variabele B wordt gestopt. B kan worden vervangen door alle numerieke variabelen van de rekenmachine: A…Z en Ɵ (theta).
Stap 3
While Loop:
De While…End loop ([prgm] CTL menu) wordt gebruikt om een hoeveelheid code te herhalen zolang (while !) de conditie waar is. Een conditie is een logische expressie die de waarde waar (true) of niet waar (false) geeft. De relationele operatoren en logische operatoren kun je op de rekenmachine vinden in het test menu van de calculator (2nd math).
De relationele operatoren zijn =, ≠ <, >, ≤, en ≥.
De logische operatoren zijn and, or, not, en xor.
Deze operatoren kunnen gezamenlijk gebruikt worden om condities te maken zoals : x>0 and y>0.
We gaan een eenvoudige While loop gebruiken die stopt als de lichtsterkte (BRIGHTNESS) lager is dan 1. Om het programma te beëindigen hoef je dan alleen de lichtsensor op de TI-Innovator Hub te bedekken met je hand.
Een andere manier om een programma te onderbreken is drukken op de ON knop. Er komt dan een foutmelding: ERROR: BREAK aan de bovenkant van het scherm. Je krijgt de keus” 1:Quitting naar het basisscherm of 2:Goto naar de programma-editor op de plaats waar het programma was toen je op ON drukte. Dit is een gebruikelijke manier om weer verder te gaan met bewerken van je programma.
Stap 4
Een While Loop toevoegen:
- Voeg voor het Send( commando in je programma de volgende regels toe:
- 2→B
- While B>1 (gebruik het [test] menu om > te selecteren)
- Het commando End van de While loop moet ook ingevoerd worden. Voeg na het Get( commando End toe voor het einde van de While loop.
Stap 5
- Voeg het Output( commando toe na het Get( commando maar voor het End van de loop (zie voorbeeld). Het Output( commando vind je via [prgm] en dan met de pijltjes naar I/O, en selecteer 6: Output(.
- Het Output( commando geeft je veel controle over de plaats op het basisscherm waar iets moet worden getoond. De structuur van het commando luidt: Output(<line#>, <column#>, <string of variabele>)
Voorbeeld:
- Output(3,7,“HELLO”) plaatst de letter “H” op lijn 3, kolom 7 van het basisscherm. De rest van het woord volgt de letter “H”.
- Output(5,10,B) plaatst de waarde van de variabele B op lijn 5 en kolom 10 van het basisscherm. De rest van de getallen volgt.
Stap 6
- Verlaat de editor en voer het programma uit terwijl de TI-Innovator Hub aangesloten is.
- Je zult de titel zien verschijnen aan de bovenkant van het scherm en in de waarde in het midden van het scherm. Deze waarde zal variëren afhankelijk van de lichtsterkte die de sensor meet. Helaas is het mogelijk dat de getallen die je ziet niet correct zijn.
Het Output( commando haalt geen decimalen weg als er een korter nummer wordt getoond nadat er een langer nummer wordt getoond. Bijvoorbeeld als eerst de waarde 1.23456 getoond wordt en daarna 55, dan zie je de waarde 5523456. De laatste aanpassing aan het programma is een truc om dit probleem op te lossen.
Stap 7
Om dit probleem van overblijvende digits op te lossen moeten we de waarde van variabele B converteren naar tekst die we aanvullen met spaties aan het einde om de vorige waarde totaal te overschrijven.
Het commando toString( kun je vinden in het programma I/O menu.
Het uiteindelijke commando wordt:
Output(5,10,toString(B)+“ ”)
Er zijn ongeveer 10 spaties tussen de aanhalingstekens.
Stap 8
Je zult nu zien dat sommige waarden korter zijn dan anderen.
Tekstsamenvoegingen:
Het “+” teken dat wordt gebruikt in het Output( commando wordt niet gebruikt om op te tellen: het wordt gebruikt om twee stukken tekst aan elkaar te plakken. De spaties tussen de aanhalingstekens worden aan het einde van tekstweergave van variabele B geplakt.
Oefenblad 2: BRIGHTNESS & LIGHT met IF en WHILE
Teacher's NotesIn deze les ontwerpen we een automatische lichtschakelaar die reageert op het aanwezige licht. De lamp gaat aan als het donker wordt en uit als het weer licht wordt.
Doelen
- READ BRIGHTNESS
- Gebruik van een oneindige While loop
- Gebruik van If…Then…Else…End om het licht aan en uit te zetten afhankelijk van de lichtsterkte.
Stap 1
Laten we een programma gaan schrijven dat afhankelijk van de lichtsterkte (helderheid) een lamp aan doet als het ‘donker’ wordt en hem uit doet als het ‘lichter’ wordt. Dit werkt als automatische verlichting en nachtlampen.
Het programma zal de lichtsensor uitlezen op de TI-Innovator™ Hub en de ingebouwde lamp aanzetten als de lichtsterkte onder een bepaalde waarde komt. De lamp wordt uitgezet als het licht wordt.
Het programma:
- Start een nieuw programma en noem dat BRIGHT2.
- Voeg het commando ClrHome en Disp toe met de titel. Zie voorbeeld
- Initialiseer de variabele b met het commando 2→B.
- Voeg een While loop toe met als conditie B>1. (De lichtsterkte is meer dan ‘erg weinig’).
- Voeg End toe om de while loop te sluiten.
Om de loop en het programma te beëindigen, kun je weer de lichtsensor afdekken.
Stap 2
- In de While loop body voeg je de commando’s :
- Send(“READ BRIGHTNESS”)
- Get(B)
Stap 3
If commando’s
In ons If commando hebben we twee blokken met code: één als de conditie (voorwaarde) waar is en een ander blok als de conditie niet waar is.
De structuur van dit multi-line commando is
If <voorwaarde> Then
<doe dit als het waar is >
Else
<doe dit als het niet waar is >
EndIf
Je kunt lege regels toevoegen door op 6[enter] te drukken.
Stap 4
Nu het schrijven van de voorwaarde (conditie) …
De lichtsterkte (brightness waarde) is opgeslagen in de variabele B en varieert tussen de 0 en 100.
Wat is echt ‘donker’? We kiezen de waarde 25, maar deze waarde kan altijd veranderd worden naar elke waarde tussen 0 en 100.
Je kunt het programma verbeteren door een Input commando te gebruiken om deze ‘trigger’ waarde in te voeren. Dit Input commando moet wel voor dat de While loop start.
Je krijgt het ‘<’ (kleiner dan symbool) via [test] menu (2nd math)
Stap 5
Voltooi het programma door de commando’s LIGHT ON of OFF in het Then en Else blok in te voegen zoals in het voorbeeld. Controleer het programma door op de sensor meer en minder licht te laten vallen. Gaat de rode LED branden?
Het kan helpen om een Output( commando toe te voegen na het GetB) commando zodat de waarde van de helderheid wordt getoond. Je kunt ook commando’s toevoegen in het Then en Else blok om aan te geven of het licht aan of uit staat. Dit kan bijvoorbeeld met:
Output(9,1,“ON ”) and Output(9,1,“OFF”)
Oefenblad 3: BRIGHTNESS en COLOR
Teacher's NotesIn deze les gaan we helderheid (BRIGHTNESS) gebruiken om de KLEURENLED te besturen.
Doelen:
- Het meten van de lichtsterkte en de waarde bepaalt de helderheid van de KLEURENLED of het geluid dat uit de luidspreker komt.
- Gebruik van omrekenformules om van helderheid (BRIGHTNESS) naar kleurwaarden te komen.
Stap 1
We gaan een programma maken dat reageert op de helderheid van de ruimte. Hoe helderder de ruimte, hoe feller het licht van de KLERENLED. Het moeilijke gedeelte hierbij is het omrekenen van BRIGHTNESS naar een KLEUR waarde.
BRIGHTNESS B heeft een bereik van 0 tot 100.
COLOR C (voor alle drie de kanalen) kan variëren tussen 0 en 255.
Hoe rekenen we om van b naar c?
Het programma:
- Start een nieuw programma met de naam BRIGHT3.
- Voeg de commando’s ClrHome en Disp toe met de titel van het programma zoals in het voorbeeld.
- Initialiseer de variabele B als in het voorbeeld.
- Voeg een While loop toe en lees de lichtsterkte (Brightness) en haal de waarde op met Get(B).
Het omrekenen komt later.
Stap 2
- Gebruik de variabele C voor de kleurwaarde van alle drie de kanalen van de KLEURENLED. De omrekeningsfactor is 2.55. Dit geeft 2.55*B→C.
- Controleer deze formule met de twee bekende paren waarden (0, 0) en (100,255).
- Voeg het commando Send( “SET COLOR in voor de End van de loop. Dit commando zal de helderheid van de KLEURENLED bepalen.
Stap 3
- Tenslotte complementeer je het SET COLOR commando met de functie eval(C) (drie keer achter elkaar gescheiden door spaties, voor elk kanaal een keer).
- Als alle drie de kanalen dezelfde waarden hebben dan is de kleur van de LED wit en wordt de helderheid bepaald door de waarde.
- Sluit de TI-Innovator™ Hub aan en voer het programma uit.
- Varieer de helderheid door de lichtsensor op verschillende voorwerpen te richten. Bekijk de intensiteit van de KLEURENLED op de HUB.
Je kunt het programma uitbreiden met een Output( commando dat de waarde van de variabelen B en C toont.
Maar wacht! Het effect is niet juist! Eigenlijk wil je dat de LED juist steeds feller gaat branden als de verlichting van de ruimte afneemt. Hoe kun je dat voor elkaar krijgen?
Extra uitdaging: Hoe kun je er voor zorgen dat verschillende helderheden verschillende kleuren geven?
Toepassing: Hand Music
Teacher's NotesIn deze toepassing ga je een programma schrijven waarbij de toonhoogte van de toon uit de luidspreker wordt bepaald door de variërende helderheid die de lichtsensor meet. Je varieert de lichtsterkte door met je hand te bewegen. Dus: handmuziek.
Doelen:
- Schrijf een programma dat lichtsterkte converteert naar geluid.
- Herhaling van de frequenties van muzieknoten en het 12√2 principe bij muzieknoten.
Stap 1
Schrijf een programma dat de BRIGHTNESS (lichtsterkte/helderheid) van de lichtsensor meet en verschillende tonen speelt afhankelijk van de lichtsterkte. Er zijn twee mogelijkheden voor de geluiden:
- Laat een frequentie klinken in het hoorbare gebied (100Hz – 1000Hz)
- Laat tonen van een toonladder klinken.
De eerste optie maakt gewoon geluid, de tweede zal meer geluid maken als een muziekinstrument. Bij de laatste optie is de wiskunde wat ingewikkelder.
In dit programma zal de TI-Innovator™ Hub zich gedragen als een theremin.
Het begin:
- Start een nieuw programma en noem het APPLIC3
- Voeg de commando’s ClrHome en Disp toe met de naam van het zoals in het voorbeeld.
- Voeg een While loop met daarin een commando om de lichtsterkte uit te lezen (BRIGHTNESS) en de waarde van de variabele B op te halen. Zie voorbeeld.
- Voeg een commando toe om een geluid te maken.
- Merk op dat we de variabele B gebruiken voor de lichtsterkte en de variabele F voor de frequentie van het geluid.
Stap 2
Jouw opdracht is om het programma af te maken met de ontbrekende code om lichtsterkte om te zetten in een hoorbaar geluid of in een toon uit de toonladder.
Voor een geluid gebruik een frequentie tussen 100 en 1000 Hz (of zelf gekozen grenzen).
Voor muzieknoten gebruik een bereik van A1 (55Hz) tot 50 noten hoger. Kijk voor meer informatie in oefenblad 3 van Unit 2. (Het programma heette SOUND2, dat 12 noten in een octaaf speelde).
Voor muzieknoten moet je de lichtsterkte converteren naar een geheel getal zodanig dat het het juiste ‘noot’ nummer geeft. Je kunt gebruik maken van de functie int( ) of de functie round( ,0).
int(X)→X geeft het grootste gehele getal kleiner dan X
round(X,0)→X rond X af naar het dichtstbij gelegen gehele getal.
- Oefenblad 1
- Oefenblad 2
- Oefenblad 3
- Toepassing
Module 4: Laat de Rover bewegen!
Oefenblad 1: Jouw eerste Rover programma
Teacher's NotesIn deze eerste les van Module 4, leer je over het werken in de programma-editor om een programma te schrijven dat de TI-Innovator Rover laat bewegen.
Doelen:
- De TI-84 Plus CE Programma-editor gebruiken
- De opdracht Send( gebruiken om de TI-Innovator Rover te verbinden (CONNECT) met de TI-Innovator™ Hub
- De TI-Innovator Rover vooruit (FORWARD), achteruit (BACKWARD),naar links (LEFT) en naar rechts (RIGHT) laten bewegen
Stap 1
Aan de slag
- Wanneer je een nieuw programma schrijft of een bestaand programma bewerkt, kun je de opdrachten voor de TI-Innovator Rover vinden door [prgm] te selecteren en vervolgens het menu Hub en daarna 7:Rover (RV)….
- Om de opdrachten voor de Rover snel te bereiken, selecteer je [prgm] en gebruik je vervolgens het pijltje naar rechts om naar het Hub menu te gaan en dan nummer 7 te kiezen.
- Sommige delen van de uiteindelijk instructie, zoals numerieke waarden en optionele parameters, worden ingevoerd als normale tekens van het toetsenblok (keypad) of ze worden geselecteerd uit een andere Rover menu.
- Sommige opdrachten voor de Rover bevatten een afsluitend aanhalingsteken en sluithaakje en anderen hebben dat niet, daarmee wordt aangegeven dat er (mogelijk) meer kan worden ingevoerd binnen de opdracht. In beide gevallen, moeten alle opdrachten worden afgesloten met het afsluitend aanhalingsteken en het sluithaakje.
Stap 2
Jouw eerste Rover-opdracht vertelt de TI-Innovator Hub om verbinding te maken met de Rover:
Send(“CONNECT RV”)
RV is de naam van de Rover.
Om deze opdracht te maken
- Selecteer eerst de toets [prgm] en kies dan het menu HUB.
- Selecteer vervolgens het submenu Rover (RV)….
- Selecteer tenslotte Send(“CONNECT RV”). De opdracht staat bijna onderaan in het submenu.
Stap 3
Vervolgens zullen we een Pause opdracht toevoegen. De opdracht pauzeert het rekenmachine programma en wacht tot de gebruiker op de enter-toets drukt.
- Druk op [enter] om naar een nieuwe regel in het programma te gaan.
- Druk op de toets [prgm] in het menu CTL en selecteer Pause.
- Voeg een passend bericht toe na de pauze-opdracht, zoals “PRESS ENTER TO START” door de alfabettoetsen te gebruiken.
Wanneer je tijdens het uitvoeren van het programma een piep hoort van de TI-Innovator Hub voordat (of terwijl) je “Druk op enter om te starten” ziet, betekent het dat de opdracht CONNECT RV niet met succes is uitgevoerd. Ga na of Rover wel aan is.
Stap 4
Rijden met de Rover
- Druk op [enter] aan het einde van de opdracht Pause om de volgende opdracht toe te voegen, die ervoor zorgt dat de Rover vooruit gaat bewegen
- Druk op prgm > Hub > Rover (RV)…, en selecteer dan het menu Drive RV… zoals je hier rechts kunt zien.
- Kies FORWARD uit het menu Drive RV…..
Stap 5
Merk op dat bij de opdracht die in het programma is geplakt het afsluitende aanhalingsteken en het sluithaakje ontbreken. We moeten nog wat informatie toevoegen.
Stap 6
- Voeg het getal 1 en vervolgens het afsluitende aanhalingsteken en een sluithaakje toe aan de opdracht. Het aanhalingsteken is [alpha] [+] en de toets met het sluithaakje zit boven de toets 9.
- Verlaat de editor ([2nd] [mode]), en voer het programma uit. Zorg ervoor dat er ongeveer 30 cm vrije ruimte voor de Rover is.
Als alles goed is, dan beweegt de Rover vooruit. Maar hoe ver? Bestudeer de beweging zorgvuldig en stel vast wat FORWARD 1 betekent.
De Rekenmachine toont ‘Gereed’ wanneer het programma stopt. Merk op dat het programma al eindigt voordat de Rover stopt met bewegen. De rekenmachine en de TI-Innovator Hub werken in een verschillend tempo.
Stap 7
Achteruitrijden
- Bewerk het programma en voeg de opdracht Send(“RV BACKWARD 1”) toe door te drukken op prgm > Hub > Rover (RV)… > Drive RV… > BACKWARD.
- Voeg vervolgens het getal 1 toe en een afsluitend aanhalingsteken en een sluithaakje net als je deed bij de opdracht FORWARD..
Deze keer zou de Rover een klein stukje vooruit moeten bewegen en vervolgens achteruit naar zijn oorspronkelijke positie. Als het dat doet: gefeliciteerd! Het is je gelukt de Rover te laten bewegen.
Stap 8
Draaien
De volgende twee opdrachten in het menu Drive RV zijn LEFT en RIGHT. Voeg deze twee opdrachten toe aan je programma en voer het programma opnieuw uit: Wat doen deze instructies?
Stap 9
Laat de Rover reizen
Bestudeer het programma dat je hier rechts ziet en voorspel wat de Rover zal doen en waar hij zal eindigen wanneer het programma stopt. Voer deze opdrachten in je rekenmachine in en voer het programma uit.
Deed je programma wat je verwachtte? Kun je een programma maken met uitsluitend deze opdrachten dat ervoor zorgt dat de Rover een rechthoekig patroon maakt?
Stap 10
Het nieuwe aanvullende programma-editor-menu gebruiken
Krijg toegang tot het nieuwe aanvullende programma-editor-menu door te drukken op alpha-F5. Gebruik dit menu om een regel te kopiëren (5: Copy Line) en deze regel te plakken op de regel onder de huidige cursorregel (6: Paste Line Below). Je kunt ook ongedaan maken (undo) en regels invoegen en het programma uitvoeren vanuit dit menu.
Oefenblad 2: Mogelijkheden voor het rijden
Teacher's NotesIn deze les ga je een aantal van de optionele mogelijkheden van het rijden onderzoeken. De vier opdrachten voor het rijden uit oefenblad 1 hadden geen afsluitende aanhalingstekens en geen sluithaakje. Dit is zo omdat er andere opties zijn die je kunt toevoegen aan de opdrachten. Deze les gaat over die opties.
Doelen
- De mogelijkheden voor het rijden van de Rover uitbreiden
- Opties voor RIGHT en LEFT
- Wachten
Stap 1
Parameters voor FORWARD en BACKWARD
Deze opdrachten voor rijden hebben drie optionele parameters:
- SPEED
- TIME
- DISTANCE
Deze kun je vinden in het menu: prgm > Hub > Rover (RV)… > RV Settings…. Ook de samengestelde eenheden voor SPEED (UNITS/S en M/S) kun je bereiken via dit menu.
Stap 2
DISTANCE, SPEED en TIME gebruiken
Enkele voorbeelden van verschillende manieren om de opdracht FORWARD toe te passen:
- FORWARD DISTANCE # is hetzelfde als FORWARD #
- FORWARD DISTANCE # M laat de Rover # Meters bewegen
- FORWARD # SPEED # waarrbij speed ligt tussen 1,4 en 2,3.
- Waarden buiten deze waarden geven een TI-Innovator™ Hub fout.
- FORWARD TIME #
Je kunt elke twee van deze drie opties specificeren in de opdrachten FORWARD en BACKWARD..
Je kunt ook eval( ) gebruiken als de waarde die je wilt gebruiken is opgeslagen in een rekenmachinevariabele of als je het resultaat van een uitdrukking wilt gebruiken.
Stap 3
Programma SPEED en TIME
- Aan het programma rechts is deze opdracht al toegevoegd:
Send(“RV FORWARD SPEED 2.3 TIME 2”) - Maak dit programma af door de correcte TIME op te geven, zodat de Rover terugkeert naar zijn startpositie:
Send(“RV BACKWARD SPEED 1.4 TIME ?”)
Hint: DISTANCE = SPEED * TIME
Stap 4
Opties voor RIGHT en LEFT
Deze opdrachten laten de Rover standaard 90 graden naar RIGHT of LEFT draaien, maar je kunt een aantal graden toevoegen aan de opdracht om elke willekeurige hoek te draaien (-360…360 graden). Negatieve waarden zijn ook toegestaan, dus LEFT -90 is hetzelfde als RIGHT 90.
- Voeg een opdracht toe om de Rover 135 graden naar rechts (RIGHT 135) te laten draaien. Je moet dan die 135 binnen het afsluitende aanhalingsteken en het sluithaakje intypen. Het woord DEGREES (graden) is niet nodig maar het is beschikbaar in het menu RV Settings…. voor de helderheid.
Je zou ook de hoekeenheid in RADIANS of GRADS kunnen specificeren, maar deze eenheden moeten dan genoemd worden en ze zijn ook te vinden in het menu RV Settings….
Je ziet rechts enkele voorbeelden. Wat is de uiteindelijke koers van de Rover nadat deze drie opdrachten zijn verwerkt?
Stap 5
Schrijf een programma om de Rover het pad van een gelijkzijdige driehoek te laten rijden.
Begin met:
Send “CONNECT RV”
Send “RV FORWARD ?”
Send “RV LEFT ?”
Of gebruik een lus..
Oefenblad 3: Opties, COLOR en timing
Teacher's NotesIn deze derde les van module 4 leer je over draaien naar een specifieke hoekrichting, timing en het werken met de COLOR LED op de Rover.
Doelen:
- De opdracht TO ANGLE gebruiken
- De RV.COLOR LED op de Rover gebruiken
- Timing aansturen op de rekenmachine en de Rover
Stap 1
Deze les gaat over drie extra mogelijkheden van de Rover:
- De opdracht TO ANGLE (die verschilt van LEFT en RIGHT)
- De RV.COLOR LED op de Rover aanzetten (gelabeld als ‘Color’ in de linkerbovenhoek van de voorkant, naast de indicatoren voor het batterij-niveau)
- Het synchroniseren van je programma met de bewegingen van de Rover door Wait te gebruiken
Stap 2
TO ANGLE
De opdracht Send(“RV TO ANGLE <getal>”) wordt gebruikt om de Rover te laten draaien naar een bepaalde koers. Wanneer je een opdracht stuurt om de Rover te verbinden, wordt de koers van de Rover ingesteld op 0 graden, wat, in de wiskundige wereld, oost is (vanuit de oorsprong ‘kijkend’ naar de positieve x-as). In deze wereld geldt dat noord 90 graden is, west 180 graden en is 270 graden. Zie het plaatje hier rechts.
Ongeacht waar de Rover op dit moment naar toe rijdt, zorgt de opdracht Send(“RV TO ANGLE 0”) dat de Rover draait in de richting waar hij heen ging toen de opdracht “CONNECT RV” werd gegeven.
De standaard hoekmaat is DEGREES maar je kunt ook RADIANS of GRADS specificeren (te kiezen vanuit het menu RV Settings…).
Stap 3
Probeer dit:
Send(“RV TO ANGLE 90”)
Wait 2
Send(“RV TO ANGLE 180”)
Wait 2
Send(“RV TO ANGLE 270”)
Wait 2
Send(“RV TO ANGLE 360”)
Deed de Rover wat je verwachtte?
Stap 4
Jouw programma synchroniseren met Rover
Programma’s op de rekenmachine zijn gereed (‘done’) voordat de Rover stopt met bewegen. Dit is zo omdat de opdrachten voor rijden (‘driving’) sneller worden opgeslagen in de TI-Innovator™ Hub dan de Rover ze kan verwerken. Opdrachten om te rijden (‘driving’) worden opgeslagen in een wachtrij en worden verwerkt door de TI-Innovator Hub wanneer de Rover er klaar voor is.
In deze activiteit gaan we een programma schrijven om volgens een willekeurig patroon te bewegen en de RV.COLOR LED op de Rover te laten oplichten terwijl de Rover in beweging is. We zullen ook de opdracht TO ANGLE gebruiken en eval( ) opnemen om naar de passende richting te draaien
Stap 5
Het programma opstellen
- Begin met een nieuw programma.
- Voeg een For-lus toe om de Rover volgens een willekeurig patroon te laten bewegen. Denk eraan dat het een goed idee is om de End van de For-lus nu al in het programma te zetten zodat je dat later niet vergeet. Je kunt altijd regels toevoegen aan de kern van de lus als je ze nodig hebt. Opmerking: De opdrachten For( en End staan in het menu CTL.
Stap 6
- Voeg in de kern van de lus de opdracht toe om vooruit (FORWARD) te bewegen.
- Voeg dan, om de Rover te laten draaien naar een een willekeurige richting, de opdracht randInt(0,360) → H toe.
- Voeg de opdracht TO ANGLE toe om de draaien in de richting H.
- Voer het programma byu uit om te zien dat:
- De Rover beweegt volgens een willekeurig patroon.
- Het programma ongeveer meteen gereed (‘done’) is, terwijl de Rover nog moet bewegen.
Stap 7
RV.COLOR
Aangezien de kleuren LED op TI-Innovator Hub verborgen is binnenin de Rover hebben we een andere kleuren LED bovenop de Rover gekregen om aan te sturen. De naam van de kleuren LED van de Rover is RV.COLOR en werkt met behulp van dezelfde aansturing als de ingebouwde LED. Je kunt elk van de vier opdrachten gebruiken in het menu prgm > Hub > Rover (RV)… > RV Color… dat je hier rechts ziet.
Send(“SET RV.COLOR 255 255 255”) geeft een wit licht.
Stap 8
RV.COLOR toevoegen aan je programma
- Voeg een RV.COLOR opdracht toe aan de kern van de lus onmiddellijk voor de opdracht FORWARD 1. De kleurwaarden kun je zelf bepalen.
- Voer het programma opnieuw uit om te zien wat er gebeurt. Merk op dat de LED bijna meteen oplicht en aan blijft.
Stap 9
Laten we nu proberen om de LED alleen te laten oplichten als de Rover vooruit beweegt. Hiervoor is het nodig dat we de rekenmachine laten wachten (Wait) totdat elk gedeelte is voltooid en dat we dan de LED uitschakelen terwijl de Rover aan het draaien is.
We moeten een Wait –opdracht toevoegen aan ons programma om aan te sturen wanneer de LED aan en uit wordt geschakeld.
- Hoe lang doet de Rover erover om FORWARD 1 te bewegen? Ongeveer 1 seconde?
- Voeg een opdracht Wait 1 toe na de opdracht FORWARD 1. Je kunt de waarde aanpassen als deze niet geschikt is voor jouw omgeving. Bedenk dat Wait te vinden is in het menu prgm > Hub.
- Voer het programma uit om het te testen.
Merk op dat de LED nog steeds aan staat. Wij moeten de LED uitzetten nadat de Rover klaar is met bewegen.
Stap 10
- Hoe langt doet de Rover over een draai? Ongeveer 1 seconde? Voeg een opdracht Wait 1 toe.
- Zet na de opdracht Wait 1 de LED uit door toe te voegen: Send(“SET RV.COLOR 0 0 0”).
- Test je programma. Schakelde de Rover het licht op het goede moment uit?
Stap 11
We moeten ook wachten, terwijl de Rover naar een nieuwe richting draait, om te controleren of het licht is uitgeschakeld.
- Voeg een opdracht Wait toe na de opdracht TO ANGLE. Deze Wait zou lang genoeg moeten zijn om elke draai tussen 0 en 360 graden aan te kunnen.
Stap 12
Uitbreiding
Kan je zorgen voor een andere kleur bij elke hoek? Hint: Gebruik eval(iets).
Extra uitdaging: Maak van de wachttijd bij de draai een functie die afhankelijk is van de hoek die gedraaid gaat worden door de draairichting van de Rover te observeren wanneer TO ANGLE wordt gebruikt.
Toepassing: Veelhoeken
Teacher's NotesDe toepassing voor deze module gaat over het programmeren van de Rover om een veelhoek te maken, waarbij de gebruiker de lengte van een zijde (in ‘Rover eenheden’) en het aantal zijden van de veelhoek invoert. De Rover zal dan de veelhoek maken.
Doelen:
- Invoer-opdrachten
- eval( ) gebruiken in instructies voor de Rover
- Principes van veelhoeken begrijpen
- Werken met COLOR en timing (Wait) (kleur en wachttijd)
Stap 1
Bedenk dat de bedoeling van eval( ) is om de waarde van een rekenmachine variabele of uitdrukking om te zetten in een string (tekenreeks) die verzonden wordt naar de TI-Innovator™ Hub. In het programma Geluid, dat je hier rechts ziet, voert de gebruiker een frequentiewaarde in voor de variabele frequenc. De functie eval(frequenc) zet dat getal om in een string (tekenreeks) die de TI-Innovator Hub kan verwerken.
Stap 2
WSchrijf een programma dat vraagt om de lengte van een zijde en het aantal zijdes van een veelhoek, en de Rover laat bewegen volgens dat patroon. Je kunt een markeerstift bevestigen aan de Rover en daadwerkelijk de veelhoek tekenen op een groot vel papier. Bedenk dat 1 eenheid 10 cm is.
Optioneel: Laat de COLOR LED de hoekpunten van de veelhoek oplichten.
Een aantal bruikbare opdrachten (in het Engels):
Input “LENGTH OF SIDE?”,L
Input “NUMBER OF SIDES?”,N
For(I,1,N)
Send(“RV FORWARD eval(L)”)
Send(“RV RIGHT
End<iets>
- Oefenblad 1
- Oefenblad 2
- Oefenblad 3
- Toepassing
Module 5: Sensoren van de Rover
Oefenblad 1: Afstandsmeter (ranger) van de Rover testen
Teacher's NotesIn deze eerste les van module 5 leer je over de ultrasone afstandsmeter (Ranger) van de TI-Innovator Rover en de hoe deze de beweging van de Rover aan kan sturen.
Doelen:
- De opdracht READ RV.RANGER gebruiken om afstand te meten
- De opdracht gebruiken om de beweging van de Rover te veranderen
Stap 1
Aan de voorkant van de TI-Innovator Rover zit een sensor die de ultrasone afstandsmeter (Ranger) wordt genoemd. Deze afstandsmeter meet de afstand tot een object dat voor de Rover staat. Deze informatie kan worden gebruikt om de bewegingen van de Rover aan te sturen; als de Rover te dicht bij een obstakel komt, kan hij geprogrammeerd zijn om van richting te veranderen om het obstakel te vermijden.
We gaan eerst een testprogramma schrijven om te bepalen hoe de afstandsmeter werkt en vervolgens zullen we die informatie gebruiken in oefenblad 2 om de beweging van de Rover aan te sturen.
Stap 2
Het programma zal de waarde van de afstandsmeter van de Rover uitlezen en die waarde tonen op het scherm va de rekenmachine. De Rover zal niet bewegen in dit programma. Je zult je hand bewegen voor de Rover of de Rover in je hand houden en hem richten op diverse obstakels om de metingen te observeren.
Starten met het testprogramma
- Ons nieuwe programma heet ROVER51. Het begint met de opdracht ClrHome. Voeg vervolgens de opdracht Send (“CONNECT RV”) toe uit het menu prgm > Hub > Rover (RV)…..
Stap 3
De hoofdlus
We zullen een While-lus gebruiken om het programma te besturen. Wanneer de gemeten afstand kleiner is dan een bepaalde waarde, zal het programma stoppen. We gebruiken de variabele D om de gemeten afstand vast te leggen.
- Initialiseer D met de waarde 1.
- Selecteer While uit het menu prgm > CTL. Programmeer de While-lus om door te gaan zolang D groter is dan 0,1.
Stap 4
The Loop Body
- De opdracht READ RV.RANGER is te vinden in het menu
prgm > Hub > Rover (RV)… > Read RV Sensors…..
Stap 5
- Selecteer Send(“READ RV.RANGER”).
- Voeg de opdrachten
Get(D)
Wait 0,25
toe aan de kern van de lus.
Om een waarde op te halen van een sensor is zowel de opdracht Send(“READ…”) nodig om de waarde van de sensor naar de TI-Innovator™ Hub te halen, als de opdracht Get( ) om de waarde van de TI-Innovator Hub naar de rekenmachine te halen. De opdracht Wait 0,25 wordt gebruikt op de bewerking te vertragen zodat de getallen makkelijker te lezen en te begrijpen zijn.
Stap 6
De waarde weergeven
- We gebruiken een Output( )-opdracht om de waarde van D weer te geven op een vaste positie op het scherm van de rekenmachine.
- Voeg de opdracht End toe.
Stap 7
Het programma uitvoeren
- Terwijl het programma wordt uitgevoerd, geeft het scherm van de rekenmachine een getal weer. Beweeg je hand voor de Rover zodat de afstandsmeter verschillende afstanden kan meten. In welke eenheden worden deze afstanden gemeten? Wanneer zal het programma stoppen?
Antwoord: De eenheden zijn meters en het programma zal stoppen wanneer de gemeten afstand kleiner is dan 0,1 m of 10 cm.
Oefenblad 2: Afstandsmeter en beweging
Teacher's NotesIn de eerste les van module 5, heeft u de afstandsmeter van de Rover getest om te zien hoe u de sensor moet lezen en een waarde weergeeft. Deze les brengt dit testen verder om de beweging van de Rover aan te sturen.
Doelen
- De opdracht READ RV.RANGER gebruiken om de afstand tot een obstakel te bepalen.
- De beweging van de Rover aansturen wanneer de Rover te dicht bij een obstakel komt.
- De timing van de beweging van de Rover regelen binnen het programma van de rekenmachine
Stap 1
We gaan een programma schrijven om de Rover heen en weer te laten bewegen tussen twee muren. We beginnen de Rover FORWARD te laten bewegen, de afstandsmeter uit te lezen en, wanneer de Rover te dicht bij de muur komt, de Rover te laten omkeren en FORWARD te bewegen.
Het idee in grote lijnen
In een For-lus (die uiteindelijk afloopt)
Begin met de Rover die FORWARD beweegt
Zolang (while) de afstand meer dan ongeveer 3 cm is
ga door met het controleren van de afstandsmeter
Beëindig (end) de While-lus
STOP, draai RIGHT
Beëindig (end) de For-lus
Stap 2
- Begin het programma op de gebruikelijke manier.
- Voeg een For(-lus toe die 10 keer herhaald zal worden.
- Voeg een opdracht FORWARD 100 toe om10 meter vooruit te bewegen (100 * 0,1m per unit) toe.
- Denk er aan om de For( -lus structuur af te sluiten met End.
Stap 3
Net zoals in de vorige les gebruiken we ook hier de variabele D om de afstand van de afstandmeter tot een obstakel te representeren.
- Initialiseer D met de waarde 1 en voeg een lus While D > 0.25 in.
Merk op dat er in de programmacode twee keer een End staat: een End voor de For-lus en een End voor de While-lus.
Stap 4
- We voegen vervolgens de programmacode in in de kern van de While-lus. Als je niet genoeg lege regels in je programma hebt, plaats de cursor dan aan het begin van een regel waar je de programmacode wilt invoegen. Druk op [ins] ([2nd] [del]) en druk vervolgens op [enter]. Je kunt ook dit alternatief gebruiken: om een regel met programmacode boven de huidige regel toe te voegen: druk op , [alpha] F5 en selecteer Insert Line Above.
Stap 5
- Voeg de opdracht Send(“READ RV.RANGER”) toe.
- Gebruik de opdracht Get( om de waarde op te slaan in de variabele D.
Dit maakt de While-lus af. De Rover beweegt 10 meter FORWARD en de While-lus houdt de afstand bij. Voeg desgewenst een Output( -opdracht toe aan deze While–lus om de actuele afstand te tonen om er zeker van de zijn dat alles naar behoren werkt.
Als de While-lus eindigt geeft dit aan dat de Rover te dichtbij een obstakel is. We gaan de Rover vertellen dat hij moet STOPpen met FORWARD bewegen en om moet draaien. We hoeven de Rover echter niet te vertellen om opnieuw FORWARD te gaan bewegen.
Stap 6
- Voeg na de End van de While-lus, maar voor de End van de For-lus, de opdracht RV STOP en vervolgens de opdracht RV RIGHT 180 toe.
- Voeg de opdracht Wait 2 toe om de Rover tijd te geven om om te draaien voordat hij opnieuw FORWARD gaat bewegen. (Bedenk dat de opdracht FORWARD aan het begin van de For-lus staat.)
- Verlaat en test je programma. Als de Rover dicht bij een obstakel komt, zou hij moeten omdraaien en in de tegengestelde richting bewegen. Pas, als dat nodig is, de waarden (minimumafstand en Wait tijd) aan voor jouw situatie (het oppervlak waarop de Rover beweegt). Als de Rover te dicht bij de muur komt dan kan de achterkant van de Rover tegen de muur botsen bij het keren.
Oefenblad 3: De COLORINPUT sensor
Teacher's NotesIn deze derde les van module 5, introduceren we de COLORINPUT (kleurinvoer) sensor en gebruiken we de waarde ervan om de Rover van richting te laten veranderen.
Doelen:
- COLORINPUT aflezen (READ)
- De waarde gebruiken om de richting van de Rover te veranderen
Stap 1
De Rover heeft een COLORINPUT sensor op de onderkant. Het licht dat op de vloer schijnt wordt door de sensor gebruikt om de kleur op de vloer beter te ‘zien’. We zullen een programma schrijven om de Rover te laten draaien wanneer deze een verandering van kleur ‘ziet’. De kleur die gezien is door de sensor wordt geconverteerd door de TI-Innovator™ Hub in een van de negen mogelijke waarden die elk een kleur voorstellen.
1 = Rood
2 = Groen
3 = Blauw
4 = Cyaan
5 = Magenta
6 = Geel
7 = Zwart
8 = Wit
9 = Grijs
Stap 2
- Begin het programma op de gebruikelijke manier.
Stap 3
- We gaan een For-lus gebruiken om te zorgen dat de Rover vier keer beweegt en draait.
- End is het einde van de For-lus structuur.
Stap 4
- We gebruiken een While-lus om op zoek te gaan naar een verandering in kleur, maar eerst moeten we weten welke kleur de Rover op dit moment ‘ziet’.. We gebruiken READ RV.COLORINPUT en Get (haal) de waarde naar de variabele C in de rekenmachine.
Stap 5
- Vervolgens initialiseren we nog een andere variabele, D, om de While-lus te laten beginnen. D zal de kleur die de Rover tijdens het rijden ziet vasthouden. Aan het begin stellen we D in op dezelfde waarde als C. Daarna laten we de Rover FORWARD (vooruit) bewegen.
Stap 6
- We programmeren nu de While-lus om D met C te vergelijken, omdat we binnen de While-lus gaan kijken naar een verandering in de waarde van D.
Het ‘is gelijk’-teken is te vinden in het [test] menu ([2nd] [math]).
- Vergeet niet om een opdracht End toe te voegen voor de While-lus (dit wordt niet getoond).
Stap 7
- Binnen de While-lus, houden we de we kleurensensor in de gaten zolang de Rover beweegt. We slaan de kleurwaarde op in variable D. De lus stopt wanneer D (de ‘actuele’ kleur) verschilt van C (de ‘oorspronkelijke’ kleur).
Stap 8
- Aan het eind van de While-lus vertellen we de Rover om te stoppen (STOP) en naar rechts te gaan (RIGHT). Merk op dat deze twee opdrachten liggen tussen de twee Ends van het programma. De tweede End is het einde of the For loop, so the program causes the Rover to turn right four times when it detects a change in the color of the surface.
- Voeg een opdracht FORWARD 1 (vooruit) en een opdracht Wait 1 (wacht) toe zodat de Rover weg beweegt van de gekleurde plek voordat het programma terugkeert naar de lus en opnieuw de nieuwe ‘oorspronkelijke” kleur (C) opmerkt.
Stap 9
- Test je programma op de vloer op een oppervlak met één effen kleur (wit). Plaats een plek van ongeveer 5 cm bij 5 cm in een contrasterende kleur (zwart) op de vloer op het pad van de Rover zodat de COLORINPUT-sensor deze zal zien. Wanneer de Rover over die plek beweegt zou hij moeten stoppen, dan draaien en dan opnieuw gaan rijden. Pak de gekleurde plek en plaats deze opnieuw voor de Rover. Dit zal vier keer moeten gebeuren om het programma helemaal af te maken.
Toepassing: De bochtige weg
Teacher's NotesIn deze toepassing voor module 5 ga je een programma schrijven waarmee je de Rover een pad laat volgen op een vel papier.
Doelen:
- COLORINPUT gebruiken om een bochtig pad op papier te detecteren en te volgen
- Een voorbeeld pad op papier volgen (zie het pdf bestand van de test pagina’s.)
Stap 1
Schrijf een programma om de Rover een bochtig pad op papier te laten volgen met behulp van de kleurensensor. Het pad wordt beschreven met twee verschillende kleuren zoals hieronder:
De Rover zal beginnen aan de linkerzijkant van het papier en naar rechts rijden en daarbij het bochtige pad over het papier volgen. Wanneer de Rover RED ziet zal hij een klein beetje naar links draaien en een beetje vooruit bewegen. Wanneer de Rover WHITE ziet zal hij een beetje naar rechts draaien en een beetje vooruit bewegen.
Experimenteer met de draaihoek en de afstand om te zien hoe de Rover reageert op de verschillende kleuren. Als jouw papier rood en wit is net zoals in het plaatje hierboven, dan kun je READ COLORINPUT.RED gebruiken om te zien welke waarden er worden gegeven door elk van beide zijden van het papier. Als je een andere kleur gebruikt zoals zwart, dan kun je READ COLORINPUT.GRAY (of.GREEN of .BLUE) gebruiken.
Stap 2
Hier zie je een programma (ACOLTEST), in het Engels, dat je kunt gebruiken om de kleurensensor van de Rover te testen. Bekijk welke waarden je moet gebruiken in je programma:
ClrHome
Disp "COLORINPUT TEST"
Send("CONNECT RV")
While 1
Send("READ RV.COLORINPUT.RED")
Get(R)
Disp R
Wait .25
End
Stap 3
Merk op dat in dit programma de Rover niet beweegt. Gebruik het programma hierboven om te bepalen wat de Rover ziet aan elke zijde van de golvende lijn door de waarden van R die worden getoond te bekijken. Gebruik deze informatie om je programma te ontwerpen. Test je programma door de Rover aan de linkerkant van het papier te plaatsen met de kleurensensor vlakbij de grens tussen de rode en witte kant van het papier. Zorg dat de kleurensensor van de Rover boven het papier staat. Jouw programma zou moeten werken ongeacht waar de Rover begint.
Dit programma gebruikt een oneindige lus. Om een lopend programma te onderbreken of te stoppen druk je op de toets ON. Je zult dan de foutmelding ERROR: BREAK zien bovenaan het scherm en je hebt de keuze om 1: af te sluiten en naar het beginscherm (HOME) te gaan of om 2: (GOTO) naar de programma-editor te gaan op het punt waar de actie ‘drukken op ON’ het programma heeft gestopt.
- Oefenblad 1
- Oefenblad 2
- Oefenblad 3
- Toepassing