Timing per led

Buongiorno, sono nuovo del forum ma non nuovissimo di arduino. Sono progettista industriale e lo uso per alcune prototipazioni eventuali con ottimi risultati.
Ho da poco incominciato un progetto che prevede una striscia led (fatta con singoli led, lo so incasinato ma era meglio per l'ardware a cui devo applicare il tutto) che possa venire controllata con potenziometro. Fino a qua tutto semplice (ci sono anche diversi esempi online che mettono a tacere ogni eventuale dubbio).
Il problema è quando cerco di implementare una funzione in più.

Voglio sì che il potenziometro gestisca la striscia led, ma voglio anche che dopo un tempo t=1000 (esempio) in cui il potenziometro non viene toccato, la striscia led si spegne totalmente. Una volta che il potenziometro viene mosso, la striscia led si riaccende conseguentemente.

di seguito il codice iniziale che è semplice e funziona:

const int analogPin = A0;   // pin potenziometro
const int ledCount = 10;    // numero led

int ledPins[] = {
 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
};

void setup() {
 for (int thisLed = 0; thisLed < ledCount; thisLed++) {
   pinMode(ledPins[thisLed], OUTPUT);
 }
}

void loop() {
 int sensorReading = analogRead(analogPin);  //lettura
 int ledLevel = map(sensorReading, 0, 1023, 0, ledCount); //mappatura

 for (int thisLed = 0; thisLed < ledCount; thisLed++) {
   if (thisLed < ledLevel) {
     digitalWrite(ledPins[thisLed], HIGH);
   }
   else {
     digitalWrite(ledPins[thisLed], LOW);
   }
 }
}

ora lo sketch in cui ho cercato di implementare una gestione del tempo, anche se con scarso risultato:

const int analogPin = A0;   // pin potenziometro
const int ledCount = 10;    // numero led striscia
int old_poten;


int ledPins[] = {
 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
};

int shuttime = 1000;


void setup() {
 for (int thisLed = 0; thisLed < ledCount; thisLed++) {
   pinMode(ledPins[thisLed], OUTPUT);
 }
}

void loop() {
 int sensorReading = analogRead(analogPin); //leggo
 int ledLevel = map(sensorReading, 0, 1023, 0, ledCount); //mappo

 int poten = map(analogRead(analogPin), 0, 1023, 0, 255);
 for (int thisLed = 0; thisLed < ledCount; thisLed++) {
   if (thisLed < ledLevel) {
     digitalWrite(ledPins[thisLed], HIGH);
   }
   // turn off all pins higher than the ledLevel:
   else {
     digitalWrite(ledPins[thisLed], LOW);
   }
   // delay (1000);
   //digitalWrite (ledPins, LOW);
 }
 delay(10);
}

Non capisco esattamente come poter correttamente implementare la cosa, penso che la risposta sia l'uso del millis ma tale argomento è un mio acerrimo nemico, quindi non so proprio come muovermi.
grazie e spero di essere stato chiaro nella spiegazione.

Buongiorno,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread e sistemato il codice come da regolamento, nessuno ti potrà rispondere, quindi ti consiglio di fare il tutto al più presto. :wink: