Arduino Serielle Schnittstelle String

OP #4413560
Hallo zusammen,

ich probiere gerade ein bisschen mit der Seriellen Schnittstelle rum und 
habe ein bis jetzt schon ein Funktionierendes Programm geschrieben das 
wenn ich "1" an die Serielle Schnittstelle sende, ich zurück bekomme 
"Test erfolgreich", bei einer anderen Zahl zwischen 0-9 bekomme ich 
"Test nicht erfolgreich" zurück ausgegeben.

Siehe Code:
1
int incoming;
2

3
void setup() {
4
  Serial.begin(9600);
5
}
6

7
void loop() {
8
  if (Serial.available()) {
9
    incoming = Serial.read();
10

11
    if (incoming == '1')
12
    {
13
      Serial.println("Test erfolgreich!");
14
    }
15
    if (incoming != '1')
16
    {
17
      Serial.println("Test nicht erfolgreich!");
18
    }
19
  }
20
}

Nun will ich das ganze aber so machen das ich z.B. "Test01" an den 
Arduino senden kann. Also keinen int mehr, sondern beispielsweise einen 
String.

Auf solche "Befehle" soll der Arduino später Werte von Sensoren auslesen 
und über die Serielle Schnittstelle ausgeben.

Würde mich sehr über Hilfe freuen.

Beste Grüße
Florian
Moderator (Firma: Titel) Persönliche Seite #4413591
Florian D. schrieb:
> Nun will ich das ganze aber so machen das ich z.B. "Test01" an den
> Arduino senden kann. Also keinen int mehr, sondern beispielsweise einen
> String.
Ein String besteht aus einzelnen Buchstaben. Und solche einzelne 
Buchstaben kannst du ja schon empfangen.
Schreibe also diese einzelnen Buchstaben in ein char-Array (aka 
"String") und wenn du ein 0x13 oder ein 0x10 empfängst (CR bzw LF), dann 
ersetzt du dieses Zeichen durch eine 0 und wertest dein char-Array wie 
einen String aus...
Gast #4413621
Hallo Florian,

Ein doller Begleiter ist das Buch "Arduino Kochbuch"

zB.auf Seite 111 werden Serielle-Übertragungen behandelt

studiere es aufmerksam!
und viel Spaß zum Lernen!
Lg!
OP #4413645
So, ich habe nochmal etwas weiter dran gesessen und im Internet geschaut 
und zu folgendem bin ich gekommen.
1
String incoming;      
2

3
void setup() {
4
  Serial.begin(9600);
5
}
6

7
void loop() {
8
  if (Serial.available() > 0) {
9

10
    incoming = Serial.read();
11

12
    if (incoming == "Test01")
13
    {
14
      Serial.println("Test erfolgreich!");
15
    } 
16

17
    if (incoming != "Test01")
18
    {
19
      Serial.println("Test nicht erfolgreich!");
20
    }
21
  }
22
}

Folgendes Problem nun: Ich sende "Test01" an den Arduino, ich bekomme 6x 
"Test nicht erfolgreich zurück!". Ich glaube das hat was mit dem Ende 
des Strings zutun, aber ich habe dazu nichts gefunden.

Gruß Florian
Gast #4413686
Du wirst schon etwas lesen müssen ... :-)

Vielleicht kommst Du damit weiter ... aber Du stocherst dann auch 
weiterhin im Nebel.
1
 if(Serial.available() > 0)
2
    {
3
        incoming = Serial.readStringUntil('\n');
4
    }

Also nimm Dir ein vernünftiges Buch oder suche Dir gute Videos (Lesen 
ist ja wohl nicht mehr "in") und mach Dich schlau.

Florian D. schrieb:
> Auf solche "Befehle" soll der Arduino später Werte von Sensoren auslesen
> und über die Serielle Schnittstelle ausgeben.

Das schaffst Du mit "try and error" vermutlich nicht ...
Gast #4413689
Florian D. schrieb:

......
> des Strings zutun, aber ich habe dazu nichts gefunden.

und was sind es für Beiträge weiter oben :-))  ???

Man hilft gerne weiter im Forum, das ist meine Erfahrung, aber
das Servierte müssen wir dir nicht auch noch kauen!

Es funktioniert so:

Du lädst das Arduino Kochbuch herunter (download) auf deine
Festplatte, öffnest du die pdf Datei und liest zB ab der Seite 111
...und weiter.
Das Buch behandelt die Serielle Schnittstelle vom Arduino sehr
anschaulich und gründlich.

Ich meine es wirklich nicht sarkastisch !!!!!
Du hast Hilfe verlangt, und das Forum gibt dir Ratschläge wie du
weiterkommen kannst.

MfG!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.