Arduino Serielle Schnittstelle String

OP #4413560
Lesenswert?

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
Lesenswert?

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...
OP #4413645
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren