Eine Woche vor dem Abgabetermin haben wir uns getroffen, um einen Film
zu drehen. In diesem Film präsentieren wir eine Zusammenfassung unserer ganzen
Arbeit. Dazu haben wir noch die letzten Änderungen und Abmachungen für unsere
schriftliche Arbeit vollbracht.
Heute haben wir verschiedene kleine Probleme gelöst. Erstens haben wir einige Bilder löschen müssen, und sie durch Texte ersetzten, da sie zu viel Platzt auf dem NXT brauchten. Wir waren erstaunt, wir gross ein Bild war. Es gibt auf einem NXT 157 KB Platzt, und ein Bild braucht ungefähr 12 KB. Wir haben auch eine kleine Zusammenfassung des gewünschten Auftrags programmiert. Man kann damit sehen, welche Figur und Farbe man gewählt hat. Eine geschätzte Zeit ist auch zu sehen. Wenn man einen Fehler beim Auftrag gemacht hat, kann man immer noch abbrechen und die Wahl von Anfang an beginnen.
Dann haben wir an der Eiffelturm-Herausforderung gearbeitet (siehe Samstag, den 24. November).
Wenn der Drucker einen Lego-Stein holen will und der Druckkopf tiefer als das Lager liegt, muss er zuerst nach oben gehen und dann nach hinten. Falls der Druckkopf aber höher ist als das Lager, so muss er zuerst nach hinten und erst dann hinunter gehen, um die Figur nicht zu zerdrücken.
Wenn man den Lego-Stein genommen hat und ihn an einer Stelle setzen will, muss der Druckkopf mindestens 196° höher sein als die Spitze der Figur. Die 196° bestehen aus 60° um die Noppen der Legos zu überfliegen und 136°, da wir nicht wissen, ob wir einen schon gesetzten Stein überfliegen müssen.
Außerdem haben wir ein Problem mit der Rundung für die Übersicht des Baus gehabt. Wenn man mit der Methode „Math.round“ 4.5 rundet, kommt die Zahl 5 heraus. Wenn man aber 90/20 rundet, kommt 4 heraus!
Das ist das letztes Problem, bevor wir unser Projekt abschließen.
Heute haben wir probiert eine Übersicht des Ablaufes des Baues zu
programmieren. Zuerst haben wir eine Menge Variablen durch die verschiedenen
Klassen (oder Threads) vererben sollen. Jede Variablen enthalte eine der
folgenden Informationen: wie lang braucht man um die Figur zu drucken, wie
viele Lego-Steine brauchen wir um die Figur zu bauen und wie viele Lego-Steinen
schon platziert sind. Diese Variablen waren also „Integer“-Variablen (Datentyp
nur für ganze Zahlen). Mit diesen Variablen können wir die Arbeit, die geleistet
wurde, in Prozent berechnen:
Int Prozent = PlazierteStein * 100 / TotalStein.
Dann wollten wir noch einen Prozentbalken machen, der diesen Ablauf
zeigte. Was also neu zu beachten ist, ist die Grösse dieses Balkens. Die
maximale Grösse (100%) ist gleich wie seine Grösse. Die Berechnung lautet wie
folgendes:
Int Prozentbalken = Prozent /100 * Balkens .
Es hat aber nicht funktioniert! Wir haben lang gesucht warum:
Eine Integer unterstützt nur ganze Zahlen. Am Anfang der Berechnung
„Fortschrittsbalken“ werden aber die Prozente durch 100 geteilt! Es ist also
keine Integer mehr. Um dieses Problem zu lösen muss man die Berechnung einfach
so umstellen.
Int Prozentbalken = Prozent * Grösse des Balkens / 100.
Heute haben wir noch versucht, die Verbindung zwischen den zwei NXTs
im Hintergrund laufen zu lassen, aber haben es leider nicht geschafft.
Ausserdem haben wir, das am 3. Januar gefundene Programm um ein Bild in einen
NXT-kompatiblen Quellcode umzuwandeln, gebraucht. Wir haben das Menü schön mit
Bildern verziert und somit anschaulicher gemacht. Wir haben auch das Programm
so erweitert, dass jedes Mal wenn einen Lego-Stein genommen oder gelegt wird,
eine kleine Bewegung gemacht wird. Diese kleine Bewegung wird gemacht, als der
Greifer schon leicht auf dem unterstehenden Lego-Stein liegt und sie wird in
X-Achse und in Y-Achse gemacht. Wennsich eine kleine Ungenauigkeit im Prozess ereignet hat, wird der Greifer
(und somit der Lego-Stein) trotzdem richtig platziert. Um es besser zu
verstehen, können Sie gerne das unterstehende Video genau anschauen.
Heute haben wir hauptsächlich an dem Menü gearbeitet. Wir haben auch
probiert, die Verbindung zwischen den zwei NXTs im Hintergrund laufen zu
lassen. So könnte man die Figur sowie die Farbe der Figur wählen, während sich die
Verbindung herstellt. Unter anderem haben wir ein Programm gefunden, dass ein
Bild in einen NXT-kompatiblen Quellcode umwandelt, so dass man das Bild auf dem
LCD eines NXTs (100X64 Pixels) anzeigen kann. Wir haben auch gemerkt, dass der
rote Rahmen beim Bewegen den Mechanismus der Rollteppiche berührt und so leicht
verschoben wird. Darum haben wir alle Rollteppiche um eine Lego-Stelle nach
links verschoben. Ausserdem haben wir auch beschlossen keine Skizze von den
verschiedenen Verfahren des 3D-Druckers direkt vom Internet zu nehmen, sondern
sie selber mit Hilfe von Blender zu zeichnen.