Go Down

Topic: Case-Werte in einer switch-schleife durch Variable ersetzen (Read 179 times) previous topic - next topic

roetty

Hallo zusammen,

ich hoffe meine Überschrift trifft in etwa die Beschreibung meines Problems.

Vorweg... ich bin hier neu im Forum, habe mich vor ca. 20 Jahren das letzte mal mit Programmierung beschäftigt und möchte nun wieder einem alten Hobby nachgehen. Leider ist in 20 Jahren doch einiges an Wissen auf der Strecke geblieben :-(.

Mein Problem ist wahrscheinlich so banal das ich mir am Ende an den Kopf fassen werde, aber ich komme momentan leider einfach nicht drauf:


Situation:
Ich möchte für meine Stepper-Steuerung die Werte meiner IR-Fernbedienung in einer Switch-Schleife auswerten und verarbeiten. Es funktioniert auch alles bestens! Jedoch möchte ich nun die Werte in der Klammer von case durch Variablen ersetzen die ich zuvor definiert habe.



switch(results.value){
     
      // Key5  --> Home Position

      case (16726215) : <-- Der Wert 16726215 soll durch die Var "Key5" ersetzt werden

      MotHori.moveTo(Home_Pos_H); 
      MotHori.runToPosition();
      MotVert.moveTo(Home_Pos_V); 
      MotVert.runToPosition();
      Serial.println(MotHori.currentPosition());       
      delay(1);
      break;

usw.


Für den Wert 16726215 habe ich im Kopf des Sketches die Var deeklariert:

--> const int Key5 = 16726215;

Setze ich diese nun bei case ein passiert nichts:

--> case (Key5) :
oder
--> case Key5 :


geht beides nicht... beim Kompilieren erhalte ich keine Fehler... was mache ich verkehrt?


Ich freue mich auf Euer Feedback :-)


VG aus dem Münsterland
Roetty

HotSystems

Der Fehler liegt vermutlich in der Größe deiner Variablen.
Setze da mal long ein.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

roetty

Hallo Ihr 2,

vielen Dank :-) Ich habe Dieters Hinweis umgesetzt und es funktionier  :) .

vorher:  const int Key1 = 16724175;

Nachher: long const int Key1 = 16724175;


@Peter: Vielen Dank für den Hinweis. Das es Konstanten sein müssen hat mir der Compiler mit seiner Fehlermeldung schon verraten.

Problem gelöst!! Vielen Dank :-)

VG Rötty


MicroBahner

Mein Hinweis, dass es nur mit #define geht, war falsch, Variable, die als const deklariert sind, akzeptiert der Compiler auch. Meinen Post hatte ich deshalb gelöscht, war aber schon zu spät, Du hattest schon geantwortet.

Edit: dass switch keine Schleife ist, stimmte aber ;)
Gruß, Franz-Peter

HotSystems

Das hier ist schon sehr seltsam.

Nachher: long const int Key1 = 16724175;

da solltest du besser "const long Key1 = 16724175;"
schreiben

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

combie

Quote
Code: [Select]
long const int Key1 = 16724175;
Aus meiner Sicht:
Ob
long const int Key1 = 16724175;
oder
const long Key1 = 16724175;
oder
signed long const int Key1 = 16724175;
ist relativ egal...

Eine substanzielle Verschärfung/Verbesserung wäre:

Code: [Select]
const long Key1  {16724175};

Je größer der Dachschaden, um besser der Blick auf die Sterne.

roetty

Ist ja nett :-). Sooo viele Gedanken zu meinem Post... TOP!!

Ich habs jetzt so geschrieben: const long Key5 = 16726215;

Und funktioniert. Vielen Dank noch mal

VG Rötty

Go Up