problema codice timer

vorrei realizzare un timer regolato da un potenziometro ed un pulsante che lo fa partire e lo interrompe eventualmente
posto il codice ...

unsigned long time;
int secondi;
int potenziometro = A1;
int relay = 8;
int button = 2;
int val = 0;
int stato = 0;
int letturasecondi;
void setup(){
  time = millis();
  pinMode(relay,OUTPUT);
  pinMode(button,INPUT);
  }
  void loop(){
    letturasecondi=analogRead(potenziometro);
    secondi=(letturasecondi/25.5);//Pot.da 0-40 secondi
    val = digitalRead(button);
    if (val==HIGH){
      stato=1;
      delay(15);
      }
      if (stato==1){
        digitalWrite(relay,HIGH);
        if(millis()>=time+1000){
        secondi--;
        time=millis();
          if (secondi==0){
          digitalWrite(relay,LOW);
          secondi=secondi;
          stato=0;
          }
          }
          }
          }

Ciao, ti invito a leggere il regolamento, le domande in Italiano si pubblicano nella sezione Italiana. Inoltre il 1° post dovrebbe essere di presentazione nell'apposito thread e non per richieste di assistenza.

pas600:
vorrei realizzare un timer regolato da un potenziometro ed un pulsante che lo fa partire e lo interrompe eventualmente
posto il codice ...

E' una domanda o un'affermazione? Che significa? Che non ti funziona oppure che ti funziona e vuoi migliorare il programma?

... e fai anche un favore, usa la funzione dell'IDE di Arduino : Tools -> Auto Format ... perché così come hai formattato il tuo codice, con quella sfilza di parentesi tutte usa sotto l'altra ... fa veramente ... ...

... almeno lo renderà molto più leggibile, Grazie !

Guglielmo

Dovevi spostare l'assegnamento di "secondi" nell'IF, altrimenti viene resettato ogni ciclo e togliere il controllo dall'IF dello stato.

Vedi se così funziona.

unsigned long time;
int secondi;
int potenziometro = A1;
int relay = 8;
int button = 2;
int val = 0;
int stato = 0;
int letturasecondi;

void setup() {
  time = millis();
  pinMode(relay, OUTPUT);
  pinMode(button, INPUT);
} // End Setup

void loop() {
  letturasecondi = analogRead(potenziometro);
  val = digitalRead(button);

  if (val == HIGH)  {
    stato = 1;
    delay(15);
  }

  if (stato == 1)  {
    digitalWrite(relay, HIGH);
    if (millis() >= time + 1000) {
      secondi--;
      time = millis();
    }
  }
  else
    secondi = (letturasecondi / 25.5); //Pot.da 0-40 secondi

  if (secondi == 0)  {
    digitalWrite(relay, LOW);
    stato = 0;
  }

}// End Loop

Il codice è comunque migliorabile.