In diesem Beitrag wollen wir euch zeigen, wie man eine serielle Kommunikation mit USB zwischen eurem Computer und der Steuerplatine herstellen kann. Einfacher gesagt: wie man Informationen und Anweisungen über das USB-Kabel an die Platine sendet.
Für eine Kommunikation braucht es immer zwei, einen Sender und einen Empfänger. Wir benötigen daher zwei Dinge:
- Ein Programm in der Steuerplatine das Daten sendet/empfängt (dafür verwenden wir bitbloq).
- Ein Programm im Computer das Daten sendet/empfängt (hier verwenden wir den seriellen Monitor der Arduino-IDE)
Öffne bitbloq und lade die Arduino-IDE herunter. Ganz gleich ob du eine ZUM-BT 328 Platine oder eine FreaduinoUNO Platine verwendest, verbinde sie über das USB-Kabel mit dem Computer und … Lass uns anfangen!
“”Hier Robonauta an Echo-Basis. Können Sie mich hören?””
Über den seriellen Port schreiben
Im nächsten Beispiel senden wir, wenn der IR Sensor diese Farbe wahrnimmt, von der Steuerplatine das Wort ‘SCHWARZ‘. Verbinde diesen Sensor mit dem digitalen Pin 3:
Teil 1: SENDER – Programmierung in bitbloq
Um den Datenversand von der Platine in bitbloq zu programmieren benötigen wir lediglich den Block mit dem Namen „Über seriellen Port drucken“.
Daher ist es nicht schwierig, ein Programm zu entwerfen, in dem jede Sekunde (1000 ms) der Wert des Sensors verglichen wird. Entspricht dieser dem Wert Null, wird das Wort gesendet. Lade dieses Programm in deiner Platine:
Teil 2: EMPFÄNGER – mit Verwendung des seriellen Monitors der Arduino-IDE
Wie gesagt verwenden wir den seriellen Monitor der Arduino-IDE. Schließe bitbloq und öffne bei angeschlossener Platine das Arduino Programm.
Jetzt wählst du die Steuerplatine unter Werkzeuge/Karte aus. Wenn du die Platine ZUM BT-328 verwendest, wählst du „Arduino BT w/ATmega328“ aus. Verwendest du eine FreaduinoUNO wählst du „Arduino UNO“ aus.
Wähle in Werkzeuge/Serieller Port den Port aus, an den die Platine angeschlossen ist:
Jetzt können wir den Seriellen Monitor in Werkzeuge/Serieller Monitor auswählen oder hier klicken:
Es öffnet sich ein Fenster, in dem wir überprüfen müssen, dass eine Geschwindigkeit von 9600 Baud ausgewählt ist.
Wenn der IR Sensor in unserem Beispiel das Wort mehrmals wahrnimmt erscheint auf dem Monitor das Wort „SCHWARZ“ ohne Unterbrechung:
Wenn wir möchten, dass uns das Ergebnis etwas ordentlicher angezeigt wird, verwenden wir den Block „Über seriellen Port mit Zeilensprung drucken“:
Dann sieht die Ausgabe folgendermaßen aus:
DEN SERIELLEN PORT LESEN
Teil 1: EMPFÄNGER – Programmierung mit bitbloq
In diesem Fall ist unsere Steuerplatine der Empfänger. Für alles was von der Platine empfangen werden soll, verwenden wir diesen bitbloq Block. Er überprüft, ob etwas beim seriellen Port angekommen ist:
Wenn dieser Fall eintrifft lesen wir die erhaltenen Daten und speichern sie in einer Variablen:
Jetzt können wir die Daten vergleichen und je nach dem Wert dieser Information handeln. Wenn wir beispielsweise ein großes A erhalten, schalten wir die in die Platine integrierte LED ein (D13). Bei allen anderen Daten schalten wir die besagte LED aus. Das Programm sieht dann folgendermaßen aus:
“- Aber … du hast die Information mit einer 65 verglichen?! –” Ja liebe Robonauten, denn momentan gibt es in bitbloq keinen Block, der Variablen der Art char vergleicht, sondern momentan können sie nur vom Typ String sein. Mach dir nichts daraus, wenn du nur Bahnhof verstehst, du musst für dieses Beispiel nur wissen, dass wir stellvertretend für die Buchstaben Zahlen verwenden.
Der Buchstabe A entspricht im Ascii Code der Dezimalzahl 65 (sieh dir die Tabelle am Ende dieses Beitrags an).
Teil 2: SENDER – wir verwenden den seriellen Monitor der Arduino-IDE
Die Platine ist bereits startklar zum Empfangen. Schließe bitbloq und öffne den Seriellen Monitor der Arduino-IDE erneut. Achte dieses Mal nicht nur darauf, dass 9600 Baud als Geschwindigkeit angegeben sind, sondern auch auf die Option „Die Zeile hat kein Ende“.
Schreibe ein A mit Großbuchstaben und drücke Versenden. Schaltet sich die integrierte LED ein? Versuch mal andere Daten zu senden, um die besagte LED D13 auszuschalten.
Hier findest du die ASCII Tabelle, damit du Buchstaben und Zahlen vergleichen kannst, die über den seriellen Port übertragen werden: