Lichtschranke mit Widerständen zeitverzögern

Ich würde das so machen:

/*   Beschaltung:
 *   Ein 100kOhm-Widerstand von A0 nach +5V
 *   Fuenf 1kOhm-Widerstaende in Reihe schalten zwischen +5V und GND
 *   den mittleren Anschluss vom Drehschalter an A0
 *   und die anderen fuenf Anschluesse der Reihe nach (bei GND anfangen) an die Widerstaende
 */
 
#define KeyboardIn A0  // die Widerstandsreihe liegt am Analoganschluss A0

const long KeyVals[] = {1000, 800, 600, 400, 200, 0}; // ungefaehre Analogwerte (bei 5 x 1kOhm, 5% Widerstaende)
const byte KeyChar[] = {0, 5, 4, 3, 2, 1};            // die dazugehoerigen Tasten oder Schaltstellungen bei einem Drehschalter
const byte KeyCount = sizeof(KeyChar);                // die Anzahl der Tasten (KeyChar ist ein Byte-Array, also reicht sizeof)
const byte tolerance = 100;                           // dieser Toleranzwert wird zu den obigen Werten addiert (die Widerstandswerte schwanken) 

byte key, prevkey;         // zum merken der aktuellen und der letzten Taste
uint32_t DebounceMillis;   // zum merken der Entprellzeit
uint16_t analogValue = 0;  // zum auslesen des Analogwertes

void setup() {
  Serial.begin(115200);
  Serial.println(F("Start"));
}

void loop() {
  if (millis() - DebounceMillis > 50) {
    DebounceMillis = millis();
    key = GetKey();
    if (key > 0 && key != prevkey) {
      prevkey = key;
      Serial.print(F("Analogwert: "));
      Serial.print(analogValue);
      Serial.print(F(" Taste: "));
      Serial.println(key);
    }
  }
}

byte GetKey() {
  analogValue = analogRead(KeyboardIn);
  for (byte i = 0; i < KeyCount; i++) {
    if (analogValue + tolerance >= KeyVals[i]) return KeyChar[i];
  }
}

"Schaltplan" im Anhang.