Sembra un luce scale

Buon giorno a tutti. Sono ad un punto morto del mio progetto ed ho bisogno di aiuto; la mia necessità è realizzare un comando temporizzato che si attivi a seguito della pressione di un pulsante. In pratica un banale luce scale (di cui peraltro avete già discusso su altri post) con una sostanziale differenza : il tempo di pressione del pulsante di comando non deve influire sulla durata della temporizzazione, che dovrebbe aggirarsi in tempi inferiori al secondo. Allego il codice su cui sto lavorando.

/*In questo progetto chiamato luce scale , voglio azionare un comando
 * temporizzato (con tempo regolabile in millisecondi) che sia influente
 * dal tempo di pressione del tasto.
 
*/

int potenziometro ;
long int millisecondi ;
int era_tasto ;
int ora_tasto ;

void setup() {

  
  pinMode(11, INPUT);   //tasto
  pinMode(2, OUTPUT);   //relè  
  pinMode(A0, INPUT);   //potenziometro 
  era_tasto = digitalRead(11);
}

void loop() {
  digitalWrite(2, LOW);
  potenziometro = analogRead(A0);
  millisecondi = map(potenziometro, 0, 1023, 50, 700);
  ora_tasto = digitalRead(11);

  if (era_tasto =! ora_tasto) {
    tempo();
  }
 ora_tasto = digitalRead(11);
}
void tempo()
{
  digitalWrite(2, HIGH);
  delay(millisecondi * 10 );
   
}   

Grazie mille

Fai tutta quella cosa ma poi usi il delay?...
Se non deve fare altro e vuoi usare i delay:

void loop()
  {
  if digitalRead(11)
    {
    digitalWrite(2, HIGH);
    delay(map(analogRead(A0), 0, 1023, 50, 700));
    digitalWrite(2, LOW);
    delay(2000); // Per due secondi il pulsante viene ignorato.
    }
  }

beh, una cosa ho certamente imparato da che ho cominciato a programmare ( e qui c'è da ridere) : andare a step. un passo alla volta. sostituirò il delay con la "storia" dei millis in seguito....(forse).
...certo se non è questo l'inghippo.

UFFA ! (concedimelo, ti prego) .
Grazie mille. Ma davvero super grazie!

.:grin:.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.