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
  Canon-Kamera über WLAN auslösen ingo46 5 389 03.07.2021 17:15
Letzter Beitrag: ingo46
  Arduino Ramps E Wert cncandi 2 293 14.06.2021 16:44
Letzter Beitrag: Tommy56
  Poti wert in Minuten auf dem LCD Display ausgeben senseman 83 5.948 05.06.2021 00:52
Letzter Beitrag: senseman
  Poti-Wert auf OLED Display anzeigen senseman 34 2.425 24.05.2021 22:09
Letzter Beitrag: senseman
  Wert in EEprom schreiben über Node red shorty111 8 796 20.05.2021 20:39
Letzter Beitrag: Bitklopfer
  2x Serial Monitor betreiben RCudino 2 556 21.03.2021 11:47
Letzter Beitrag: RCudino
Question Alternative Serial.readString() xrzr91 5 1.037 12.03.2021 15:08
Letzter Beitrag: Tommy56
  Attiny85 Probleme mit Schleifen und Serial-Ausgabe lucki.luke 9 1.386 07.03.2021 20:55
Letzter Beitrag: Tommy56
  Sensor-Adressdaten mittels json von Webserver einlesen und hinterlegen MLuhmann 7 1.182 22.02.2021 18:56
Letzter Beitrag: Tommy56
  n Bytes über UDP empfangen Igom 5 673 21.02.2021 10:30
Letzter Beitrag: Tommy56

Gehe zu:


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