Angefangen haben wir in dem wir keine Ahnung hatten. Ja richtig gelesen, wir hatten überhaupt keine Ahnung. Das einzige was wir wussten ist, dass uns viel zu teuere LEGO-Roboter und ein LEGO Education Set (von denen wir viel zu viele genutzt haben) zur Verfügung stehen würden. Nun ja und dann? Dann haben wir uns gewagt Schritt für Schritt den Roboter besser kennen zu lernen.
Der Roboter selbst hat genau vier Motorenanschlüsse und vier weitere Sensorenanschlüsse. Die Motoren konnten nicht mehr als eine rotierenden Bewegung, aber ob Sie es mir glauben oder nicht damit kann man viel erreichen (dazu später noch mehr)! Die Sensoren hingegen waren deutlich interessanter. Ein Sensor kann zum Beispiel ein Drucksensor sein, drückt man diesen kriegt der kleine, süße Roboter einen Wahrheitswert zurück der true
ist. Bevor Sie jetzt direkt wieder ihre Netflixserie weiter gucken weil Ihnen der Blog hier zu langweilig ist, bleiben Sie noch dran denn ich erkläre im Folgenden eine kleine Methode in Java, mit der man feststellt ob ein Knopf gedrückt wurde oder nicht.
Methode:
KEINE ANGST!
Was hier passiert ist eigentlich ganz einfach. Die erste Zeile können Sie eigentlich ignorieren, da diese nur genutzt wird um einen Sensor zuzuweisen (Mit SensorPort.S1
wird festgehalten, dass sich der Sensor an Stelle 1 befindet). In der zweiten Zeile wird eine öffentlich-zugängliche (also von jedem Ort in einem Javaprogramm aus aufrufbar: public
) Methode erstellt, die einen Wahrheitswert zurück gibt (boolean
), dieser ist entweder true
oder false
. Die dritte Zeile erstellt ein Objekt der Klasse SensorMode
, die uns netterweise von LEGO selbst (bzw. dem Roboterprogramm leJOS [Funfact zur Aussprache: ˈlexos]) zur Verfügung gestellt wurde, die einfach nur den „Druckmodus“ des Drucksensors sensor
setzt. Zeile vier erstellt eine Liste von float
’s was nichts mehr ist als eine Zahl mit acht Nachkommastellen. Die Länge dieser Liste entspricht der Länge des TouchMode
’s. Anschließend verbinden wir unseren sensor
mit sample,
also der Liste der unnötig langen Zahlen. Durch aufrufen von sample[0]
würden wir eine Zahl zurück kriegen. Ist diese Zahl gleich 0 (if (sample[0] == 0))
dann wird false
zurück gegeben (return false)
, falls sample[0]
jedoch größer ist als 0 (da der Drucksensor zum Beispiel gedrückt wurde) gibt er true
aus.
Puh. Sie fragen sich jetzt wahrscheinlich warum man soviel Schwachsinn schreiben muss, nur um abzufragen ob ein Knopf gedrückt wurde oder nicht. Und meine Antwort lautet, dass ich überhaupt gar keine Ahnung habe warum. Mit den alten Robotern (LEGO NXT) war alles noch viel besser. Früher war halt einfach alles besser nicht? Naja ich schweife ab, also kommen wir zurück zu unserem Projekt.
Als Kind und später als Jugendlicher war ich schon immer begeistert von Zauberwürfeln. Ja Sie wissen schon, diese kleinen Würfel die man nur fünf mal verdreht, dreieinhalb Stunden versucht zu lösen und dann aufgibt und die nie wieder anguckt ohne Aggressionen zu kriegen. Genau die meine! Und Sie erinnern sich auch bestimmt an meine „och so netten Mitschüler“, die ich in der Einleitung erwähnt habe. Naja wie soll ich sagen: Ich hab mich mit Andrey und Meike zusammen getan und wir haben angefangen einen Algorithmus zu schreiben, welches das Teil lösen soll.
Sie denken wir schaffen das nicht, werden verzweifeln und vor lauter Wut den Würfel kaputt machen? Dann liegen Sie absolut richtig.
Spoiler: Wir haben es geschafft; naja sonst würde ich ja nicht diesen Blog schreiben.
Und falls Sie wissen möchten wie unsere Reise zum Untergang ausgesehen hat, klicken Sie einfach weiter zur nächsten Seite 😉