das programm wurde in nxt-g version 1.1 geschrieben/geclickt. um es zum laufen zu bringen muss auf jeden fall noch der block für den rotationsensor aus dem bei lego frei erhältlichen legacy_blocks update importiert werden. mit nxt-g version 1.0 läuft es auch, jedoch muss man hier um den rotationsensor block überhaupt importieren zu können vorher das dynamic block update (ebenfalls auf der lego website kostenfrei erhältlich) ausführen.
und nun zum programm. da es ein einfaches testprogramm ist und nur zur veranschaulichung der funktion des trackball dient, habe ich die aufgabe auch recht einfach gewählt. man stelle sich vor, man sieht durch das lcd in einen raum. an der decke hängt eine lampe und vor einem selbst, schweben zwei schaltflächen zum an und aus schalten der lampe. bewegt man nun den pfeil über eine der schaltflächen so wird die schrift wie in einem browser unterstrichen und kennzeichnet so das steuerelement welches man nun durch einen click auf den button aktivieren kann. ist dies geschehen, erscheint so lange man den button gedrückt hält eine grafische rückmeldung in form eines kreises der sich um den pfeil befindet.
das programm selbst ist in drei tasks unterteilt, die jeweils eine endlosschleife ausführen.
im oberen task werden die sensoren ausgewertet. das heisst der zustand des buttons wird in eine boolsche variable(click) geschrieben und die drehrichtung der rotationsensoren(xr,yr) wird bestimmt und nun je nach dem ob sich die bewegung des balles noch innerhalb der lcd-koordinaten befindet 1 zu x und/oder y addiert und/oder subtrahiert. danach werden die rotationsensoren zurück gesetzt und die schleife beginnt von neuem.
der mittlere task dient der anzeige, auswertung und aktivierung/deaktivierung der buttons im programm und der lampe. als erstes stellt er den raum mit der lampe und den schaltflächen dar. danach überprüft er ob sich der eingabepfeil über einer der schaltflächen befindet. ist das der fall wird bei selbigen die beschriftung unterstrichen und geprüft ob der button des trackball gedrückt ist. hat man auf "on" gedrückt wird die variable light auf wahr gesetzt, bei "off" auf falsch. bei beiden aktionen wird zusätzlich die variable ani die für die bestätigung zuständig ist auf wahr gesetzt. jetzt wird die variable light ausgewertet. ist sie wahr, werden die lichtstrahlen der lampe auf das lcd gezeichnet. ist sie falsch, passiert nichts. um den eingabepfeil immer sehen zu können, wird dieser zum schluss gezeichnet.
im unteren task wird die variable ani abgefragt. ist diese wahr wird als bestätigung der eingabe ein kreis um den pfeil gezeichnet und ani danach wieder auf falsch gesetzt.
einfacher gesagt: licht an. licht aus. licht an. licht a...
download trackball.rbtdownload fastball.rbt