Switch(case) Problem

ich habe gestern wieder mal nach langer Zeit mit programmieren angefangen. Ins besondere mit NeoPixel.

In den Sketches gibt es ja einige Beispiele die auch gut funktionieren. Jedoch ist mir bei einen auf gefallen das das mit Switch(case) nicht richtig funktioniert. Ich meine damit das der erste "case" egal ob ich ihn jetzt "case 0" oder "case 1" benenne, er wird nicht "abgespielt".

Hat vielleicht jemand das gleiche Problem schon mal gehabt? Hab jetzt schon einige Zeit gegooglet und nichts spezielles gefunden dazu.

Würde diese Funktion schon gerne nutzten da es recht einfach erscheint.
Der Code ist vielleicht noch nicht der schönste aber er ist ja auch erst am Anfang.

#include <Adafruit_NeoPixel.h>

#define PIXEL_PIN    3
 
#define STATE_PIN    4
#define counter_PIN   5
#define ENTER_PIN    6
#define PIXEL_COUNT 16

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);

bool oldcounter = LOW;
bool newcounter = LOW;
bool oldENTER = LOW;
bool newENTER = LOW;

int ModeType = 1;
int GameType = 0;
int player = 2;

long lastDebounceTime = 0;  // the last time the output pin was toggled
long debounceDelay = 50;



void setup() {

  pinMode(STATE_PIN, INPUT);
  pinMode(counter_PIN, INPUT);
  pinMode(ENTER_PIN, INPUT);

  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  Serial.begin(9600);
}

void loop() {
 
  //ENTER BUTTON   
  int reading = digitalRead(ENTER_PIN);

  if (reading != oldENTER) {
    lastDebounceTime = millis();
  }
  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != newENTER) {
      newENTER = reading;
      if (newENTER == HIGH) {
        ModeType++;
        if(ModeType > 2){
          ModeType=2;
        }
        StartMode(ModeType);
      }
    }
  }
  oldENTER = reading;


  // +1 Button
  reading = digitalRead(counter_PIN);

  if (reading != oldcounter) {
    lastDebounceTime = millis();
  }
  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != newcounter) {
      newcounter = reading;
      if (newcounter == HIGH) {
        if(ModeType == 0){
        GameType++;
        if(GameType > 3){
          GameType=0;
   //    StartGame(GameType);
        }
      }
      }
      else if(ModeType == 1){
        player++;
        if(player >= 12){
          player=2;
      }
    }
  }
  }
  oldcounter = reading;
  

  delay(50);
  Serial.print("ModeType ");
  Serial.print(ModeType);
  Serial.print("  GameType ");
  Serial.print(GameType);
  Serial.print("  player ");
  Serial.print(player);
  Serial.println("  NEW ");

}
void StartMode(int i){
  switch(i){
    case 1: ChangeGAME(strip.Color(0, 0, 255), 50);
    break; 
    case 2: ChangePLAYER(strip.Color(0, 255, 0), 50);
    break;/*
    case 2: StartGame();
    break;*/
  }  
}

void ChangeGAME(uint32_t c, uint8_t wait) {
   for(int i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
  delay(wait);
  }
}


void ChangePLAYER(uint32_t c, uint8_t wait) {
   for(int i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
   delay(50);
}
}

void StartGame(int i){
  delay(50);
}

Weil du erst inkrementierst und danach aufrufst. So fängst du mit 1 an, machst +1 und rufst so mit 2 auf.