drumpad polifonico + leds

Estamos construyendo una bateria basada en sensores piezoelectricos. Cuando se detecta un golpe, se enciende un led duarnte 200ms. Esto funciona bien usando delay(), pero nos deja sin polifonía, por el tema del no-multithreading. Hemos intentado usar millis() en lugar de delay(), pero no nos aclaramos…

el codigo:

int ledPin = 2;
int ledPin2 = 3;
int THRESHOLD = 30;  
int t = 0;         
int previousMillis=0;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  }

void press(int n){
  int val = analogRead(n-1); //used n-1 because we have connected piezos to analog input 0 and forth
    if( val >THRESHOLD ) {
      t = 0;
      
      while(analogRead(n-1) > THRESHOLD) {
            t++;
       } 
     
       if(t>60) { 
         for(int i=0; i<1; i++){    //when knock is detected, assign previousMillis to millis, just once (?¿?¿?)
           previousMillis = millis(); // i don't really think this is well done...
         }
         digitalWrite(n+1, HIGH);
         if (millis() - previousMillis > 200){  //it worked ok using delay(200)... :_(
           digitalWrite(n+1, LOW);
         }
       }
    }
}

void loop() {
  press(1);
  press(2);
}

He estado horas (todo el dia!) si encontrar una solución… He probado un monton de combinaciones, pero no lo he hecho funcionar :frowning:
Soy un poco patata con esto de la programación, a ver si alguien me puede dar alguna pista… se que hago algo mal pero no se que!

muchas gracias!