QUATTROLED, switch/case non funziona

Vorrei tanto sapere dove sbaglio....???? Ho inserito l'antirimbalzo copiando da quello negli esempi dell'IDE e sembra funzionare ma quando passo il valore di statosonde a switch/case mi ritrovo tutte le uscite attive anziche' una alla volta...

Ogni dritta e' ben accetta........

/*   QUATTROLED DRIVER
  Questo sketch permette di pilotare un led su quattro con regolazione pwm,
  ovvero le quattro uscite si accenderanno una alla volta con intensita' stabilita dal potenziometro
  a seconda del valore digitale assunto in ingresso da due sonde.
  by zudamix@virgilio.it
  PIN Analogico 0 - potenziometro leds
  PIN 5 6 10 e 11- pilota leds 1-4
*/

// assegno nome ai pin utilizzati
int PotAcc = 0;// potenziometro leds
int outled1 = 5;      // 
int outled2 = 6;      // 
int outled3 = 10;     // 
int outled4 = 11;     // 

//-----------------Antirimbalzo Sonde----------------------------------
// constants won't change. They're used here to
// set pin numbers:
const int S1buttonPin = 2;    // the number of the pushbutton pin// sonda PMS pistone X
const int S1ledPin = 7;      // the number of the LED pin
const int S2buttonPin = 4;    // the number of the pushbutton pin// sonda PMS pistone X
const int S2ledPin = 8;      // the number of the LED pin

// Variables will change:
int ledState1 = HIGH;         // the current state of the output pin
int buttonState1;             // the current reading from the input pin
int lastButtonState1 = LOW;   // the previous reading from the input pin
int ledState2 = HIGH;         // the current state of the output pin
int buttonState2;             // the current reading from the input pin
int lastButtonState2 = LOW;   // the previous reading from the input pin


// the following variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long lastDebounceTime1 = 0;  // the last time the output pin was toggled
long lastDebounceTime2 = 0;
long debounceDelay1 = 50;    // the debounce time; increase if the output flickers
long debounceDelay2 = 50;
//----------------Fine Antirimbalzo Sonde---------------------

void setup() {
  
  // inizializzazione dei pin di input e output necessari
  pinMode(S1buttonPin, INPUT);
  pinMode(S1ledPin, OUTPUT);
  pinMode(S2buttonPin, INPUT);
  pinMode(S2ledPin, OUTPUT);
  pinMode(PotAcc, INPUT);
  pinMode(outled1, OUTPUT);
  pinMode(outled2, OUTPUT);
  pinMode(outled3, OUTPUT);
  pinMode(outled4, OUTPUT);
  
  
  // set initial LED state
  digitalWrite(S1ledPin, ledState1);
  digitalWrite(S2ledPin, ledState2);

}

void loop() {
  
  //Lettura e mappatura potenziometro per taratura
  int PotAccValue = analogRead(PotAcc);
  int PotAccMapp = map(PotAccValue, 0, 1023, 0, 255); //Mappatura potenziometro leds
  delay(20);
  int statosonde = buttonState2*10 + buttonState1;  //definizione accorpamento sonde
  delay(20);
  
  //-----------------Antirimbalzo Sonde----------------------------------
  // read the state of the switch into a local variable:
  int reading1 = digitalRead(S1buttonPin);
  int reading2 = digitalRead(S2buttonPin);
  // check to see if you just pressed the button
  // (i.e. the input went from LOW to HIGH),  and you've waited
  // long enough since the last press to ignore any noise:

  // If the switch changed, due to noise or pressing:
  if (reading1 != lastButtonState1) {
    // reset the debouncing timer
    lastDebounceTime1 = millis();
  }
  if (reading2 != lastButtonState2) {
    // reset the debouncing timer
    lastDebounceTime2 = millis();
  }
  if ((millis() - lastDebounceTime1) > debounceDelay1) {
    // whatever the reading is at, it's been there for longer
    // than the debounce delay, so take it as the actual current state:

    // if the button state has changed:
    if (reading1 != buttonState1) {
      buttonState1 = reading1;

      // only toggle the LED if the new button state is HIGH
      if (buttonState1 == HIGH) {
        ledState1 = !ledState1;
      }
    }
  }
  if ((millis() - lastDebounceTime2) > debounceDelay2) {
    // whatever the reading is at, it's been there for longer
    // than the debounce delay, so take it as the actual current state:

    // if the button state has changed:
    if (reading2 != buttonState2) {
      buttonState2 = reading2;

      // only toggle the LED if the new button state is HIGH
      if (buttonState2 == HIGH) {
        ledState2 = !ledState2;
      }
    }
  }

  // set the LED:
  digitalWrite(S1ledPin, ledState1);

  // save the reading.  Next time through the loop,
  // it'll be the lastButtonState:
  lastButtonState1 = reading1;

  // set the LED:
  digitalWrite(S2ledPin, ledState2);

  // save the reading.  Next time through the loop,
  // it'll be the lastButtonState:
  lastButtonState2 = reading2;
  
//----------------Fine Antirimbalzo Sonde---------------------

//accensione led secondo stato sonde
switch(statosonde){
case 0:
    analogWrite(outled1, PotAccMapp);
    analogWrite(outled2, 0);
    analogWrite(outled3, 0);
    analogWrite(outled4, 0);
    delay(20);
break;
case 1:
    analogWrite(outled1, 0);
    analogWrite(outled2, PotAccMapp);
    analogWrite(outled3, 0);
    analogWrite(outled4, 0);
    delay(20);
break;
case 10:
   
   analogWrite(outled1, 0);
   analogWrite(outled2, 0);
   analogWrite(outled3, PotAccMapp);
   analogWrite(outled4, 0);
   delay(20);
break;
case 11:
   analogWrite(outled1, 0);
   analogWrite(outled2, 0);
   analogWrite(outled3, 0);
   analogWrite(outled4, PotAccMapp);
   delay(20);

break;

}//fineswitch

  int led1 = analogRead(outled1);
  int led2 = analogRead(outled2);
  int led3 = analogRead(outled3);
  int led4 = analogRead(outled4);
  delay(20);
  
  //Stampa su seriale delle entrate/uscite

  Serial.begin(9600);
  Serial.print("PotAccMapp:");
  Serial.println(PotAccMapp);
  Serial.print("buttonState1:");
  Serial.println(buttonState1);
  Serial.print("led1:");
  Serial.println(led1);
  Serial.print("led2:");
  Serial.println(led2);
  Serial.print("buttonState2:");
  Serial.println(buttonState2);
  Serial.print("led3:");
  Serial.println(led3);
  Serial.print("led4:");
  Serial.println(led4);
  Serial.print("statosonde:");
  Serial.println(statosonde);
}

Spiegare che problema riscontri, come l'hai rilevato e in che condizione aiuterebbe molto.

In parole povere analizzo le uscite tramite la seriale e verifico che in corrispondenza dei vari stati delle sonde si attivi esclusivamente il led interessato ma questa situazione non si presenta. Capita invece che tutti i led si accendono contemporaneamente, la regolazione pwm funziona.

Mi provo come veggente: Hai messo resistenze pullup o pulldown?

analogRead(outled1); non legge gli stessi pin che scrivi con analogWrite(outled1, 0);

Ciao Uwe