PWM via Taster

Serial.println(digitalRead(bytLevelLuefterspeed));  
  
  if (analogRead(bytLuefterspeed) == 0){
    bytLuefterspeed = 0;
  }
  if (analogRead(bytLuefterspeed) == 1){
    bytLuefterspeed = 70;
  }
  if (analogRead(bytLuefterspeed) == 2){
    bytLuefterspeed = 150;
  }
  if (analogRead(bytLuefterspeed) == 3){
    bytLuefterspeed = 255;
  }
  analogWrite(bytPWMLuefter, analogRead(bytLuefterspeed));

Du hast ein Verständnisproblem.

bytLevelLuefterspeed ist die Variable die sagt welche der 3 Geschwindigkeitsstufen aktiv ist.
digitalRead(bytLevelLuefterspeed) ergibt keinen Sinn. Du liest den Zustand der Pins 0-3 und hat gar nichts mit der Steuerung zu tun.
analogRead(bytLuefterspeed) Du liest den Zustand der Analogen Eingänge A0 bis A3. Da diese unbeschaltet sind, liest Du Störungen die in de Luft sind; sicher aber keine Wete Zwischen 0 und 3. So wird der PWM-Wert bytLuefterspeed nie gesetzt.
analogWrite(bytPWMLuefter, analogRead(bytLuefterspeed)); Hier setzt Du den PWM-Ausgang 3 auf einen Zufälligen Wert. Genaugesagt verwendest Du die unteren 8 bit eines 10 bit Wertes. Das ist in diesem Fall egal.

Du mußt zuerst den Taster entprellen, dann so einlesen daß Du nur auf den Wechsel von nicht gedrückt zu gedrückt auswertest.

Dann den PWM-Ausgang Schaltest. Bei niedrigen PWM Werten kann der Lüfter nicht anlaufen. also 2 Sekunden vollgas und dann auf den gewollten Wert zurückfahren.

Grüße Uwe