Frage zu if Anweisungen in Switch Case

Bestimmt könnt ihr mir helfen.

habe eine Switch case steuerung aufgebaut.
nun möchte ich If abfragen in einen case einbauen.
Das funktioniert aber nicht.
woran könnte das liegen?

Gruß Leo

Leo1980:
Das funktioniert aber nicht.
woran könnte das liegen?

Woher sollen wir das wissen, wir kennen deinen Sketch nicht.

Poste den bitte in Code-Tags. Schaltfläche </> oben links im Editor.

Das funktioniert aber nicht.
woran könnte das liegen?

Daran, dass du was falsch machst....

Ach ja der Sketch. :o

const int Taster = 18;            // Pin Nummer des Tasters
const int Led_Rot = 2;            // Pin Nummer der Ledfarbe Rot
const int Led_Gruen = 3;          // Pin Nummer der Ledfarbe Grün
const int Led_Blau = 4;           // Pin Nummer der Ledfarbe Blau

int Zaehler = 1;                  // Zähler für den aktuellen Programstand
int Helligkeit_Blau = 0;          // Helligkeit der LED
int Schwindung_Blau = 5;          // Anzahl der Zähler für die Schwindung
int Tasterstatus = LOW;           // aktuelles Signal vom Eingangspin
int TasterGedrueckt = 0;          // abfragen ob Taster gedrückt war
int Vorherigerstatus = LOW;       // vorheriges Signal vom Eingangspin
int EntprellZeit = 200;           // Zeit für Entprellung, anpassen!
int Langerdruck = 2000;           // Zeit für langen Tastendruck, anpassen!

unsigned long TasterZeit = 0;     // Zeit beim drücken des Tasters

void setup() {
  pinMode(Led_Blau, OUTPUT);       // LED Pin wird als Ausgang gesetzt
  pinMode(Led_Rot, OUTPUT);        // LED Pin wird als Ausgang gesetzt
  pinMode(Led_Gruen, OUTPUT);      // LED Pin wird als Ausgang gesetzt
  pinMode(Taster, INPUT);          // Taster Pin wird als Eingang gesetzt
}

void loop()
{
  Tasterstatus = digitalRead (Taster);         // Tasterstatusabfrage

  //Flankenwechsel erkennen
  if (Vorherigerstatus == LOW && Tasterstatus == HIGH)
  {
    TasterZeit = millis();      // aktualisiere TasterZeit
    TasterGedrueckt = 1;        // speichert, dass Taster gedrückt wurde
  }

  // Wenn die gewählte entprellZeit vergangen ist und der Taster gedrückt war...
  if ((millis() - TasterZeit > EntprellZeit) && TasterGedrueckt == 1)

  {
    //abhängig vom Zähler passende funktion aufrufen
    switch (Zaehler) {
      case 1:     Led_1();                  // Fall_1 Led Blau
        TasterGedrueckt = 0;      // setzt gedrückten Taster zurück
        break;
      case 2:     Led_2();                  // Fall_2 Led Rot
        TasterGedrueckt = 0;      // setzt gedrückten Taster zurück
        break;
      case 3:     Led_3();                  // Fall_3 Led Gruen
        TasterGedrueckt = 0;      // setzt gedrückten Taster zurück
        break;
      case 4:     Led_4();                  // Fall_4 Led Lila
        TasterGedrueckt = 0;      // setzt gedrückten Taster zurück
        break;
      case 5:     Led_5();                  // Fall_5 Led Türkis
        TasterGedrueckt = 0;      // setzt gedrückten Taster zurück
        break;
      case 6:     Led_6();                  // Fall_6 Led Gelb
        TasterGedrueckt = 0;      // setzt gedrückten Taster zurück
        break;
      case 7:     Led_7();                  // Fall_7 Led Weis
        TasterGedrueckt = 0;      // setzt gedrückten Taster zurück
        break;
      case 8:     Led_8();                  // Fall_8 Led Farbmisch
        TasterGedrueckt = 0;      // setzt gedrückten Taster zurück
        break;
      case 9:     Led_9();                  // Fall_9 Led Aus
        TasterGedrueckt = 0;      // setzt gedrückten Taster zurück
        break;
    }

    Zaehler++;    //Zähler erhöhen

    if (Zaehler == 10) Zaehler = 1;   //Zähler zurücksetzen
  }

  if (Vorherigerstatus != Tasterstatus && millis() - TasterZeit > Langerdruck) { // Taster losgelassen und war mind. 1 Sek. gedrueckt
    Led_9();
    TasterGedrueckt = 0;
    Zaehler = 10;
  }


  Vorherigerstatus = Tasterstatus;          //letzten Zustand merken

}

void Led_1()                        // Fall_1 Led Blau
{
  digitalWrite(Led_Blau, HIGH);     // LED Blau an
  digitalWrite(Led_Rot, LOW);       // LED Rot aus
  digitalWrite(Led_Gruen, LOW);     // LED Gruen aus
}


void Led_2()                        // Fall_2 Led Rot
{
  digitalWrite(Led_Blau, LOW);      // LED Blau aus
  digitalWrite(Led_Rot, HIGH);      // LED Rot an
  digitalWrite(Led_Gruen, LOW);     // LED Gruen aus
}

void Led_3()                        // Fall_3 Led Grün
{
  digitalWrite(Led_Blau, LOW);      // LED Blau aus
  digitalWrite(Led_Rot, LOW);       // LED Rot aus
  digitalWrite(Led_Gruen, HIGH);    // LED Gruen an
}

void Led_4()                        // Fall_4 Led Lila
{
  digitalWrite(Led_Blau, HIGH);     // LED Blau an
  digitalWrite(Led_Rot, HIGH);      // LED Rot an
  digitalWrite(Led_Gruen, LOW);     // LED Gruen aus
}

void Led_5()                        // Fall_5 Led Türkis
{
  digitalWrite(Led_Blau, HIGH);     // LED Blau an
  digitalWrite(Led_Rot, LOW);       // LED Rot aus
  digitalWrite(Led_Gruen, HIGH);    // LED Gruen an
}

void Led_6()                        // Fall_6 Led Gelb
{
  digitalWrite(Led_Blau, LOW);      // LED Blau aus
  digitalWrite(Led_Rot, HIGH);      // LED Rot an
  digitalWrite(Led_Gruen, HIGH);    // LED Gruen an
}

void Led_7()                        // Fall_7 Led Weis
{
  digitalWrite(Led_Blau, HIGH);     // LED Blau an
  digitalWrite(Led_Rot, HIGH);      // LED Rot an
  digitalWrite(Led_Gruen, HIGH);    // LED Gruen an
}

void Led_8()                        // Fall_8 Led FAde
{
  digitalWrite(Led_Rot, LOW);                           // LED Rot aus
  digitalWrite(Led_Gruen, LOW);                         // LED Gruen aus
  
  analogWrite(Led_Blau, Helligkeit_Blau);               // setzt die Helligkeit auf LED-Blau

  Helligkeit_Blau = Helligkeit_Blau + Schwindung_Blau;  // Ändert die Helligkeit


  if (Helligkeit_Blau <= 0 || Helligkeit_Blau >= 255) { // Richtungsänderung der Schwindung
    Schwindung_Blau = -Schwindung_Blau;
  }

  delay(4);                                             // warte 4 Milisekunden
}

void Led_9()                        // Fall_9 Led aus
{
  digitalWrite(Led_Blau, LOW);      // LED Blau aus
  digitalWrite(Led_Rot, LOW);       // LED Rot aus
  digitalWrite(Led_Gruen, LOW);     // LED Gruen aus
}

Evtl. musst du mit { } einen Code-Block erzeugen

case 1:
  {
     ....
  }
  break;

ich könnte K......

leider helfe { und } auch nicht.

Aber danke für den Tip

Wo in Deinem Sketch ist denn das if im Switch, das Dir Probleme bereitet?
Ich sehe kein if im switch.

Gruß Tommy

das ist der Teil der aus case_8 generiert

void Led_8()                        // Fall_8 Led FAde
{
  digitalWrite(Led_Rot, LOW);                           // LED Rot aus
  digitalWrite(Led_Gruen, LOW);                         // LED Gruen aus
 
  analogWrite(Led_Blau, Helligkeit_Blau);               // setzt die Helligkeit auf LED-Blau

  Helligkeit_Blau = Helligkeit_Blau + Schwindung_Blau;  // Ändert die Helligkeit


  if (Helligkeit_Blau <= 0 || Helligkeit_Blau >= 255) { // Richtungsänderung der Schwindung
    Schwindung_Blau = -Schwindung_Blau;
  }

  delay(4);                                             // warte 4 Milisekunden
}

funktioniert allein in void loop super nur in void Led_8 nicht

Beschreibe doch mal, wass da passieren soll.
Ich vermute, die Durchlaufzeit ist zu kurz bzw. zu schnell.

Der Thread Titel ist aber schlecht gewählt. Das hat nichts mit der switch-Anweisung zu tun

Also es sollen mit einem Taster alle Farbzustände der RGB-Leiste durchgeschaltet werden.
Vielleicht später noch Farbvarianten durch verschiedene Helligkeiten der LEDs.

Dann möchte ich noch ein paar Modis zufügen wie Flash und Fade usw.

Vom Prinzip so wie man ín jedem Baumarkt solche Lichtleisten kaufen kann.

Es ist allerding für ein beleuchtetes Namenschild das an einer 12v KfZ-Steckdose betrieben wird.

Das ganze soll von einem Nano erledigt werden.

Momentan wird entwickelt an einem AtMega2560

@HotSystems

an der Stelle im Sketch sollte die Farbe blau heller werden und wieder dunkler