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
Unterprogramme, if vergleich >9 ?
10.08.2014, 20:12
Beitrag #1
Unterprogramme, if vergleich >9 ?
Hey Leute,

Ich hab mir ein Rohprogramm gemacht mit 10 Unterprogrammen,
mein Problem dabei ist das ich die Unterprogramme 1-9 einwandfrei über die
Serielle Schnittstelle auswählen kann ( Zahl : 1-9).
Aber das "Unterprogramm10" reagiert nicht.
Erst wenn ich anstatt 10 bei meinen "if vergleichen" ein 'a' verwende funktioniert es.

Es muss doch eine Möglichkeit geben das mit einer dez "10" auszuwählen oder?

Ist es auch möglich ganze Worte zu vergleichen?

z.b. if (empfangen == 'main') {
}

Oder ist so etwas nicht möglich?

Hier mein Rohprogramm:

Code:
int empfangen;                                  





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

}




void Unterprogramm1 () {                        // Unterprogramm 1

Serial.println("Unterprogramm 1");
  
}

void Unterprogramm2 () {                        // Unterprogramm 2

Serial.println("Unterprogramm 2");

  
}

void Unterprogramm3 () {                        // Unterprogramm 3

Serial.println("Unterprogramm 3");


}

void Unterprogramm4 () {                        // Unterprogramm 4

Serial.println("Unterprogramm 4");

  
}

void Unterprogramm5 () {                        // Unterprogramm 5

Serial.println("Unterprogramm 5");

  
}

void Unterprogramm6 () {                        // Unterprogramm 6

Serial.println("Unterprogramm 6");

  
}

void Unterprogramm7 () {                        // Unterprogramm 7

Serial.println("Unterprogramm 7");

  
}

void Unterprogramm8 () {                        // Unterprogramm 8

Serial.println("Unterprogramm 8");

  
}

void Unterprogramm9 () {                        // Unterprogramm 9

Serial.println("Unterprogramm 9");

  
}

void Unterprogramm10 () {                       // Unterprogramm 10

Serial.println("Unterprogramm 10");

  
}


void loop () {                                  

  if (Serial.available() > 0) {


      empfangen = Serial.read();
  
    switch (empfangen);
    
  
  
   if (empfangen == '1') {
    
       Unterprogramm1 ();                            // Aufruf des: Unterprogramm 1

     }
  
  
   if (empfangen == '2') {
    
       Unterprogramm2 ();                            // Aufruf des: Unterprogramm 2

     }
  
  
   if (empfangen == '3') {
    
       Unterprogramm3 ();                            // Aufruf des: Unterprogramm 3

     }
  
  
   if (empfangen == '4') {
    
       Unterprogramm4 ();                            // Aufruf des: Unterprogramm 4

     }
  
  
   if (empfangen == '5') {
    
       Unterprogramm5 ();                            // Aufruf des: Unterprogramm 5

     }
  
  
   if (empfangen == '6') {
    
       Unterprogramm6 ();                            // Aufruf des: Unterprogramm 6

     }
  
  
   if (empfangen == '7') {
    
       Unterprogramm7 ();                            // Aufruf des: Unterprogramm 7

     }
  
  
   if (empfangen == '8') {
    
       Unterprogramm8 ();                            // Aufruf des: Unterprogramm 8

     }
  
  
   if (empfangen == '9') {
    
       Unterprogramm9 ();                            // Aufruf des: Unterprogramm 9

     }
  
  
   if (empfangen == 'a') {
    
       Unterprogramm10 ();                           // Aufruf des: Unterprogramm 10

     }
   }
}


Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.08.2014, 20:27
Beitrag #2
RE: Unterprogramme, if vergleich >9 ?
(10.08.2014 20:12)Marc2014 schrieb:  Hey Leute,

Ich hab mir ein Rohprogramm gemacht mit 10 Unterprogrammen,
mein Problem dabei ist das ich die Unterprogramme 1-9 einwandfrei über die
Serielle Schnittstelle auswählen kann ( Zahl : 1-9).
Aber das "Unterprogramm10" reagiert nicht.
Erst wenn ich anstatt 10 bei meinen "if vergleichen" ein 'a' verwende funktioniert es.

Es muss doch eine Möglichkeit geben das mit einer dez "10" auszuwählen oder?

Ist es auch möglich ganze Worte zu vergleichen?

z.b. if (empfangen == 'main') {
}


Oder ist so etwas nicht möglich?

Hier mein Rohprogramm:

Code:
int empfangen;                                  





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

}




void Unterprogramm1 () {                        // Unterprogramm 1

Serial.println("Unterprogramm 1");
  
}

void Unterprogramm2 () {                        // Unterprogramm 2

Serial.println("Unterprogramm 2");

  
}

void Unterprogramm3 () {                        // Unterprogramm 3

Serial.println("Unterprogramm 3");


}

void Unterprogramm4 () {                        // Unterprogramm 4

Serial.println("Unterprogramm 4");

  
}

void Unterprogramm5 () {                        // Unterprogramm 5

Serial.println("Unterprogramm 5");

  
}

void Unterprogramm6 () {                        // Unterprogramm 6

Serial.println("Unterprogramm 6");

  
}

void Unterprogramm7 () {                        // Unterprogramm 7

Serial.println("Unterprogramm 7");

  
}

void Unterprogramm8 () {                        // Unterprogramm 8

Serial.println("Unterprogramm 8");

  
}

void Unterprogramm9 () {                        // Unterprogramm 9

Serial.println("Unterprogramm 9");

  
}

void Unterprogramm10 () {                       // Unterprogramm 10

Serial.println("Unterprogramm 10");

  
}


void loop () {                                  

  if (Serial.available() > 0) {


      empfangen = Serial.read();
  
    switch (empfangen);
    
  
  
   if (empfangen == '1') {
    
       Unterprogramm1 ();                            // Aufruf des: Unterprogramm 1

     }
  
  
   if (empfangen == '2') {
    
       Unterprogramm2 ();                            // Aufruf des: Unterprogramm 2

     }
  
  
   if (empfangen == '3') {
    
       Unterprogramm3 ();                            // Aufruf des: Unterprogramm 3

     }
  
  
   if (empfangen == '4') {
    
       Unterprogramm4 ();                            // Aufruf des: Unterprogramm 4

     }
  
  
   if (empfangen == '5') {
    
       Unterprogramm5 ();                            // Aufruf des: Unterprogramm 5

     }
  
  
   if (empfangen == '6') {
    
       Unterprogramm6 ();                            // Aufruf des: Unterprogramm 6

     }
  
  
   if (empfangen == '7') {
    
       Unterprogramm7 ();                            // Aufruf des: Unterprogramm 7

     }
  
  
   if (empfangen == '8') {
    
       Unterprogramm8 ();                            // Aufruf des: Unterprogramm 8

     }
  
  
   if (empfangen == '9') {
    
       Unterprogramm9 ();                            // Aufruf des: Unterprogramm 9

     }
  
  
   if (empfangen == 'a') {
    
       Unterprogramm10 ();                           // Aufruf des: Unterprogramm 10

     }
   }
}


Gruß Marc

Hallo Marc,
also das liegt daran das du nur ein Zeichen einliest. switch case kann übrigens auch nur per integer Wert eine Auswahl treffen. Also so kannst du mehrstellige Zahlen/Texte einlesen:
Code:
// Variable
char zbuff;          // Eingabe Zeichenpuffer
String command = ""; // GesamtString von SerialRead

Code:
command = "";
    while (Serial.available() > 0)
    {
    zbuff = Serial.read();
    delay(10);     // ohne delay werden nur einzelne Zeichen gelesen
    Serial.print(zbuff);
    command.concat(zbuff);
    }
Dann mußte allerdings die einzelnen Unterprogramme per if Abfrage aufrufen oder die Eingabe auf einen Zahlenwert umwandeln.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.08.2014, 16:45
Beitrag #3
RE: Unterprogramme, if vergleich >9 ?
Vielen Dank @ Bitklopfer Wink

Es funktioniert super !

Jetzt kann ich ganze Befehle (Wörter) vergleichen und nicht nur Zahlen 1-9 oder
a-z...


Nochmal vielen Dank Smile

Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Problem mit Array-Muster-Vergleich HaWe 5 890 09.05.2015 13:18
Letzter Beitrag: HaWe
  Codegröße im Vergleich Wampo 5 648 30.01.2015 20:32
Letzter Beitrag: Thorsten Pferdekämper
  Suche Beispiel für je einmal ausgeführte Unterprogramme mit Aufruf durch Tasten Marlox 42 6.601 28.12.2014 22:49
Letzter Beitrag: Marlox
  Unterprogramme, aktiv / inaktiv per Serielle, 3 von 4 Marc2014 4 1.142 17.08.2014 21:07
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


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