Problema con condizione multipla di IF - AIUTO !

Salve,
Mettendo insieme un po di roba qua e la ho tentato di scrivere questo pseudo coso.
So che non è un aiuto (almeno non come dovrei darlo), ma credo possa essere abbastanza comprensibile. Non so se ho capito bene il suo scopo, ma per quanto ho capito eccolo. ATTENZIONE, da solo non funziona, ha bisogno di un sistema accensione/spegnimento led (ammesso che con esso funzioni)

const byte NUMEROLED = 4;
const byte LED [NUMEROLED] = {2, 3, 4, 5};
int led_accesi = 0;
const byte PINTASTO = 6;
byte pressione;
void setup()
{
  Serial.begin (9600);
  Serial.println F("H. W.");
  for (byte i = 0; i < NUMEROLED; i++)
  {
    pinMode (LED [i], OUTPUT);
  }
  pinMode (13, OUTPUT);
  //Primo test led, non facciamoci mancare nulla
  for (byte i = 0; i < NUMEROLED; i++)
  {
    digitalWrite  (LED [i], HIGH);
  }
  delay (1000);
  for (byte i = 0; i < NUMEROLED; i++)
  {
    digitalWrite  (LED [i], LOW);
  }
  pinMode (PINTASTO, INPUT_PULLUP);
  //Controllo tasto
  Serial.println F("Premere tasto e vedere se si accende il pin 13");
  unsigned long aspetta=millis();
  while (millis()-aspetta<10000)
  {
    if (LeggoTasto (PINTASTO))
    {
      digitalWrite (13, HIGH);
    }
  }
  digitalWrite (13, LOW);
  Serial.println F("Controlli cessati, inizio loop");
}

void loop()
{
  if (! digitalRead (PINTASTO))
  {
    pressione = LeggoTasto (PINTASTO);
    //La funzione LeggoTasto fa un debounce software. è eliminabile inserendo in questa if {} il contenuto della successiva.
    //Per eliminarla è necessario O un debounce (anti rimbalzo) hardwere (che non so fare) O accettare i rimbalzi
  }
  if (pressione)
  {
    //Sottinteso !=0
    pressione = 2; //Per non dimenticarcelo, tanto il controllo if() viene eseguito solo all0inizio
    led_accesi = 0;
    for (byte i = 0; i < NUMEROLED; i++)
    {
      led_accesi = led_accesi * 10 + digitalRead (LED [i]);
      //Numero massimo led =5.
    }
    Conseguenza (led_accesi);
    led_accesi = 0;
    if (pressione == 2)
    {
      pressione = AttesaRilascio (PINTASTO);
    }
  }
}
byte LeggoTasto (byte pin)
{
  unsigned long partenza = millis();
  while (millis() - partenza < 40)
  {
    if (digitalRead (pin))
    {
      return (0);
    }
  }
  return (1);
}
void Conseguenza (int causa)
{
  Serial.println (causa);
  //Riempire con quello che serve fare.
  //causa in questo caso è porta scritti gli stati dei led.
  //Si comincia da primo pin dell'array LED al posto più a sinistra per andare in ordine.
  //Le cifre sono 0 se spento e 1 se acceso.
  //Si può quindi qui usare una switch case su causa, terminando ogni chase con return; e ricordandoci che la funzione è void
  return;
}
byte AttesaRilascio (byte pin)
{
  while (!digitalRead (pin))
  {

  }
  return (0);
}