INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
zweiten Wert über Serial einlesen
14.12.2020, 13:42
Beitrag #1
zweiten Wert über Serial einlesen
Hallo zusammen,

kann mir bitte jemand sagen, wie ich zwei Werte über Serial einlesen kann?
Hier habe ich ein kleines Testprogramm.
Der Wert "a" wird gut eingelesen.
Aber was mache ich, wenn ich auch einen Wert "b" benötige?

Cu
Hans

Code:
String a;                      // Variable "a" enthält den String der vom Monitor kommt
String b;                      // Wie mach ich das?

void setup() {
          Serial.begin(9600);
}

void loop() {

     if(Serial.available()) {
       a= Serial.readString();  // Lesen was vom Monitor kommt
          Serial.println(a);    // Ausgeben was gesendet wurde
          
     if(a=="gg"){               // Wenn "gg" vom Monitor kommt,
       test();                  // gehe zu "void test()"
       }                        // if (a=="gg"){
     if(a=="hh"){
      test1();  
       }                        // if(a=="hh"){
       }                        // if(Serial.available()) {
}                               // void loop(){

void test(){
          Serial.println("alles...");
}                               // void test(){

void test1(){
  
          Serial.print("Variable a ist = ");
          Serial.println(a);
}                               // void test1(){
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2020, 13:48
Beitrag #2
RE: zweiten Wert über Serial einlesen
Alles in einen Puffer einlesen, trennen, auswerten.
Ich habe das hier mal am Beispiel der Steuerung einer RGB-LED über die serielle Schnittstelle gemacht.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2020, 14:18
Beitrag #3
RE: zweiten Wert über Serial einlesen
Danke erst mal für die Antwort.
Aber ich glaube, es ist nicht das was ich will, wenn ich Dein Programm richtig verstanden habe.
Du sendest alles in einer Zeile.

Ich will aber alles nacheinander eingeben.
Da sich alles nacheinander entwickelt.

Die erste Variable ist nur dafür da an die richtige Stelle im Programm zu springen.
Dann passiert irgendwas, und das Ergebnis soll dann eingegeben und in die neue Variable geschrieben werden.


Cu
Hans
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2020, 14:22
Beitrag #4
RE: zweiten Wert über Serial einlesen
Du musst ja erst mal wissen, wo die 1. Variable zuende ist. Dazu am Besten ein Zeilenende senden ('\n').
Dann kannst Du doch danach problemlos auf die gleiche Weise die nächste Variable einlesen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2020, 15:18
Beitrag #5
RE: zweiten Wert über Serial einlesen
Das Dumme ist, mein Programm funktioniert nur wenn ich KEIN Zeilenende sende.
Wenn ich "hh\n" eingebe, dann kommt auch "hh\n" an.
Auch im Seriellen Monitor darf ich nur ohne einstellen, sonst wird das nichts.

Cu
Hans
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2020, 18:46
Beitrag #6
RE: zweiten Wert über Serial einlesen
Ja und das '\n' musst Du durch den Zeichenkettenabschluss '\0' ersetzen, damit hast Du eine gültige Zeichenkette und kannst diese weiter verarbeiten.

Ich habe da mal ein Tutorial dazu geschrieben.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2020, 20:48 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2020 20:50 von vlakvark.)
Beitrag #7
RE: zweiten Wert über Serial einlesen
Danke,
Deine Links werde ich mir ansehen.

Ich hab es jetzt etwas anders gemacht.
Vielleicht nicht die beste und schönste Art dies zu machen, aber es macht was es soll.
Und darauf kann ich nun aufbauen.
Verfeinern kann ich immer noch.

Cu
Hans

Code:
int LED = 13;
String a;                       // Variable "a" enthält den String der vom Monitor kommt
int b;                          // enthält die umgewandelte Zahl
  
void setup() {
          Serial.begin(9600);
          pinMode(LED, OUTPUT);
}

void loop() {

     if(Serial.available()) {
       a= Serial.readString();     // Lesen was vom Monitor kommt
          
     if(a != "an" && a != "aus"){  // Abfragen was gekommen ist            
        String val = a;            // String in Zahl umwandeln
        int result = val.toInt();  //   "
        
        b = result;                // umgewandelte Zahl in Variable "b" schreiben
        
        Serial.println("Kein an und kein aus");
        Serial.print("Aber wir haben eine Zahl: ");
        Serial.println(b);
            
        if(b >= 500){               // abfragen ob Zahl größer als 500 ist
                                    // wenn ja, gehe zu "blinken()"
          Serial.println("nun lass die LED blinken");
          blinken();
          }                         // if(b >= 500){
          }                         // if(a != "an" && a != "aus"){
            
        if(a == "an"){               // Wenn "an" vom Monitor kommt,
          test();                    // gehe zu "void test()"
          }                          // if (a == "an"){
          
        if(a=="aus"){
          test1();  
          }                          // if(a=="aus"){
          }                          // if(Serial.available()) {
}                                    // void loop(){

void test(){
     digitalWrite(LED, 1);
     Serial.println("Rote LED an Pin 13 sollte an sein.");
          
}                                    // void test(){

void blinken(){
     Serial.print("delay Zeit ist: ");
     Serial.println(b);
    
     digitalWrite(LED, 0);
     delay(b);
     digitalWrite(LED, 1);
     delay(b);
     digitalWrite(LED, 0);
     delay(b);
     digitalWrite(LED, 1);
     delay(b);
     digitalWrite(LED, 0);
     Serial.print("okay, hat geklappt");
}                                     // void blinken(){

void test1(){
     digitalWrite(LED, 0);
     Serial.println("Rote LED an Pin 13 sollte aus sein.");
}                                     // void test1(){
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2020, 21:06
Beitrag #8
RE: zweiten Wert über Serial einlesen
Da Du nicht in der Rubrik "ESP..." postest, gehe ich davon aus, dass Du einen der 8-Bit-AVR benutzt. Dann lass in Deinem eigenen Interesse die Finger von der Klasse String, wenn der Sketch länger laufen soll. Die Begründung steht in meinem Tutorial.
Diese Warnung gibt es von mir nur 1 Mal. Danach ist es mir egal, was Du machst.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  2x Serial Monitor betreiben RCudino 2 271 21.03.2021 11:47
Letzter Beitrag: RCudino
Question Alternative Serial.readString() xrzr91 5 439 12.03.2021 15:08
Letzter Beitrag: Tommy56
  Attiny85 Probleme mit Schleifen und Serial-Ausgabe lucki.luke 9 670 07.03.2021 20:55
Letzter Beitrag: Tommy56
  Sensor-Adressdaten mittels json von Webserver einlesen und hinterlegen MLuhmann 7 593 22.02.2021 18:56
Letzter Beitrag: Tommy56
  n Bytes über UDP empfangen Igom 5 367 21.02.2021 10:30
Letzter Beitrag: Tommy56
  Zähler mit Taster und Serial Monitor LK2567 16 1.143 16.02.2021 22:37
Letzter Beitrag: Bitklopfer
  Arduino über Serielle Schnittstelle rücksetzen Rainer2 5 465 12.02.2021 13:31
Letzter Beitrag: Tommy56
Question Serial.print - Einfluss auf Code Natsnok 4 499 17.01.2021 16:48
Letzter Beitrag: Natsnok
  Ausgabe auf Serial Monitor vlakvark 8 792 31.12.2020 15:25
Letzter Beitrag: MicroBahner
  Arrays und Serial Arduino DMX Master 38 1.815 22.12.2020 23:40
Letzter Beitrag: Arduino DMX Master

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste