Probleme mit dem Serial Monitor

Hallo,

ich bin gerade dabei mich in den Serial Monitor einzuarbeiten und teste dabei ein paar einfache Programme.

  1. Beispiel ist dieses hier:
void setup() {
  Serial.begin(9600);
  Serial.println("Hello World!");
}

void loop() {
  }

Im seriellen Monitor erhalte ich folgende Ausgabe:

17:13:55.325 -> Hed!

17:13:56.877 -> Hello World!

Ich habe dann etwas rumgespielt und festgestellt, dass die erste Ausgabe verschwindet, wenn ich ein Delay von einer Sekunde zwischen Serial.begin und der Print-Funktion einbaue.

Ein zweites Problem tritt auf, wenn ich Zeichen über den Monitor einlesen will:

char c;

void setup() {
  Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}

void loop() {
  if (Serial.available() > 0) {
    c = Serial.read();
    Serial.println(c);
  }
}

Gebe ich hier abc ein und bestätige mit Enter, erhalte ich folgende Ausgabe im Monitor:

17:21:38.284 -> a

17:21:38.284 -> b

17:21:38.284 -> c

17:21:38.284 ->

17:21:38.284 ->

Also zwei Leerleichen zu viel.

Ich benutze einen Elegoo UNO R3, der über einen USB-Adapter an einen iMac, der neusten Version angeschlossen ist.

Kann mir jemand helfen?

Viele Grüße,
Gobi

Du hast vermutlich die Zeilenende-Zeichen nicht richtig wiedergegeben. Mindestens eines der beiden hat dir in der Ausgabe eine (zugegebenermaßen kaum sichtbare) Leerzeile produziert.

Tipp: definiere mal c als int c;

Hab car zu int getauscht. Wenn ich jetzt abc und Enter eingebe, erhalte ich als Ausgabe:

18:11:19.406 -> 97

18:11:19.406 -> 98

18:11:19.406 -> 99

18:11:19.439 -> 10

Hallo,
mach da mal ein Serial.print(c); draus.


Beim Monitor stellst Du unten auf "sowohl NL als auch CR"um

Vielen Dank. Hat so funktioniert. Ist das Verhalten dann völlig normal? Normal müsste es ja auch einfach über println() funktionieren, oder?

Hallo,
println hängt ein zeilenende ( LF+CR ) hinten dran printnewline() wenn man so will, damit bekommst Du dann die zusätzlichne Leerzeilen

Über Hilfe Referenz kommst Du auch
hierhin

Nachtrag
Wenn Du noch was fürs unter das Kopfkissen brauchst , finde ich für Einsteiger ganz nützlich.
https://www.arduinoforum.de/referenz.php

Funktioniert ja auch: Schreibt dir eine Zeile je Buchstabe, wie gewünscht. Und "Neue Zeile" ist auch ein Buchstabe im Text "abc<Enter>", je nachdem sogar mal zwei. Im Beispiel mit int statt char ist ein 'a' die 97 und 10 ist das NeueZeile-Zeichen, was man auf diese Weise deutlicher sehen kann.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.