Meet je snelste
rondetijden met Mindstorms NXT!
Hoe snel leg jij je rondjes af op het racecircuit in je kamer? Natuurlijk zijn daar timers voor te koop maar waarom zou je die kopen als je Lego Mindstorms in huis hebt?
Met deze rondetijdmeter wordt het racen met je racebaan nog spannender! Lukt het om het baanrecord te breken? Kan jij jouw tegenstander verslaan zonder uit de bocht te vliegen? Deze timer houdt de recordtijden van beide spelers vast en laat deze op de display zien. En als je er in slaagt de beste tijd neer te zetten hoor je luid trompettergeschal!
De NXT laat de rondetijden op 1/100 seconde nauwkeurig op het display zien. Racen maar!
Overigens is dit mijn eerste projectje geprogrammeerd in NXC (Not eXactly C). Ik was de bugs in de grafische programmeeromgeving voor NXT-G, op basis van LabView, helemaal beu eerlijk gezegd. NXT-G werkt absoluut prima maar al die ellende tijdens het editen… hoe vaak mijn PC minuten lang heeft staan stampen omdat ik een klein blokje wilde tussenvoegen bijvoorbeeld… waardeloos. En dan de talloze foutmeldingen die je krijgt terwijl LabView dataverbindingen “kwijt raakt”. Ik was het helemaal zat en ben mij dus in NXC gaan verdiepen. In combinatie met de Bricx Command Center heb je werkelijk een prima omgeving tot je beschikking… NXC werkt op basis van de standaard NXT Firmware (geen multi-dimensionale matrices dan…) en het programma draait bovendien nog wat sneller op je NXT-Module dan met NXT-G! NXC produceert zeker niet de snelste Run-Time Executables maar je kan wel NXT-G en NXC door elkaar op dezelfde NXT gebruiken en dat is erg prettig als je meerdere projectjes tegelijk hebt lopen. BricxCC bestaat ook voor o.a. de Mindstorms RCX.
Kijk zelf in dit
filmpje hoe de Lap Timer werkt, of
bekijk een grote foto van de Timer.
Voor bouwers die geen NXC ervaring hebben is er onderaan deze pagina een uitleg gegeven hoe je met je PC toch deze Lap Timer kan gebruiken zonder in NXC te programmeren.
|
Twee
lichtsensoren. De
vorm die je de Lap Timer van buiten geeft maakt niet zoveel uit. Ik heb snel
een soort loopbrugje in elkaar gezet. Maar eigenlijk zou dat veel mooier
kunnen natuurlijk. Puur uit ongeduld is dit eenvoudige ding ontstaan. Aan weerszijden
van de loopbrug zit een NXT-Licht-Sensor ingebouwd. Op de overzichtsfoto zag je al dat midden op de
baan een schot zit. De rode led van de lichtsensor schijnt daar tegen aan.
Het principe is gebaseerd op reflecterend licht. De loopbrug is met opzet wat
breder gebouwd en zo laag mogelijk. Je begrijpt dat invallend zonlicht
bijvoorbeeld, de meting aardig kan verstoren. Zorg dus dat er zo min mogelijk
licht van buiten de loopbrug naar binnen kan schijnen. |
|
Detectie
van de auto’s. Het
rode licht reflecteert op het tussenschot. Dit geeft een permanente
lichtdetectiewaarde op de lichtsensor aan elke zijde. Op het moment dat de auto
voorbij flitst detecteert de NXT Licht Sensor een verminderde reflectie van
het rode licht. In dit geval passeert er een groene auto. Groene oppervlakken
reflecteren geen rood licht dus zal de meetwaarde op de sensor flink dalen. Heb
je een rode auto dan zal de lichtsensor weinig tot geen verschil merken als
deze voorbij rijdt! Plak een zwart plakkertje op de zijkant van de wagen, dan
is je probleem opgelost. Hetzelfde geldt natuurlijk voor autokleuren als wit
en geel. Over het algemeen daalt de detectie waarde zo’n 20% voor autokleuren
waar geen rood in zit (additief beschouwd). De software staat ingesteld op
een gevoeligheid van 10%. Een grijze auto bijvoorbeeld, “ziet” hij dan ook
nog prima. |
|
Verscholen
Lichtsensoren Het is belangrijk dat er zo
weinig mogelijk omgevingslicht op de lichtsensoren valt. De lichtsensoren
zitten daarom anderhalve centimeter naar achteren ingebouwd en schijnen door
een smalle spleet van 1 centimeter breedte zodat invallend licht vanaf de
zijkanten niet direct op de sensor valt… De hoeveelheid licht dat door het
ontvangst-deel wordt opgevangen is daardoor ook beperkt. De lichtsterkten die
je op deze manier meet zullen doorgaans niet boven de 300 uitkomen. (in RAW
mode 0..1023) De grenswaarde voor “Auto
gezien” ligt meestal rond de 260 (opnieuw gemeten in RAW mode) in daglicht.
In mijn model heb ik grijze afdekplaten als “dak” gebruikt. M’n zwarte waren
allen in gebruik. Als je de keuze hebt zou ik zwart pakken. Zo ben je nog
minder afhankelijk van reflecterend licht. Tip! Zorg er voor dat het middenschot top op het wegdek van de racebaan aansluit.
Eerder had ik een klein spleetje onder het schot door. Dit beďnvloedde de
lichtmeting van de tegenoverliggende sensor te veel waardoor er bij het
passeren van één auto toch twee auto’s gezien werden. Er mag dus geen licht
onderlangs de baan naar de overzijde piepen. De opening aan de bovenzijde van
het tussenschot is voor het passeren van de sensorkabel die midden onder het
dak doorloopt naar de andere zijde. |
|
Start
de Lap Timer! De NXC code staat inmiddels tussen de andere NXT-G
programma’s in. Selecteren gebeurt gewoon op de manier zoals je gewend bent.
Start de software door op de oranje knop van de NXT te drukken. |
|
Nu
is het even wachten…. Zorg
dat er geen auto’s onder het poortje staan als je de software start. Als
eerste wordt de lichtsterkte gemeten en worden de sensors geijkt. De bovenste
regel laat de grenswaarden zien voor sensor-poort 1 en sensor-poort 2. Als de
lichtinval onder deze waarden komt, dan wordt dat beschouwd als “Auto
gezien”. In dit geval is er meer omgevingslicht als gevolg van invallend
daglicht. Als er minder omgevingslicht is, bij kunstlicht bijvoorbeeld,
worden deze grenswaarden vanzelf aangepast (meestal rond de 210). De
Lap Timer wacht geduldig tot één van de auto’s voorbij raast… Eerder
had ik het al over invallend licht van buiten. Stel dat je in een fel
verlichte kamer zit, omdat bijvoorbeeld de zon schijnt, en de brug staat
midden in dat licht. Dan zal de eikwaarde voor beide sensoren hoger liggen
dan wanneer de brug in de schaduw staat. Niets aan de hand overigens… alles
werkt prima. Schijnt de zon eerst en komt er een vette wolk langs je
kamerraam, dan zal je waarschijnlijk de Lap Timer opnieuw moeten eiken door het
programma te onderbreken en opnieuw op start te drukken. Kortom, zorg er voor
dat het omgevingslicht niet te veel varieert (minder dan 10%, gemeten onder
de loopbrug) anders vertroebelt je meting en moet je opnieuw starten. Je kan
ook de gevoeligheid wat lager zetten natuurlijk… (in de programma code) |
|
De
eerste auto is gedetecteerd... Op
het moment dat de eerste auto voor de eerste maal onder het poortje door
rijdt begint één van de twee timers te lopen. Je hoort “START” en op het Display
verschijnt de timer. Er is nog geen meting afgerond dus er valt verder nog
niets te zien. Als de tweede auto voor de eerste keer langs de andere sensor
rijdt wijzigt het Display niet meer. Wel hoor je opnieuw de kreet “START” uit
de NXT speaker, ten teken dat ook een timer voor de tweede auto is gestart. De
Lap Timer maakt gebruik van dezelfde grote cijfers als het
Fruitmachine-project van vorig jaar. Onderaan deze pagina kan je gewoon mijn RIC-files voor deze
cijfers downloaden en opslaan in de map “..\engine\pictures” van je NXT
Programma directory op je PC.
De
cijfers heb ik gemaakt met het programma |
|
Een
auto komt voor de tweede keer langs… De
eerste rondetijd wordt nu geregistreerd. In dit geval is speler twee (Sensor
poort 2) de eerste die weer langs komt. Het is de eerste meting, dus een
record is meteen gezet. “Tatatataaaa” schalt het uit de speaker. De tijd
wordt tevens als “persoonlijk beste rondetijd” achter het spelersnummer van
de auto zichtbaar gemaakt. |
|
De
andere auto passeert voor de tweede keer... Player
1 komt nu ook voorbij en zet een nog scherpere tijd neer. Opnieuw
“Tatatataaaaa”… en natuurlijk staat zijn rondetijd ook in het klein achter
zijn eigen spelersnummer. Het
grote display laat dus altijd de tijd zien van de auto die zojuist voorbij
suisde. De kleine cijfers laten beide persoonlijke records zien. |
|
Wel
een persoonlijk record, geen baanrecord…! In dit geval zie je dat speler 1 een tijd neerzet
die een dikke seconde trager is dan speler 2. Het persoonlijk record van
speler 1 wordt wel aangepast naar 11,68 seconden maar je hoort alleen een
bescheiden geluidsignaal ten teken dat jij jouw eigen tijd verbeterd hebt. Heb je ook je eigen tijd niet verbeterd dan hoor
je “piep” en is je rondetijd af te lezen met de grote cijfers totdat de
andere speler zijn volgende tijd “neerzet”. |
|
|
Bouwinstructies : MLCad-file of de Acrobat
PDF file
Software
NXT-1 : NXC Source
code voor Lap Timer
My_NumOut : NXC Source code voor grote cijfers op display
RIC-Files : Grote cijfers voor NXT Display
Executable : Programmafile voor op je NXT Module
Heb je geen Bricx Command Center en nooit in NXC geprogrammeerd, dan kan je ook het programmabestand zoals dat in de NXT nodig is direct kopiëren naar je NXT met behulp van het PC programma dat je bij de NXT gekregen hebt.
Installeren van Lap
Timer: