Kopiere den folgenden Code in den neuen Sketch:
/*
* Hallo Welt!
*
* Dies ist das "Hallo Welt" Programm für den Arduino
* Es zeigt, wie Daten an den Computer gesendet werden
*/
void setup() // Läuft nur einmal zu Beginn
{
Serial.begin(9600); // Serielle Kommunikation mit 9600 bps
Serial.println("Hallo Welt!"); // Druckt die Meldung mit einer neuen Zeile am Ende
}
void loop() // Wird immer wieder wiederholt
{
// Tue nichts!
}
Als erstes bemerken wir, dass nichts in der loop() Prozedur steht. Wir haben dort alles heraus genommen und in die setup() Prozedur gestellt.
Wir merken uns: selbst wenn wir nichts in die loop() oder setup() Prozedur schreiben, sind beide erforderlich. Auf diese Art wird gesagt, dass tatsächlich nichts zu tun ist und nicht etwa etwas vergessen wurde.
Die erste Codezeile in der setup() Prozedur ist diese hier:
Serial.begin(9600); // Serielle Kommunikation mit 9600 bps
Es ist definitiv zu sehen, dass irgendetwas serielles geschieht und es genauso wie ein Prozeduraufruf aussieht. Es handelt sich um den Aufruf einer Prozedur aus der Bibliothek Serial. Innerhalb dieser Bibliothek gibt es eine Prozedur / Funktion mit dem Namen begin[b].
Bibliotheksname
.
Prozedurname
(Eingabewert)
;
Serial
.
begin
(9600)
;
Es gibt Prozeduraufrufe ohne die Angabe eines Bibliotheksnamen wie z.B. bei delay(). Diese Aufrufe werden so häufig benutzt, dass die Entwickler des Compilers sich dafür entschieden haben, diese Aufrufe nicht in eine eigene Bibliothek zu stellen. Sie gehören zum Standardumfang des Compilers.
Was die noch nicht bekannte Prozedur [b]begin tut, kannst du dir wahrscheinlich schon vorstellen. Sie tut all die Dinge, die notwendig sind, um die serielle Kommunikation vorzubereiten.
Aber was ist mit der 9600? Im Kommentar steht da noch 9600 bps. "bps" steht für "bits per second" (Bits pro Sekunde). Das bezeichnet man auch als baud rate. Falls du über eine Breitbandverbindung verfügst, erinnerst du dich vielleicht an eine Angabe wie z.B. 350 kbps download rate. Damit wird die Übertragungsgeschwindigkeit gekennzeichnet. Ganz klar, der Arduino überträgt nicht so schnell wie eine Breitbandverbindung. Er kann mit den Geschwindigkeiten 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, und 115200 bps umgehen.
OK, Serial.begin bereitet also den Arduino mit der Geschwindikeit vor, die wir wünschen. In diesem Fall also mit 9600 bps.
Schauen wir uns die nächste Zeile an.
Serial.println("Hallo Welt!"); // Druckt die Meldung mit einer neuen Zeile am Ende
Diese Zeile nutzt auch die Bibliothek Serial. Dieses Mal wird eine Prozedur mit dem Namen println aufgerufen. println ist eine Abkürzung für "print line" (drucke Zeile). Achte darauf, dass der sechste Buchstabe ein kleines L ist und nicht die Zahl 1. Dieses Mal steht die Eingabe für die Prozedur in Anführungszeichen. Sie enthält den Text, den wir ausdrucken wollen. Die Anführungszeichen kennzeichnen den Anfang und das Ende des auszugebenden Textes.
Blitz Quiz
- Wenn der Arduino auf 9600 bps eingestellt ist und du 12 Bytes übertragen möchtest, wie lange dauert das dann? Markiere den folgenden Text mit der Maus für die Antwort 12 Bytes entsprechen 12 * 8 Bits = 96 Bits. Bei einer Übertragungsgeschwindigkeit von 9600 bps werden 96 Bits in 1/100stel Sekunde übertragen (0,01 Sekunden).
- Wenn der Arduino auf 19200 bps eingestellt ist und du 12 Bytes übertragen möchtest, wie lange dauert das dann? Markiere den folgenden Text mit der Maus für die Antwort Das ist zweimal so schnell wie in der vorigen Aufgabe. Also werden die Daten in der halben Zeit übertragen. 1/200stel Sekunde (0,005 Sekunden)
Ich bin nicht ganz sicher, was das Symbol bedeutet. Es ersetzt aber den Programmbenachrichtigungsbereich durch einen seriellen Monitor.
Hallo ... Welt?
Bei älteren Arduinos wie der NG, wird durch das Einschalten des seriellen Monitors der Arduino nicht zurückgesetzt. Das muss dann durch einen Druck auf Reset-Taste geschehen. Bei neueren Arduinos ab dem Diecimila geschieht das durch den Klick auf das Symbol für den seriellen Monitor. Danach wird dann die Meldung ausgegeben.
Voila, der Arduino spricht!
Einstellung der baud rate
Wenn du statt eines klaren Textes nur wirre Zeichen siehst, dann überüfe, ob der Monitor mit der richtigen Geschwindigkeit eingestellt ist. Dafür gibt es links oberhalb der Monitors eine Auswahlbox. Dort kannst du die Geschwindigkeit einstellen, die du mit Serial.begin() vorgegeben hast. Diese Geschwindigkeit ist unabhängig von der Geschwindigkeit, mit der Sketche auf den Arduino übertragen werden. Diese Geschwindigkeit ist fest auf 19200 bps eingestellt.
Drücke als nächstes ein paar Mal die Reset-Taste, damit "Hallo Welt!" einige Male ausgegeben wird. Weil der NG mit 7 Sekunden pro Reset dafür ziemlich lange braucht, kann das auf einem NG ganz schön nerven, versuche es aber trotzdem.
Jedes Mal, wenn du den Arduino zurücksetzt, wird die setup Prozedur ausgeführt und die Meldung "Hallo Welt!" ausgegeben. Wenn du dir dabei den Arduino etwas näher ansiehst, wirst du sehen, dass die TX LED in dem Moment aufblinkt, in dem die Meldung gesendet wird. Das ist also der Hinweis darauf, dass etwas gesendet vom Arduino an den Computer gesendet wird.
Was macht "Send"?
Mit println werden Daten vom Arduino zu Computer gesendet. Der Schalter "Send" sendet die Daten aus dem links daneben befindlichen Eingabefeld vom Computer an den Arduino. In dieser Lektion benutzen wir das nicht. Sei also nicht überrascht, dass sich nichts tut, wenn du darauf klickst!
10 PRINT HALLO
20 GOTO 10
Unser nächster Skech erhält eine kleine Veränderung. Statt "Hallo Welt!" nur einmal auszugeben, wollen wir, dass sie immer und immer wieder ausgegeben wird.
Blitz Quiz
- Welche kleine Veränderung muss vorgenommen werden, damit die Meldung "Hallo Welt!" immer und immer wieder ausgegeben wird? Markiere den folgenden Text mit der Maus für die Antwort Verschiebe die Anweisung Serial.println("Hallo Welt!"); von der setup Prozedur in die loop Prozedur.
Blitz Quiz
- Was geschieht mit der TX LED? Markiere den folgenden Text mit der Maus für die Antwort Sie blinkt nicht mehr, sondern leuchtet ständig.
- Versuche in einem abgedunkelten Raum den Arduino herum zuschwenken. Was siehst du? Markiere den folgenden Text mit der Maus für die Antwort Es ist eine klein gepunktete Linie zu sehen.
- Was geschieht hier? Erinnere dich an die Lektion 2. Markiere den folgenden Text mit der Maus für die Antwort Die Daten werden so schnell übertragen, dass wir das Blinken der TX LED nicht mehr wahrnehmen können. Sie sendet pro Sekunde sehr viele Daten.
/*
* Hallo Welt!
*
* Dies ist das "Hallo Welt" Programm für den Arduino
* Es zeigt, wie Daten an den Computer gesendet werden
*/
void setup() // Läuft nur einmal zu Beginn
{
Serial.begin(9600); // Serielle Kommunikation mit 9600bps
}
void loop() // Wird immer wieder wiederholt
{
Serial.println("Hallo Welt!"); // Druckt die Meldung mit einer neuen Zeile am Ende
delay(1000);
}
Jetzt solltest du selber mit println etwas herum spielen und Texte deiner Wahl ausgeben. Vielleicht schreibst du ein paar zusätzliche println, um längere Meldungen zu erhalten?




vor 1 year 38 weeks
Moin,
ich klicke mich hier gerade einfach mal ein bisschen durch und mir fällt auf, das sich bei der Berechnung der Geschwindigkeit einer RS232-Verbindung mit 9600 Baud ein kleiner Fehler eingeschlichen hat: Für jedes Byte werden 10 Symbole übertragen (Start- + Stop-Bit + 8 Datenbits). Die richtige Übertragungsdauer für 12 Bytes wären also 12,5ms.
Auch wenn es vielleicht so einfach gewollt ist, damit es jeder versteht so ist es doch nicht ganz richtig ;)
Gruß
Tobi
Login or register to post comments