ich habe folgendes Problem: Wenn ich über den Befehl println oder allgemein print etwas ausgeben möchte, gibt der Arduino dies zwei mal aus (siehe Screenshot). Zur Demonstration und um ein Beispiel zu nehmen, bei dem niemand meinen Code anzweifelt habe ich einfach mal das Beispiel von Arduino der read() Referenz genommen:
int incomingByte = 0; // Für eingehende serielle Daten
void setup() {
Serial.begin(9600); // Öffnet die serielle Schnittstelle und stellt die Datenrate auf 9600 Bit/s ein
}
void loop() {
// Daten nur senden, wenn Daten erhalten:
if (Serial.available() > 0) {
// Lies das eingehende Byte:
incomingByte = Serial.read();
// Ausgeben:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
Außerdem gibt er auch falsche Werte wieder aus. Der Screenshot resultiert daraus, dass ich "1","2" bzw. "3" in den seriellen Monitor getippt habe. Je eingegebene Zahl printet er einmal die obere Zahl ("49","50","51") und die untere Zahl "10".
Über weiterhelfende Kommentare wäre ich sehr dankbar.
Gruß
Marco
Wo ist der Fehler denn zu sehen? Der Arduino macht genau das, was er soll: Byte von serieller lesen, ausgeben. Du tippst "1", "1" == 0x31 == 49, "<enter" == 0x0a == 10
Das ist fisiologisch.
Wenn Du im Terminal etwas verschickst wird ein Zusatzbyte eben die 10 mit verschickt. Die 10 bedeutet Line Feed ( Zeilenumbruch; Neue Zeile). Es kann auch eine 13 geschickt werden. Das sind Einstellungen im Seriellen Monitor bw Terminal.
siehe Zeilenumbruch – Wikipedia
Grüße Uwe
eigentlich alles geklärt.
Bekommst ein karma+ von mir:
1tes Post,
Code ist da in Code-Tags
Screenshot ist da, damit wir sehen was du siehst
"Fehlerbeschreibung" was du bekommst,
und Beschreibung was du gern hättest.
Du kannst im seriellen Monitor unten sagen was er alles senden soll. Bei Dir steht gerade "Neue Zeile" das ist die 10 die Du bekommst. Spiele mal mit diesen Einstellungen rum. Dann wirst Du gleich sehen wie das Deine Ausgabe beeinflusst.