TI Codes:
TI-Nspire™ Technologie:
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: Het eerste programma
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-Nspire™ Programma-editor
- Het gebruik van het Send commando 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-Nspire CX. 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”. 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 hebben een eigen submenu HUB in het menu van de programma-editor.
Stap 2
Het eerste programma zorgt er voor dat de TI-Innovator Hub het rode lampje (LED) 5 seconden zal laten branden.
- Om een nieuw programma te schrijven, kun je een nieuwe pagina toe voegen (+page) of een nieuw document starten. Kies de optie Programma-editor toevoegen. Een andere optie is om document met een rekenmachinepagina te starten en dan via het menu functies en programma’s de programma-editor te starten. Je krijgt dan een gesplitst scherm zoals in het voorbeeld hiernaast. Een nadeel is dat de programma-editor dan heel smal wordt.
- Kies een naam voor het programma (hier gebruiken we 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.
Om deze regel te maken, ga je als volgt te werk:
- Druk op de menu knop, kies het submenu HUB
- Selecteer Send “SET
- Selecteer daarna LIGHT uit het menu
Stap 4
Het submenu Hub bevat commando’s voor het programmeren van de TI-Innovator Hub. Je kunt ze met de hand intikken, maar het is handiger om ze te selecteren vanuit het menu.
Als je de commando’s Send “SET en LIGHT hebt gebruikt, moet je daarna de instellingen ON en TIME definiëren in het submenu settings.
- Completeer de regel met de rest van het commando:
Send(“SET LIGHT ON TIME 5”) - Je vindt ON en TIME in menu > Hub > Settings.
Stap 5
Het complete programma staat rechts. Het Send commando zendt de string (de regel tekst tussen aanhalingstekens) naar de TI-Innovator Hub.
Stap 6
Om het programma uit te voeren:
- Druk ctrl R (gelijktijdig) in. De syntax wordt gecontroleerd en er wordt automatisch een rekenmachinepagina toegevoegd aan het document als deze er nog niet was.
- Controleer of de TI-Innovator is aangesloten
- Druk op [enter] om het programma te starten1
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.
1 Zie de docentenhandleiding voor de procedure bij OS ouder dan 4.5
Stap 7
Om dit toe te voegen aan het programma, moeten we het programma aanpassen:
- Ga naar de Programma-editor.
- Voeg een lege regel toe door de cursor aan het einde van de regel met het SEND commando te plaatsen en op enter te drukken.
- Het Wait commando staat in het Hub menu.
- Voeg een Wait 5 commando toe boven de regel met EndPrgm.
Druk op ctr R om het programma opnieuw uit te voeren. 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.
Stap 8
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 KLEURENLED kunt gebruiken op de TI-Innovator™ Hub.
- Argumenten gebruiken in een programma
- KLEURENLED aansturen
Stap 1
KLEURENLED (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
Om te beginnen gaan we KLEURENLED aansturen via de rekenmachine app:
- Selecteer via het menu menu > Functies & Programma’s > I/O het Send commando.
Stap 3
- Na het keyword Send, type je de aanhalingstekens voor open en sluiten (ctrl-[x]).
- Binnen de aanhalingstekens type je
SET COLOR
en drie getallen gescheiden door een spatie die de waarden voor rood, groen en blauw licht geven.
- Deze getallen moeten tussen 0 en 255 liggen. Hoe hoger het getal hoe helderder de kleur. Zie voorbeelden in de figuur rechts.
Merk op dat de LED blijft branden totdat je het verandert. Met een programma kun je het aan- en uitgaan van het lampje beter controleren.
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 een paar seconden branden in de gewenste kleur en dan uitgaan.
Stap 4
- Om een nieuw programma te starten vanuit de rekenmachine app, kies:
menu > Functies & Programma’s > Programma Editor > Nieuw - Noem het programma color01.
Stap 5
- Type tussen de haakjes na de programmanaam drie letters gescheiden door komma’s. Zij geven de waarden rood, groen en blauw.
- Deze letters zijn argumenten voor het programma en zullen door het programma gebruikt worden om de waarden van de drie kleuren naar de Hub te sturen.
- In het voorbeeld gebruiken we r,g,b.
Argumenten zijn variabelen die gevuld zullen worden zodra het programma uitgevoerd wordt. Deze variabelen bestaan alleen voor het programma en zijn niet beschikbaar in andere apps en worden gebruikt als zogenaamde “lokale variabelen”.
Stap 6
Het ‘Color’ programma
- Selecteer menu > Hub > Send “SET…>COLOR om het eerste gedeelte van het commando in het programma te kopiëren.
Stap 7
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 8
Het Send commando voltooien:
- Voeg de functie eval( ) toe door menu > Hub > eval( te kiezen.
- Type de letter r tussen de haakjes.
- Voeg een spatie toe na de haakjes.
- Herhaal de eval( ) functie nog 2 keer voor g en b. Vergeet niet de spaties toe te voegen. Het Send commando moet er als het voorbeeld uitzien.
Stap 9
- Voeg na het Send commando een Wait commando toe om een aantal seconden te wachten. Vergeet niet om het aantal seconden op te geven.
Stap 10
- Voeg tenslotte een ander Send commando toe om KLEURENLED uit te zetten:
- Gebruik drie nullen (0) om alle kleuren uit te zetten.
Stap 11
Run the Program:
- Zorg dat de TI-Innovator Hub is aangesloten op de rekenmachine
- Type ctr+R in om het programma uit te voeren
- De kleren LED brandt het aantal seconden dat je hebt opgegeven bij het Wait commando en gaat dan uit.
Om het programma nogmaals uitvoeren moet je twee keer op het pijltje om hoog klikken en vervolgens op enter klikken. Wijzig de getallen en druk nogmaals op enter.
Oefenblad 3: Request 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 Request 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 Request commando kun je vinden in het I/O menu. Het wordt gebruikt om input van de gebruiker te krijgen. Het commando heeft ook de mogelijkheid om de gebruiker een betekenisvolle boodschap te geven.
Commando Syntax: Request <tekst> , <Variabele>
In dit sound programma gaan we het Request commando gebruiken.
Stap 3
- Begin een nieuw programma en noem het SOUND1.
- Voeg het Request commando toe via het I/O menu.
- Voeg de tekst “Frequentie ? ” toe en daarna een komma.
- Type vervolgens de naam van de variabele die gebruikt gaat worden voor de frequentie, freq.
- Voeg nog een ander Request 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 freq en tijd te krijgen (evalueren).
Afronding van het SOUND programma
- Selecteer Send “SET… en SOUND via menu > Hub > Send “SET… > SOUND.
- Selecteer eval( via menu > HUB > eval().
- Voeg de variabele freq toe tussen de haakjes.
- Type vervolgens een spatie en een nieuwe eval() functie voor de variabele tijd.
- Druk op ctrl-R om het programma uit te voeren1.
1 OS ouder dan OS 4.5: Zie Docentenhandleiding hoe je een programma moet uitvoeren.
Stap 5
Als je dit programma uitvoert dan krijg je een dialoogbox omdat je een Request commando gebruikt.
- 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 seconde.
- 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
Doel:
- 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 Text om te pauzeren
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. Het stopt echter de uitvoering van het programma niet.
Het Text commando (in het I/O menu) toont een dialoog box en wacht op de gebruiker om de enter toets of de ‘OK’ knop in te drukken voordat het programma verder gaat.
Stap 2
Beginnen met een titelpagina
- Start een nieuw programma en noem het Toepassing1.
- Haal het Text commando op uit het I/O menu.
- Plaatst tussen aanhalingstekens de boodschap
“Verkeerslicht “
Zoals in 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
Laten we 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…EndFor loop (lus).
Stap 2
Het programma:
- Begin een nieuw programma en noem het LIGHT2.
- Voeg het commando Disp toe via menu > I/O> 1:Disp.
- Schrijf tussen aanhalingstekens de tekst “Knipper” zoals hiernaast.
- Voeg het commando Request toe via menu > I/O > 1:Request.
- Schrijf tussen aanhalingstekens “Aantal keer ?”
- Plaats daarna een komma en dan de variabele n
Stap 3
De For Loop toevoegen:
- Kies de For loop via menu > Besturing> 5:For…EndFor.
- Het begin van de For loop For , , en het einde EndFor worden in het programma geplakt met daar tussen in een lege regel voor de body van de loop.
- Completeer de rest van commando For met i,1,n, tussen komma’s
- Dit commando betekent nu: “Voor i van 1 tot n in stappen van 1”
- Druk een aantal keer op enter in de loop body om lege regels in te voegen die we later invullen.
- 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 EndFor wordt de ‘loop body’ genoemd. Dit is het deel van de code dat N keer wordt uitgevoerd door de For loop.
Stap 4
We willen dat het LED-je n keer aan een uit gaat. We willen dat de rekenmachine het knippernummer weergeeft. We starten de loop body met Disp i, de “loop”-variabele.
Stap 5
We gaan nu commando’s toevoegen die er voor zorgen dat de LED aan en uit gaat, zoals hiernaast
- Voeg het commando Send “SET LIGHT toe vanuit het HUB menu.
- Voeg het woord ON toe vanuit het menu HUB > SETTINGS (je kunt het ook intikken).
- Voeg het commando Wait (in seconde) toe vanuit het HUB menu zodat het programma wacht voordat het het volgende commando stuurt.
- In ons programma hebben we 1 seconde wachten gebruikt, maar je kunt elke waarde kiezen die je wilt (ook decimale waarden als 1.5).
- Voeg het volgende Send commando toe om de LED uit te doen en daarna nog een Wait commando.
- Voer het programma uit met ctrl-R
Zie het inspringen van de code in het voorbeeld. Dit helpt om programma’s beter leesbaar te maken maar verandert niets aan de uitvoering van het programma.
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 loops om de drie kleurkanalen van de KLEURENLED te beïnvloeden.
Stap 1
De rood, groen en blauw waarde (van 0 tot 255) die naar 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 het commando Disp toe met daarin de titel van het programma
- Voeg Request toe met tussen de aanhalingstekens “Wachttijd ?”
- Voeg dan een komma toe en de variabele 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.
Notitie: Local i voorkomt dat de variabele ook buiten het programma zichtbaar is. Het commentaarsymbool © is beschikbaar via het menu menu > Acties > opmerking toevoegen.
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.
Stap 2
Het is prettig dat de editor automatisch voor elk For commando meteen een EndFor commando toevoegt. Hierdoor kun je het niet vergeten.
- Voeg een For…EndFor loop toe vanuit het Control menu na het commentaar
Stap 3
Completeren van 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 Send “SET COLOR toe via het HUB menu.
- Gebruik de eval( ) functie uit het HUB menu om de variabele i te gebruiken voor de waarde van het rode kanaal. Zet het groene en blauwe kanaal op -0.
- Denk om de aanhalingstekens en de haakjes.
- Voeg na het Send commando een Wait commando in met de variabele w dat je hebt gebruikt in het eerdere Request commando.
Stap 4
- Na de EndFor van deze eerste For loop kun je een Tekst commando gebruiken 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 eerste methode.
- Voeg het Wait commando toe binnen de loop body en gebruik de variabele w.
- Voeg weer het Text commando toe na EndFor 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, -Step
Deze loop start met 255 en trekt daar bij elke stap van de loop step vanaf totdat de variabele i kleiner is dan 0 wanneer 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.
Stap 2
In dit project gebruiken we het 12√2 principe om de frequenties van de twaalf tonen in een octaaf uit te rekenen. De 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×(21/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 Disp toe met tussen haakjes “Toonladder”
- Geef de variabele f de waarde 261.64
- 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 13 (voor de twaalf noten in de ladder plus het octaaf)
- Voeg het commando Send “SET SOUND toe uit het HUB menu
- Voeg eval( ) toe met de variabele f zoals in het voorbeeld.
Stap 5
Aanpassen van de frequentie:
- Vermenigvuldig f steeds met 21/12 en sla de waarde weer op in f
f := f * 2^(1/12)
Deze regel neemt de huidige waarde van f en vermenigvuldigd dit met 21/12 en slaat deze nieuwe waarde weer op in f . - Voer het programma uit met ctrl+R
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. 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-Nspire om willekeurige tonen te generen van de toonladder.
- In de rekenmachine app kun je randInt( ) vinden bij het menu > kansen > willekeurig > geheel getal.
- Dit commando heeft 2 (of drie) argumenten.
- Geef de ondergrens en de bovengrens gescheiden door een komma en druk op enter.
- Ga met je pijltjes toets 1 regel om hoog naar het vorige commando en druk op enter. Wijzig de grenzen en speel met de functie om te zien wat de gevolgen zijn.
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 deze les gaan we de lichtsensor van de Ti-Innovator Hub onderzoeken en gebruiken we de het Disp commando om de waarden weer te geven.
Doel:
- Uitlezen van de BRIGHTNESS sensor
- Introductie van de While loop
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 <var>
Stap 2
Het programma:
- Maak een nieuw programma en noem het BRIGHT1.
- We gebruiken de variabele b voor de waarde van de lichtsensor. We declareren deze variabele lokaal (dit is niet noodzaklelijk).
- Selecteer via menu > Hub > Send “READ… > BRIGHTNESS. Druk op enter.
Stap 3
- Selecteer vervolgens menu > Hub > Get.
- Type de variabele b (zonder haakjes of aanhalingstekens).
Stap 4
Hoe werkt het:
- READ BRIGHTNESS geeft de opdracht aan de TI-Innovator Hub om de helderheid of wel de lichtsterkte (brightness0) 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-Nspire en in de variabele b wordt gestopt.
While Loop:
De While…EndWhile loop (menu > Besturing >) 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 met ctrl = .
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.
Stap 5
Een While Loop toevoegen:
- Voeg voor het Send commando in je programma de volgende regels toe:
- b:=2
- While b>1 (gebruik ctrl-= key om > te selecteren)
Deze regels starten de loop. Zolang de conditie (voorwaarde) b>1 waar is, blijft de loop de lichtsensor uitlezen. Zodra de voorwaarde onwaar is (b.v. als er geen licht meer op de sensor valt omdat je hand het bedekt) wordt de loop beëindigd.
Als je While…EndWhile selecteert van het Control menu, dan wordt het EndWhile commando op de verkeerde plaats in je programma gezet!
Het moet na het Get commando zoals in de figuur hierboven. Je kunt het EndWhile commando selecteren, knippen (ctrl X) en plakken op de juiste plaats (ctrl V). Je kunt het ook wegehalen met delete en dan op de juiste plaats opnieuw intikken.
Als je While met de hand hebt ingetikt dan moet ook de EndWhile van de While loop worden ingevoerd met de hand. De EndWhile moet na het Get commando .
Stap 6
- Voeg een Disp commando (menu > I/O > Disp ) toe na het Get commando maar voor EndWhile (zie voorbeeld).
- Toon de waarde van b.
Stap 7
- Voer het programma uit met ctrl-R (zorg dat er een innovator is bevestigd aan de rekenmachine!).
- Je zult een rij met waarden over het scherm zien rollen. Deze waarden veranderen met de helderheid van het licht zoals deze wordt gemeten door de sensor.
- Om de loop (en het programma) te stoppen bedek je de lichtsensor met je hand zodat de waarde van de helderheid zakt onder de 1.
Oefenblad 2: BRIGHTNESS, LIGHT , 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.
Doel:
- READ BRIGHTNESS
- Gebruik van een 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 Disp toe, en voeg tussen aanhalingstekens de tekst “Auto Light” toe.
- Initialiseer de variabele b met het commando b:=2.
- Voeg een While…EndWhile loop toe met de voorwaarde b>1. (De lichtsterkte is meer dan ‘erg weinig’).
Om de loop en het programma te beëindigen, kun je weer de lichtsensor afdekken.
Stap 2
- In de While loop body, voeg daar de commando’s
- Send “READ BRIGHTNESS”
- Get b (via het HUB menu, zie voorbeeld).
- Voeg Disp b toe om de meting te zien.
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 <conditie> Then
<doe dit als het waar is>
Else
<doe dit als het niet waar is>
EndIf
Je kunt lege regels toevoegen door op [enter] te drukken.
Stap 4
Nu het schrijven van de voorwaarde (conditie) …
De helderheid (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 Request commando te gebruiken om deze ‘trigger’ waarde in te voeren. Dit Request commando moet wel voor dat de While loop start.
Je krijgt het ‘<’ (kleiner dan symbool) via ctrl =
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.
- Voer het programma uit met ctrl-R (zorg dat er een innovator is aangesloten).
- Controleer het programma door op de sensor meer en minder licht te laten vallen. Gaat de rode LED branden?
Het kan helpen om een Disp b commando toe te voegen na het Get b 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.Om de loop en het programma te beëindigen, bedek je de lichtsensor totaal zodat de waarde onder de 1 komt.
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 KLEREN LED. 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 Disp toe met tussen aanhalingstekens de tekst “Van lichtsterkte naar kleur”
- Initialiseer de variabele b:=2.
- Voeg een While…EndWhile loop toe om de lichtsterkte te bepalen met het commando “READ BRIGHTNESS” en haal de waarde van de lichtsterkte op met het commando 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 c:=2.55*b.
- Controleer deze formule met de twee bekende paren waarden (0, 0) en (100,255).
- Voeg het commando Send “SET COLOR in voor de EndWhile van de loop. Dit commando zal de helderheid van de KLEURENLED bepalen.
- 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 met ctrl + R.
- 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 Disp 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 speaker 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.
Stap 2
Het begin:
- Start een nieuw programma en noem het APPLIC3
- Voeg een Disp Commando toe met tussen aanhalingstekens “Hand music”. Zie 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 3
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) | geeft het grootste gehele getal kleiner dan x |
round(x,0) | 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.
Doel:
- De TI-Nspire CX Programma-editor gebruiken
- Toegang krijgen tot de submenu’s van de Rover (RV)
- 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
- De opdrachten voor de Rover vind je door te drukken op menu > Hub > Rover (RV).
- 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.
- Bij de meeste opdrachten voor de Rover blijft de cursor binnen de aanhalingstekens staan. Dit geeft aan dat er meer opties ingevoerd kunnen worden in de opdracht. De TI-Nspire CX vereist dat er steeds twee aanhalingstekens zijn.
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:
- Druk op de menu-toets, en selecteer het menu HUB.
- Selecteer vervolgens het submenu Rover (RV).
- Selecteer de opdracht Send “CONNECT RV” onderaan in het submenu.
Stap 3
De volgende opdracht is de opdracht Text die is te vinden in het menu > I/O menu. Deze opdracht pauzeert het programma en wacht totdat de gebruiker op de enter-toets drukt.
- Druk op de toets menu, en selecteer het menu I/O.
- Selecteer Text.
Stap 4
- Voeg een passend bericht toe na de opdracht Text:
Text “Druk op enter om te starten.” (Press enter to start)
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 5
Rijden met de Rover
- Druk op enter aan het eind van de Text-opdracht om de volgende opdracht toe te voegen, die ervoor zorgt dat de Rover vooruit gaat bewegen.
- Druk op menu > Hub > Rover (RV) en selecteer dan het menu Drive RV, zoals je hier rechts kunt zien.
Stap 6
- Kies FORWARD uit het menu Drive RV
Stap 7
erk op dat bij de opdracht FORWARD die in het programma wordt geplakt, de invoegcursor binnen de aanhalingstekens staat, voorafgegaan door een spatie. Dit is om een optionele parameter toe te kunnen voegen aan de opdracht.
- We voegen hier het getal 1 toe:
Send “RV FORWARD 1”
Stap 8
- In de Program-editor, druk je op ctrl+R om het programma uit te voeren. Deze opdracht (in het submenu ‘Check Syntax & Store) voert de bewerking ‘Check Syntax & Store’ uit en schakelt om naar een Rekenmachine-toepassing en plakt de programmanaam op de invoerregel. Lever de voor het programma benodigde argumenten aan en druk op enter om het uit te voeren. Zorg ervoor dat er ongeveer 30 cm vrije ruimte voor de Rover is.
De opdracht Text toont een bericht, en wanneer opnieuw op enter wordt gedrukt, zou de Rover vooruit moeten bewegen. Maar hoe ver? Bestudeer de beweging zorgvuldig en stel vast wat FORWARD 1 betekent.
De Rekenmachine toepassing 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 9
Achteruitrijden
- Bewerk het programma en voeg de opdracht Send “RV BACKWARD 1” toe onder de opdracht FORWARD door te drukken op menu > Hub > Rover > Drive RV > BACKWARD.
- Voeg het getal 1 toe aan de tekenreeks.
- Voer het programma opnieuw uit (ctrl+R).
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 10
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:
Send “RV LEFT ”
Send “RV RIGHT ”
Wat doen deze instructies?
Stap 11
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?
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 allemaal een spatie-teken na de opdracht binnen de aanhalingstekens. Dit is zo omdat er andere opties zijn die je kunt toevoegen aan de opdrachten. Deze les gaat over die opties.
Doel:
- 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: menu > Hub > Rover (RV) > RV Settings waarvan je hier rechts een gedeelte ziet. 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
- Het programma dat je hier rechts ziet, bevat een opdracht die de Rover FORWARD laat bewegen met een bepaalde SPEED en TIME:
Send “RV FORWARD SPEED 2.3 TIME 2” - Maak dit programma af door de correcte TIME op te geven, zo dat 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 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 dat hij deed?
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 inrichten:
- Begin het programma met de opdracht CONNECT RV.
- Voeg een For-lus toe (menu > Control > For…EndFor) om de Rover volgens een willekeurig patroon te laten bewegen. Je kunt altijd regels toevoegen aan de kern van de lus als je ze nodig hebt
Stap 6
- Voeg, in de kern van de lus, de opdracht toe om FORWARD te bewegen.
Send “RV FORWARD 1” - Voeg om de Rover te laten draaien naar een willekeurige richting, eerst de opdracht: h:=randInt(0,360) toe
- Voeg de opdracht TO ANGLE toe om te draaien in de richting h.
Send “RV TO ANGLE eval(h)” - Voer het programma nu 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 kleurenLED op TI-Innovator Hub verborgen is binnenin de Rover hebben we een andere kleurenLED bovenop de Rover gekregen om aan te sturen. De naam van de kleurenLED 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 > 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.
- oe 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 > Hub menu. - Voer het programma uit om het te testen.
Stap 10
Merk op dat de LED nog steeds aan staat. Wij moeten de LED uitzetten nadat de Rover klaar is met bewegen
- Hoe langt doet de Rover over een draai? Ongeveer 1 seconde? Voeg een opdracht Wait 1 toe.
- Schakel 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), en neem de waarde van h daarin op, maar wees zorgvuldig met het toegestane bereik van waarden.
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
Schrijf 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):
Request “LENGTH OF SIDE?”,L
Request “NUMBER OF SIDES?”,N
For I,1,N
Send “RV FORWARD eval(L)”
Send “RV RIGHT <iets>”
End
- 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.
Doel:
- 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
- Start met de opdracht Send “CONNECT RV” uit het menu menu > 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 dist om de gemeten afstand (distance) vast te leggen.
- Initialiseer dist met de waarde 1 (dist:=1).
- Selecteer While…EndWhile uit het menu menu > Control. Programmeer de While-lus om door te gaan zolang dist groter is dan 0,1.
Stap 4
De kern va de lus
- De opdracht READ RV.RANGER is te vinden in
menu > Hub > Rover (RV) > Read RV Sensors. - Selecteer Send “READ RV.RANGER”.
Stap 5
- Voeg de opdrachten
Get dist
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 RV…” 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
- Selecteer DispAt uit het menu menu > I/O. Deze opdracht wordt gebruikt om de waarde van dist weer te geven op een vaste positie op het scherm van de rekenmachine-toepassing.
- De opdracht DispAt vereist (tenminste) twee argumenten: een regelnummer tussen 1 en 8 en een variabele of waarde om weer te geven. Om iets dichter bij het midden van het scherm weer te geven, voeg je opvullende spaties toe achter de variabele of waarde. Bijvoorbeeld: DispAt 1, dist, “ “
Stap 7
Het programma uitvoeren
- Sla het programma op en voer het uit door te drukken op ctrl+R. Terwijl het programma wordt uitgevoerd, geeft het scherm van de rekenmachine-toepassing een getal weer. Beweeg je hand voor de Rover (of beweeg 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.
Doel:
- 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 180
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 UNITS om 10 meter vooruit te bewegen (100 * 0,1m per unit) toe.
Stap 3
Net zoals in de vorige les gebruiken we ook hier de variabele dist om de afstand van de afstandmeter tot een obstakel te representeren.
- Initialiseer dist met de waarde 1 en voeg een lus While dist > 0.25 in.
Merk op dat er in de programmacode twee keer een End staat: een EndFor en een EndWhile. Dit heet ‘geneste lussen’.
Stap 4
- We voegen vervolgens de programmacode in in de kern van de While-lus.
- Voeg de opdracht Send “READ RV.RANGER” toe.
- Gebruik de opdracht Get om de waarde op te slaan in de variabele dist.
Stap 5
Dit maakt de While-lus af. De Rover beweegt 10 meter FORWARD en de While-lus houdt de afstand bij. Voeg desgewenst een DispAt-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 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.)
- 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 beweegt en vier keer draait.
Stap 4
- We gaan een While-lus gebruiken 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 floor_color op de rekenmachine.
Stap 5
- Vervolgens initialiseren we nog een andere variabele, color, om de While-lus te laten beginnen. Color zal de kleur die de Rover tijdens het rijden ziet vasthouden. Om te beginnen stellen we color in op dezelfde waarde als floor color. Daarna laten we de Rover FORWARD bewegen.
Stap 6
- We programmeren nu de While-lus om color (kleur) te vergelijken met floor_color (vloerkleur), omdat we binnen de While, gaan kijken naar een verandering in de waarde van color.
- Vergeet niet om een opdracht EndWhile toe te voegen voor de While-lus.
Stap 7
- Binnen de While-lus, houden we de we kleurensensor in de gaten zolang de Rover beweegt. We slaan de kleurwaarde op in onze variabele color. De lus stopt wanneer color (de ‘actuele’ kleur) verschilt van floor_color (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 opdrachten EndWhile en EndFor, zodat het programma de Rover vier keer naar rechts laat draaien wanneer er een verandering in de kleur van het oppervlak is geconstateerd.
Merk op: “RV STOP” annuleert alle opdrachten om te rijden (drive).
Stap 9
- 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 (floor_color) opmerkt.
- 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
- Nodig is een voorbeeld pad op papier (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.
Stap 2
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 3
Hier zie je een programma, colortest(), (in het Engels) dat je kunt gebruiken om de kleurensensor van de Rover te testen. Bekijk welke waarden je moet gebruiken in je programma:
Define colortest()=
Prgm
Send "CONNECT RV"
While getKey(0)=" "
DispAt 1,"Press any key to end."
Send "READ RV.COLORINPUT.RED"
Get r
DispAt 2,"Color value: ", r
EndWhile
EndPrgm
Stap 4
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.
- Oefenblad 1
- Oefenblad 2
- Oefenblad 3
- Toepassing