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
Question Serial.print - Einfluss auf Code Natsnok 4 235 17.01.2021 16:48
Letzter Beitrag: Natsnok
  Ausgabe auf Serial Monitor vlakvark 8 415 31.12.2020 15:25
Letzter Beitrag: MicroBahner
  Arrays und Serial Arduino DMX Master 38 965 22.12.2020 23:40
Letzter Beitrag: Arduino DMX Master
  Servo im Programm über einen Taster betätigen CB2311 26 1.068 08.12.2020 19:21
Letzter Beitrag: Tommy56
  RC-Signal mit Attiny85 einlesen chcs 4 326 08.12.2020 08:51
Letzter Beitrag: hotsystems
  Sensordaten über lokales Netzwerk speichern Dave298 10 758 02.12.2020 22:17
Letzter Beitrag: hotsystems
  Variable über serielle Eingabe befüllen ? Foto-Ralf 23 1.221 21.11.2020 11:23
Letzter Beitrag: Tommy56
  Motor über L298N Bridge drehen funktioniert nicht mt14516 3 419 10.11.2020 21:04
Letzter Beitrag: mt14516
  Schwimmerschalter einlesen (Wasserkraftwerkmodell) bobby85cr 29 2.043 18.09.2020 07:56
Letzter Beitrag: hotsystems
  Probleme mit Wert zwischen Messbereichen von bis juergen001 6 559 07.09.2020 14:49
Letzter Beitrag: juergen001

Gehe zu:


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