Aktoren

Ausgang

Der "Starte jedes Mal"-Block

Der "Starte jedes Mal"-Block bietet die Möglichkeit ein Programm ablaufen zulassen, wenn eine Bedingung erfüllt ist. Er funktioniert also ähnlich wie eine Fallunterscheidung, wird aber nicht nur einmal durchlaufen, sondern jedes Mal, wenn die Bedingung erfüllt ist, während des gesamten Ablauf des Programms. Der "Starte jedes Mal"-Block:

image-1623612674466.png

ist eine Abkürzung für folgendes Konstrukt:

image-1638372346043.png

Man kann in den "Starte jedes Mal"-Block der Kategorie Ausgänge alle Bedingungen aus ebendieser Kategorie einsetzen.

Hinweis: Der Programmabschnitt innerhalb des "Starte jedes Mal"-Block sollte kurz gehalten werden und keine blockierenden Aufrufe oder Endlosschleifen enthalten, sodass dieser Teil des Programms schnell abgearbeitet werden kann.

LEDs

image-1623745844016.42.50.png

LEDs (Licht emittierende Dioden) sind kleine Leuchtmittel, die in einer Vielzahl von Geräten zum Einsatz kommen.

Setzen

Mit den Blöcken "setze LED [] []" und "setze LED [] Helligkeit ..." kann man die LED an- und ausstellen beziehungsweise ihre Helligkeit auf einen bestimmten Wert (von 0 bis 512) setzen.

Im Beispiel wird die LED eingeschaltet und ihre Helligkeit auf den maximal möglichen Wert eingestellt. Dies ermöglicht es, die LED in ihrem hellsten Zustand zu betreiben.

image.png

Abrufen

Mit dem Block "hole LED [] Helligkeit" lässt sich die Helligkeit einer LED abrufen und als Wert weiterverarbeiten.

Im Beispiel wird die aktuelle Helligkeit der LED abgefragt und in einer Variable Helligkeit gespeichert:

image.png

Abfragen

Mit den Blöcken "ist LED [] []" und "ist LED [] Helligkeit [] ..." kann man die Aktivität beziehungsweise die Helligkeit einer LED als Bedingung nutzen.

Im Beispiel wir die Helligkeit der LED auf 512 gesetzt, sofern sie nicht schon diese Helligkeit hat.

image-1623504193890.46.06.png

Motoren

Das Symbol auf den Motorblöcken steht stellvertretend für alle Motoren, die nicht Encoder- oder Servomotoren sind.

image.png

Setzen

Mit dem Block "setze Motor [] Geschwindigkeit …" kann man die Geschwindigkeit eines Motors auf einen bestimmten Wert (von 0 bis 512) setzen.

image.png

Abrufen

Mit dem Block "hole Motor [] Geschwindigkeit" lässt sich die Geschwindigkeit eines Motors abrufen und als Wert weiterverarbeiten.

image.png

Abfragen

Mit den Blöcken "läuft Motor []" und "ist Motor [] Geschwindigkeit …" kann man die Aktivität beziehungsweise die Geschwindigkeit eines Motors als Bedingung nutzen.

Stoppen

Mit dem Block "stoppe Motor []" ist es möglich einen Motor zu stoppen.

Magnetventil

image.png

Ein Magnetventil ist wie ein elektrisch gesteuerter Wasserhahn. Statt ihn von Hand aufzudrehen oder zuzumachen, benutzt man Strom. Wenn Strom durch das Ventil fließt, aktiviert sich ein Magnet, der das Ventil öffnet oder schließt. So kann man den Fluss von Flüssigkeiten oder Gasen kontrollieren, ohne direkt am Ventil zu sein. Das ist praktisch für Systeme, die automatisch laufen sollen.

Setzen

Mit dem Block "setze Magnetventil [] []" kann man das Magnetventil ein- oder ausschalten.

Dieser Block ermöglicht das Ein- oder Ausschalten des Magnetventils. Durch Auswahl im Dropdown-Menü kann das Magnetventil entweder aktiviert (an) oder deaktiviert (aus) werden.

image.png

Abfragen

Mit dem Block "ist Magnetventil [] []" kann man die Aktivität eines Magnetventils als Bedingung nutzen.

In dem Beispiel wird geprüft, ob das Magnetventil eingeschaltet ist, und wenn ja, wird das Magnetventil ausgeschaltet.

image.png

Kompressor

image-1623746227574.40.52.png

Ein Kompressor ist ein Gerät, das dazu dient, Luft oder ein anderes Gas zu komprimieren und so den Druck zu erhöhen. Kompressoren werden zum Beispiel Aufpumpen von Reifen verwendet.

Setzen

Mit dem Block "setze Kompressor [] []" kann man den Kompressor ein- oder ausschalten.

image.png

Abfragen

Mit dem Block "ist Kompressor [] []" kann man die Aktivität eines Kompressors als Bedingung nutzen.

image.png

Motor

Der "Starte jedes Mal"-Block

Der "Starte jedes Mal"-Block bietet die Möglichkeit ein Programm ablaufen zulassen, wenn eine Bedingung erfüllt ist. Er funktioniert also ähnlich wie eine Fallunterscheidung, wird aber nicht nur einmal durchlaufen, sondern jedes Mal, wenn die Bedingung erfüllt ist, während des gesamten Ablauf des Programms. Der "Starte jedes Mal"-Block:

image-1623672133513.png

ist eine Abkürzung für folgendes Konstrukt:

image-1638372436179.png

Man kann in den "Starte jedes Mal"-Block der Kategorie Motor alle Bedingungen aus eben dieser Kategorie einsetzen.

Hinweis: Der Programmabschnitt innerhalb des "Starte jedes Mal"-Block sollte kurz gehalten werden und keine blockierenden Aufrufe oder Endlosschleifen enthalten, sodass dieser Teil des Programms schnell abgearbeitet werden kann.

Motor

Das Symbol auf den Motorblöcken steht stellvertretend für alle Motoren, die nicht Encoder- oder Servomotoren sind.

image.png

Setzen

Mit dem Block "setze Motor [] Geschwindigkeit [] ..." kann man die Geschwindigkeit eines Motors auf einen bestimmten Wert (von 0 bis 512) setzen. Über das Dropdown-Menü (kleines Dreieck) kann die Drehrichtung gewählt werden.

Abrufen

Mit dem Block "hole Motor [] Geschwindigkeit" lässt sich die Geschwindigkeit eines Motors abrufen und als Wert weiterverarbeiten.

Abfragen

Mit den Blöcken "läuft Motor []" und "ist Motor [] Geschwindigkeit  [] ..." kann man die Aktivität beziehungsweise die Geschwindigkeit eines Motors als Bedingung nutzen.

Stoppen

Mit dem Block "stoppe Motor [] []" ist es möglich einen Motor zu stoppen. Dabei bietet der Block "stoppe Motor [] []" die Optionen, einen Motor direkt oder auslaufend zu stoppen. Die gewünschte Option kann über das Dropdown-Menü (kleines Dreieck) ausgewählt werden.

image-1623613980654.51.51.png

Encodermotor

image-1623746341213.40.14.png

Der Encodermotor hat die gleichen Funktionen wie ein normaler Motor, bietet aber zusätzlich die Möglichkeit, die Umdrehungen zu zählen und mehrere Motoren synchron anzusteuern. Eine Umdrehung wird dabei in ~64 Schritte unterteilt.

Setzen

Mit dem Block

image.png

kann man die Geschwindigkeit eines Motors auf einen bestimmten Wert (von 0 bis 512) setzen. Über das Dropdown-Menü (kleines Dreieck) kann die Drehrichtung gewählt werden. Zusätzlich kann man die Anzahl an Schritten eingeben, die der Motor zurücklegen soll. In diesem Beispiel dreht sich der Motor 100 Schritte, also eine und eine 36/64 Umdrehungen. Wie am Beispiel zu sehen, hat dieser Block ein Pluszeichen, mithilfe dessen sich mehrere Motoren synchron ansteuern lassen. Es ist möglich Motoren am Master oder an einer Extension zu synchronisieren, eine übergreifenden Synchronisierung bspw. zwischen Motoren des Masters und einer Extension ist nicht möglich.

Hinweis: Schnell aufeinanderfolgende Synchronisierungsaufrufe, wie sie z. B. durch eine Schleife möglich sind (siehe Beispiel), können die Synchronität beeinträchtigen oder sogar komplett verhindern.

image-1638196438212.png

Stoppen

Mit dem Block "stoppe Motor []" stoppt man einen Motor. Möchte man mehrere Motoren gleichzeitig stoppen, kann man über das Plus links am Block bis zu drei weitere Motoren hinzufügen.

image-1623517630278.05.46.png

Abfragen

Der Block "hat Motor [] Position erreicht" wird genutzt, um das Erreichen der Position als Bedingung zu nutzen. Mit Position ist hier die Endposition eines Encodermotors nach vollendeter Schrittweite gemeint.

Servomotor

image-1623746331741.42.25.png

Ein Servomotor ist ein spezieller Motor, der für präzise Steuerung seiner Position ausgelegt ist. Er kann auf exakte Winkel positioniert werden und verfügt über ein eingebautes Feedback-System, das es ermöglicht, die gewünschte Position genau zu erreichen und zu halten.

Setzen

Mit dem Block "setze Servomotor [] Position ..." kann man die Position eines Servomotors auf einen bestimmten Wert (von 0 bis 512) setzen. 0 und 512 sind die Werte für die maximale Auslenkung rechts und links. Bei dem Wert 256 steht der Servomotor dementsprechend in der Mitte.

Abrufen

Mit dem Block "hole Servomotor [] Position" lässt sich die Position eines Servomotors abrufen und als Wert weiterverarbeiten.

Sound

Der TXT 4.0 Controller hat einen eingebauten Lautsprecher und bietet somit die Möglichkeit, Sounds abzuspielen.

Der "Starte jedes Mal"-Block

Der "Starte jedes Mal"-Block bietet die Möglichkeit ein Programm ablaufen zulassen, wenn eine Bedingung erfüllt ist. Er funktioniert also ähnlich wie eine Fallunterscheidung, wird aber nicht nur einmal durchlaufen, sondern jedes Mal, wenn die Bedingung erfüllt ist, während des gesamten Ablauf des Programms. Der "Starte jedes Mal"-Block:

image-1623843106834.30.30.png

ist eine Abkürzung für folgendes Konstrukt:

image-1638372436179.png

Man kann in den "Starte jedes Mal"-Block der Kategorie Sound alle Bedingungen aus eben dieser Kategorie einsetzen.

Hinweis: Der Programmabschnitt innerhalb des "Starte jedes Mal"-Block sollte kurz gehalten werden und keine blockierenden Aufrufe oder Endlosschleifen enthalten, sodass dieser Teil des Programms schnell abgearbeitet werden kann.

Abspielen

Vorinstallierte Audiodateien

Mit dem folgenden Block kann man einen von 29 vorinstallierten Sounds abspielen. Die gewünschte Audiodatei kann über das Drop-down-Menü (kleines Dreieck) ausgewählt werden. Außerdem ist es möglich, den Ton in Dauerschleife abzuspielen. Dafür muss man das Kästchen hinter dem Dauerschleife-Symbol ankreuzen.

image.png

Eigene Audiodateien

Möchte man einen eigenen Sound abspielen, kann man den Block "spiele eigene Audiodatei" nutzen. Um seinen eigenen Sound in den Block einzubetten, muss man:

  1. Mit dem Controller verbunden sein
  2. Die IP-Adresse des Controllers in den Browser eingeben (hierbei muss die IP gewählt werden, die auch zum Verbinden mit dem Controller genutzt wurde)
  3. Auf der aufgerufenen Seite USER: ft, PASSWORD: fischertechnik eingeben
  4. Ordner sounds öffnen und dort über das Plus die gewünschte Audiodatei auf den Controller laden (wichtig: die Audiodatei muss im wav-Format vorliegen)
  5. Im ROBO Pro Coding-Block unter Pfad "./dateiname.wav" angeben

Auch hier gibt es die Option, den Sound in Dauerschleife abzuspielen.

image.png

Abfragen

Um abzufragen, ob eine Audiodatei abgespielt wird, nutzt man den Block "spielt Audiodatei ab". Dieser kann als Bedingung im Programm genutzt werden.

image.png

Stoppen

Um einen Ton zu stoppen, wird einfach der Block "stoppe Wiedergabe Audiodatei" im Programm verwendet.

image.png

Anzeige

Mit den Blöcken der Kategorie Display lässt sich der Bildschirm des TXT 4.0 Controllers gestalten und nutzbar machen. Dies geschieht in zwei Schritten:

  1. Konfigurieren, das heißt:
    • Eine neue Datei der Kategorie Display öffnen, über das Seitensymbol mit dem Plus oben links
    • Die gewünschten Elemente auf den gerasterten Bereich ziehen (er stellt den konfigurierbaren Teil des Displays dar)
    • Bei Bedarf Spezifikationen anpassen.
  2. Programmieren, das heißt:
    • Im Hauptprogramm mit den Blöcken der Kategorie Display die Wirkung von Interaktion mit dem Display programmieren.

Blöcke

Beschriftungsfeld

Mit dem Element "Beschriftungsfeld" kann man einen Text auf dem Bildschirm platzieren. Das Symbol im Anzeigekonfigurator ist das Etikett. Zieht man dieses Symbol in den gerasterten Bereich, öffnet sich rechts ein Fenster. Hier kann unter Inspektor

festgelegt werden.

Mit dem Block "setze Beschriftungsfeld [] Text ..." lässt sich der abgebildete Text im Laufe des Programms ändern. Um den aktuellen Text des Beschriftungsfelds zu erhalten, kann der Block "hole Beschriftungsfeld [] Text" verwendet werden. Dies ist nützlich, um den Text zu lesen und in anderen Teilen des Programms zu verwenden oder zu überprüfen.

Eingaben

Das Element "Eingabe" erlaubt es, dass Nutzer*innen über den Controller Text eingeben. Das zugehörige Symbol im Anzeigekonfigurator ist das "T" Zeichen. Zieht man dieses Symbol in den gerasterten Bereich, öffnet sich rechts ein Fenster. Hier kann unter Inspektor

festgelegt werden.

Mit dem Block "setze Eingabefeld [] Text ..." lässt sich der abgebildete Text im Laufe des Programms ändern. Um den Text aus dem Eingabefeld abzurufen, wird der Block "hole Eingabefeld [] Text" verwendet.

Eingabe-Programm

Das Eingabe-Programm läuft ab, wenn eine Eingabe abgeschlossen wurde. Es wird separat vom Hauptprogramm geschrieben. Variablen funktionieren global über beide Programme hinweg. Das Eingabe-Programm läuft im Block "wenn Eingabe [] abgeschlossen" ab. Der "Ereignis []"-Block wird im Eingabe-Programm auf "text" gesetzt. In diesem Beispiel wird die Variable "Name" auf den eingegebenen Text gesetzt, sie wird dann im Hauptprogramm genutzt, um den eingegebenen Text auszugeben:

image-1623752961393.png

Ereignisabfrage

Der Block "Ereignis []" ruft den Rückgabewert eines Elements ab. Dieser Block kann nur in den Ereignisprogrammen genutzt werden. In diesen Ereignisprogrammen bezieht sich der Block automatisch auf das Ereignis, in dessen Programm er verwendet wird. Der geeignete Typ für den Rückgabewert kann über das Dropdown-Menü (kleines Dreieck) gewählt werden:

image-1623752625042.png

Messinstrument

Die "Messinstrument"-Funktion kann Werte (keine Werte kleiner 1) darstellen. Das zugehörige Symbol im Displaykonfigurator ist die Skalierung. Zieht man dieses Symbol in den gerasterten Bereich, öffnet sich rechts ein Fenster. Hier kann unter Inspektor

festgelegt werden.

Mit dem Block "setze Messinstrument [] auf Wert ..." lässt sich das Messinstrument auf den eingegebenen Wert setzen. Dieser Wert sollte im vorher definierten Wertebereich liegen. Liegt der Wert außerhalb des Wertebereichs, wird, je nachdem, ob der Wert zu groß oder zu klein ist, eine der Grenzen des Wertebereichs dargestellt. Um den aktuellen Wert des Messinstruments abzurufen, wird der Block "hole Messinstrument [] Wert" verwendet.

Statusanzeige

Der Statusindikator zeigt die Aktivität von etwas an. Je nach Status leuchtet er ("aktiv") oder tut dies nicht ("inaktiv"). Das Symbol im Displaykonfigurator ist eine leuchtende Diode. Zieht man dieses Symbol in den gerasterten Bereich, öffnet sich rechts ein Fenster. Hier kann unter Inspektor

festgelegt werden.

Mit dem Block "setze Statusanzeige [] aktiv ..." lässt sich die Statusanzeige aktivieren bzw. deaktivieren. Im Dropdown-Menü (kleines Dreieck) lässt sich wählen, ob die Statusanzeige auf aktiv oder inaktiv gesetzt werden soll. Um den aktuellen Status der Statusanzeige zu überprüfen, kann der Block "ist die Statusanzeige [] aktiv" verwendet werden.

Schieberegler

Der Schieberegler gibt Werte abhängig von seiner Position zurück. Die Position kann dabei vom Nutzer*innen über den Touchscreen verändert werden. Der Wert kann über den "Ereignis []"-Block abgerufen werden, sobald der Schieberegler ruht. Der abgerufene Wert ist eine Dezimalzahl. Will man den Wert des Schiebereglers ganzzahlig haben, muss man den "runde"-Block einsetzen. Das zugehörige Symbol für den Schieberegler ist der Strich mit dem Kreis. Zieht man dieses Symbol in den gerasterten Bereich, öffnet sich rechts ein Fenster. Hier kann unter Inspektor

festgelegt werden.

Mit dem Block "setze Schieberegler [] Wert ... " kann der Wert des Schiebereglers geändert werden. Mit dem Block "Setze Schieberegler aktiviert" kann die Aktivität des Schiebereglers über das Dropdown-Menü geändert werden, wobei zwischen "aktiviert" und "deaktiviert" gewählt werden kann.

Um den aktuellen Wert des Schiebereglers zu erhalten, wird der Block "hole Schieberegler [] Wert ..." verwendet. Dieser Block gibt den aktuellen Wert des Schiebereglers als Dezimalzahl zurück. Um den Aktivitätsstatus des Schiebereglers zu überprüfen, kann der Block "ist Schieberegler []  aktiv" verwendet werden. Dieser Block gibt einen Booleschen Wert zurück, der angibt, ob der Schieberegler aktiv ist.

Schieberegler-Programm

Das Schieberegler-Programm läuft ab, nachdem der Schieberegler verschoben wurde. Es wird separat vom Hauptprogramm geschrieben. Variablen funktionieren global über beide Programme hinweg. Das Schieberegler-Programm läuft im Block "wenn Schieberegler [] bewegt" ab. Der "Ereignis []"-Block wird im Schieberegler-Programm auf "value" gesetzt. In diesem Beispiel wird die Geschwindigkeit des Motors über den Schieberegler gesteuert. Der Wert des Schiebereglers muss gerundet werden, da der Motor nur ganze Zahlen als Drehzahl akzeptiert:

image-1623752981018. beispiel.png

Schaltfläche

Die Schaltfläche ist ein beschriftetes Feld, das gedrückt werden kann. Drückt man die Schaltfläche, läuft das Schaltflächen-Programm ab, sobald sie wieder losgelassen wird. Das zugehörige Symbol für die Schaltfläche ist das Quadrat mit der "OK" Beschriftung. Zieht man dieses Symbol in den gerasterten Bereich, öffnet sich rechts ein Fenster. Hier kann unter Inspektor

festgelegt werden.

Mit dem Block "setze Schaltfläche [] aktiviert ..." kann man die Aktivität über das Dropdown-Menü (kleines Dreieck) wechseln. Um zu überprüfen, ob die Schaltfläche aktiv ist, kann der Block "ist Schaltfläche aktiviert" verwendet werden.

Schaltflächen-Programm

Das Schaltflächen-Programm läuft ab, sobald die Schaltfläche nicht mehr gedrückt ist. Es wird separat vom Hauptprogramm geschrieben. Variablen funktionieren global über beide Programme hinweg. Das Schaltflächen-Programm läuft im Block "wenn Schaltfläche [] angeklickt" ab. Der "Ereignis []"-Block kann im Schaltflächen-Programm nicht verwendet werden, da die Schaltfläche keinen Rückgabewert hat. In diesem Beispiel wird die LED aktiviert, wenn die Schaltfläche gedrückt wurde.

image-1623753071835.png

Schalter

Der Schalter kann zwei Positionen einnehmen und befindet sich immer in genau einer dieser beiden Positionen. Je nach Position gibt er wahr oder falsch zurück. Das zugehörige Symbol für den Schalter ist das Oval mit dem Punkt. Zieht man dieses Symbol in den gerasterten Bereich, öffnet sich rechts ein Fenster. Hier kann unter Inspektor

angepasst werden.

Der Block

image-1623753195948.png

image-1623753186716.png

übernimmt zwei Funktionen. Man kann entweder die Aktivität (enabled im Dropdown-Menü wählen) oder den Zustand (checked im Dropdown-Menü wählen) auf wahr oder falsch setzen. Um den aktuellen Zustand des Schalters abzufragen, wird der Block "ist Schalter [] []" verwendet.

Schalter-Programm

Das Schalter-Programm läuft jedes Mal ab, wenn der Schalter umgelegt wird. Es wird separat vom Hauptprogramm geschrieben. Variablen funktionieren global über beide Programme hinweg. Das Schalter-Programm läuft im Block "wenn Schalter [] umgeschaltet" ab. Der "Ereignis []"-Block wird im Schalter-Programm auf "checked" gesetzt, er gibt wahr oder falsch zurück. Dieses Beispielprogramm schaltet die LED ein, wenn der Schalter umgelegt ist, andernfalls wird die LED ausgeschaltet:

image-1623760118876.png

Kontrollkästchen

Das Kontrollkästchen kann zwei Zustände annehmen und befindet sich immer in genau einem dieser beiden. Je nach Zustand gibt es wahr oder falsch zurück. Das Symbol für das Kontrollkästchen ist das Quadrat mit dem Haken. Zieht man dieses Symbol in den gerasterten Bereich, öffnet sich rechts ein Fenster. Hier kann unter Inspektor

festgelegt werden.

Der folgende Block übernimmt zwei Funktionen. Über das Dropdown-Menü (kleines Dreieck) kann gewählt werden, welche man nutzt. Man kann entweder die Aktivität (enabled im Dropdown-Menü wählen) oder den Zustand (checked im Dropdown-Menü wählen) auf wahr oder falsch setzen.

image-1623753478781.png

image-1623753448613.png

Um den aktuellen Zustand des Kontrollkästchens abzufragen, wird der Block "ist Kontrollkästchen [] []" verwendet.

Kontrollkästchen-Programm

Das Kontrollkästchen-Programm läuft jedes Mal ab, wenn das Kontrollkästchen gedrückt wird. Es wird separat vom Hauptprogramm geschrieben. Variablen funktionieren über beide Programme hinweg. Das Kontrollkästchen-Programm läuft im Block "wenn Kontrollkästchen [] umgeschaltet" ab. Der "Ereignis []"-Block wird im Schalter-Programm auf "checked" gesetzt, er gibt wahr oder falsch zurück. Dieses Beispielprogramm schaltet die LED ein, wenn das Kontrollkästchen angehakt ist, andernfalls wird die LED ausgeschaltet.

image-1623760160179.png

Bild

Der "setze Bild [] Base64-Bild ... " Block erlaubt es, ein Bild zu ändern, indem ein Base64-codierter Bildstring verwendet wird. Der Vorteil dieses Blocks ist die Fähigkeit, dynamisch verschiedene Bilder anzeigen zu können, indem einfach der Base64-String geändert wird. Dies ermöglicht eine flexible Anpassung der Bildinhalte zur Laufzeit.

image.png

Hinweis: Base64 ist eine Kodierungsmethode, die dazu dient, binäre Daten in eine Zeichenkette aus lesbaren ASCII-Zeichen zu konvertieren. Diese Kodierung wird häufig verwendet, um Daten, die ursprünglich in einem binären Format vorliegen, wie z.B. Bilder oder Audiofiles, in Formate zu übertragen, die ausschließlich Text verarbeiten können.