Forum: Mikrocontroller und Digitale Elektronik Arduino Serielle Schnittstelle String


von Flo D. (floflovaldo)


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

von Datenblattfinder (Gast)


Lesenswert?

Florian D. schrieb:
> Würde mich sehr über Hilfe freuen.

Wobei brauchst Du Hilfe? Probier doch erstmal selbst und melde Dich 
wieder, wenn es irgendwo klemmt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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...

von Chr. M. (snowfly)


Lesenswert?

Du kannst auch einfach in den mitgelieferten Beispielen nachschauen.
Dazu sind sie da, auch bei runtergeladenen Libraries ist das nützlich.

von Ulrich F. (Gast)


Lesenswert?

Die Arduino Welt ist gnadenlos!
Auch für solche Zwecke wurde eine Lib geschaffen:
http://playground.arduino.cc/Code/CmdMessenger
https://github.com/thijse/Arduino-CmdMessenger

;-)

von JoJoBa (Gast)


Lesenswert?

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!

von Flo D. (floflovaldo)


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

von Loddaar (Gast)


Lesenswert?

eigne dir erst mal ein paar Grundlagen von C bzw. C++ an,
sonst ist das bodenlos

von Dieter F. (Gast)


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 ...

von JoJoBa (Gast)


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!

von Flo D. (floflovaldo)


Lesenswert?

Hallo,

Danke für den Hinweis. Ich gerade auch alles durch. Ich will ehrlich 
gesagt auch gar keine Lösung serviert bekommen, ich würde es gerne 
selber begreifen.

Danke für die ganzen Infos.

von JoJoBa (Gast)


Lesenswert?

@Florian

hier sind noch 2 Links die mir persönlich sehr geholfen haben.

Ich nehme an, du wirst sie auch hilfreich finden.
Beide sind online-Bücher für c-Interessenten...

http://www.c-howto.de/

http://www.tutorials.at/c/c-oder-cplusplus.html

Ich wünsche dir auch rasches Vorankommen!

MfG

von Didi69 (Gast)


Lesenswert?

Yo alda

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.