serial.print und serial.println > sichtb. Ausgabe?

Hallo : )

ich stehe mit Arduino noch ganz weit am Anfang und habe gerade ein kleines Problem, das ich nicht ganz verstehe. Ich lese die Position eines Schalters aus um entsprechend per serial Daten auszugeben. Das tue ich wie folgt:

  if (digitalRead(switchPin) == HIGH) 
    Serial.print(1, BYTE);

nun sollte doch nach meine Verständnis im Serial Monitor bei HIGH eine 1 ausgegeben werden, oder? Ich meine zumindest dass das bei meinen ersten Versuchen der Fall war und dass dies auch der normalen Funktion entspricht. Ich sehe jedoch im Serial Monitor keine Anzeige. Erst

Serial.println(1);   gibt etwas aus.
Ist das denn normal?

danke sehr!

tm

Hallo typomaniac

Was madworm, etwas mit Worten sparend, sagt, ist, daß die 1 nicht der Buchstabe 1 ist, sondern der Wert 1, der in der Ascii-Tabelle einem Steuerzeichen entspricht, das das Terminal im IDE nicht darstellt.

Um eine Eins als Buchstaben zu bekommen mußt Du

Serial.print("1");

schreiben.

Das selbe gilt für serial.println().

Ratschlag: schreibe "switchPin = 1" dann ist es im Terminal klarer.

Grüße Uwe

Es sollte sogar noch eine Idee einfacher gehen:

if (digitalRead(switchPin) == HIGH)
Serial.print(switchPin);

Sorry, hatte da Mist gepostet:

Serial.print(digitalRead(switchPin));

..sofern man damit leben kann, das auch Nullen ausgegeben werden...

vielen Dank an euch alle für die zahlreichen Antworten. Es ist genau so wie ihr es beschrieben habt und alles funktioniert. Noch besser: ich habe die Antworten dank der Erläuterungen verstanden und etwas gelernt. Nebenbei musste ich auch noch lachen (»etwas mit Worten sparend«) ;-). Mit dem einfachen Hinweis auf den Wiki ASCII Eintrag wäre ich wohl nicht weit gekommen. Dennoch natürlich trotzdem danke :slight_smile:

tm

p.s: Was mich aber noch wundert: wenn ich println verwende (dessen Sinn mir jetzt auch klar ist) ohne die 1 in Anführungen zu schreiben dann wird diese trotzdem im Monitor ausgegeben!!

p.p.s: @ wennjo. Damit kann ich sehr gut leben : )

Ist auch nicht immer ganz einfach zu verstehen. Serial.print versucht immer, irgendetwas "sichtbar" zu machen. Gibst Du einfach (1) ein, interpretiert Serial.print dies als Zahl oder Wert, mit dem Du ggf. weiterrechnen könntest. Bei ('1') oder ("1") wird zwar auch 1 angezeigt, aber das ist nun ein ASCII-Wert, den Du erst einmal umwandeln müsstest, um damit weiterzurechnen.
Schau auch mal hier rein: