miniatura_evolution_2

Du solltest Bevor wir mit bitbloq beginnen abgeschlossen haben, bevor du mit dem Linienfolger beginnst.

Eine der einfachsten Anwendungen, die du für den Printbot Evolution programmieren kannst, ist ein einfacher Linienfolger, der einer Linie auf hellerem oder dunklerem Hintergrund nachfahren kann – ob das nur ein kleiner Kreis ist oder der Printbot durch mehrere Räume fährt, entscheidest du! Die Sensoren, die wir verwenden, sind vorne am Printbot montiert und zeigen zum Boden. Jeder der beiden Sensoren hat eine Infrarot-LED, die unsichtbares Licht aussendet und einen Lichtsensor, der erkennt, ob dieses Licht vom Boden reflektiert wird. Wenn der Boden dunkel ist und das Licht nicht stark genug reflektiert wird, leuchtet die LED auf der Oberseite des Sensors und der ZUM erkennt Ja, hier ist ein dunkler Punkt!

Am besten funktioniert der Sensor mit einer schwarzen Linie auf weißen Hintergrund – also eine schwarze Linie, die ihr mit Stiften auf ein großes Blatt Papier zeichnet oder mit Isolierband abklebt. Ihr könnt auch mehrere Blätter Papier mit Klebeband zu einer großen Rennstrecke verbinden oder probieren, ob euer Printbot den Streifen schwarzes Isolierband auch direkt auf der Tisch- oder Bodenoberfläche erkennt – am Besten funktioniert hier ein glatter, heller Holzboden! Die Linie sollte mindestens einen, besser zwei Zentimeter breit sein, damit sie der Sensor gut erkennen kann.

Linie Weiß SchwarzUm einen einfachen Linienfolger zu bauen, benötigen wir nur einen der beiden Sensoren. Das macht die Erkennung einfacher und den Roboter etwas langsamer, aber auch zuverlässiger. Da wir ansonsten keine Sensoren verwenden, hat unser Roboter nur zwei mögliche Zustände, die er unterscheiden kann: “Ich bin auf einem dunklen Fleck” oder “Ich bin auf einem dunklen Fleck”. Das reicht aber, um einer Kante der Linie nachzufahren, wenn wir einen kleinen Trick anwenden: Wir lassen den Printbot niemals geradeausfahren, sondern immer in einer Kurve! Sobald der Printbot auf eine dunkle Linie fährt, lassen wir ihn sofort wieder in die andere Richtung herunterfahren, sobald er wieder auf einem hellen Bereich ist, soll er sofort wieder umkehren und zurück auf die dunkle Fläche fahren. Damit tastet sich der Printbot Stück um Stück an der Kante der Linie entlang, ohne zu wissen, ob es sich dabei um eine helle oder dunkle, breite oder dünne Linie oder Fläche handelt.

Linienfolger Prinzip

Als Antrieb für den Printbot verwenden wir die beiden Servomotoren, die je ein Rad des Printbots antreiben. Wir können jedem der beiden Servos befehlen, sich im oder gegen den Uhrzeigersinn zu drehen oder stehen zu bleiben. Die Drehrichtung kannst du bestimmen, wenn du seitlich auf die Räder siehst. Überlege die, wie herum jeder Servo drehen muss, um den Printbot vorwärts oder rückwärts zu bewegen!

Eine enge Kurve kann dein Printbot fahren, indem du ein Rad anhalten lässt und das andere weiter nach vorne drehen lässt. Je nachdem, ob der Printbot im Uhrzeigersinn oder gegen den Uhrzeigersinn außen an einer dunklen Kante entlangfahren soll, können wir jetzt die beiden Zustände mit den entsprechenden Aktionen verknüpfen.

Davor müssen wir aber noch den Sensor auf unseren Untergrund einstellen, und das geht am einfachsten jetzt, bevor auf dem ZUM ein vollständiges Programm läuft. Ziehe dazu im “Hardware” Bereich von Bitbloq einen BQ ZUM in den Arbeitsbereich und lade das Programm ohne irgendeine Komponente auf den ZUM hoch, so kannst du in Ruhe den Sensor kalibrieren, ohne dass dein Printbot umherfährt!

Hochladen

Stelle deinen Printbot neben die Linie, so dass die Sensoren nur die Grundfläche neben der Linie sehen. Stelle nun das kleine Potentiometer auf der Sensorplatine so ein, dass die LEDs auf der Platine gerade so ausgehen. Du musst hier sehr feinfühlig drehen, die Einstellung ist sehr empfindlich! Prüfe anschließend, ob die LEDs leuchten, wenn du den entsprechenden Sensor über die Linie hältst. Falls die LED nicht angeht, musst du die das Potentiometer etwas zurückdrehen.

Liniensensor einstellen

Weil wir jetzt wissen, dass der Sensor zuverlässig arbeitet, können wir mit der eigentlichen Programmierung in Bitbloq beginnen. Als Erstes verdrahten wir einen der beiden Sensoren, welchen der Beiden du verwendest, ist für diesen Linienfolger egal. Dazu ziehst du aus dem Bereich Komponenten einen einzelnen Infrarotsensor und verbindest ihn mit dem Anschluss, an dem der Sensor am ZUM angeschlossen ist. Standardmäßig ist das Pin 2 für den linken und Pin 3 für den rechten Sensor. Das gleiche machst du mit den beiden Servomotoren, die du als Servo mit kontinuierlicher Rotation ebenfalls bei den Komponenten findest. Die Servomotoren benennst du am besten gleich jetzt als Servo links und Servo rechts. Normalerweise ist der linke Servo an Pin 8 und der rechte Servo an Pin 9 angeschlossen, aber du kannst auch jeden anderen Anschluss verwenden.

Bitbloq Hardware

Als nächstes können wir die Software erstellen – weil unser Programm kontinuierlich laufen soll, verwenden wir den Bereich Hauptschleife (Loop). Sobald das Programm abgearbeitet ist, fängt es wieder von vorne an, das ist ideal, um immer wieder zu prüfen, ob sich der Printbot auf oder neben der Linie befindet. Um die beiden Zustände hell und dunkel oder, bei einer dunklen Linie, neben der Linie und auf der Linie zu trennen, verwenden wir den Wenn Block aus dem Bereich Steuerung, den du in den Bereich Hauptschleife (Loop) ziehst. Im Wenn  Block können wir zuerst eine Bedingung festlegen, und anschließend Anweisungen einfügen, die nur dann ausgeführt werden, wenn die Bedingung erfüllt wird. Wenn die Bedingung nicht erfüllt wird, wird der Code innerhalb des Wenn Blocks übersprungen und danach weitergearbeitet.

Als Bedingung wollen wir prüfen, ob der Sensor auf der dunklen Linie ist, also den Zustand Wahr meldet. Dazu müssen wir zuerst den Zustand des Sensors auslesen, den wir anschließend mit dem Wert Wahr vergleichen können. Ziehe also aus dem Bereich Komponenten die Funktion Lesen infrarotsensor_0 in das erste Feld des Wenn Blocks und aus dem Bereich Logik den Wert Wahr in das zweite Feld. Achte darauf, dass die Werte auf dem leuchtenden gelben Punkt einrasten. Der Inhalt dieses Wenn Blocks wird nun nur dann ausgeführt, wenn der Sensor einen dunklen Bereich erkennt.

Wenn-Block mit Vergleich

Um den genau gegenteiligen Fall zu programmieren, also wenn der Sensor nicht dunkel und damit hell erkennt, können wir den Im gegenteiligen Fall, ausführen Block benutzen, den wir direkt nach dem Wenn  Block platzieren. Falls jetzt die Bedingung im Wenn Block nicht stimmt, überspringt der Printbot die Anweisungen im Wenn Block und führt stattdessen die Anweisungen im Im gegenteiligen Fall, ausführen Block aus.

Entgegengesetzt

Bei den Anweisungen in den Blöcken brauchen wir nur die Servomotoren so anzusteuern, dass der Printbot immer zur Kante hinfährt. Dazu halten wir einen der beiden Servomotoren an und lassen den anderen vorwärts drehen. Überlege dir, welchen Servomotor du anhalten musst und wie herum der andere drehen muss, um eine Links- oder Rechtskurve zu fahren!

Aus dem Bereich Komponenten kannst du die Blöcke Servo drehen und Servo anhalten in den Wenn Block ziehen. Wenn der Sensor eine dunkle Stelle erkennt, soll der Printbot nach links von der Linie herunterfahren – stelle die Servo drehen und Servo anhalten Blöcke dafür so ein, dass der rechte Servo im Uhrzeigersinn zu Drehen beginnt und der linke Servo angehalten wird. Ziehe jetzt die gleichen Blöcke aus dem Komponenten Bereich in den Im gegenteiligen Fall, ausführen Block und stelle sie so ein, dass der linke Servo gegen den Uhrzeigersinn dreht und der rechte Servo anhält.

Linienfolger fertig

Damit hast du die Programmierung abgeschlossen und kannst das Programm auf den Printbot hochladen!

Probiert selbst, wie ihr dieses Programm anpassen könnt! Wie wäre es zum Beispiel, wenn ihr den Printbot gegen den Uhrzeigersinn fahren lasst? Was passiert, wenn der Printbot an der Innenkante der Linie entlangfährt?