Problema con millis

Salve a tutti, vorrei gestire un piccolo motorino di una pompa a 6V con la funzione millis ma non ci riesco, mi servirebbe che dando l'input da seriale rimanga accesa un tot di tempo e poi si spenga.

byte pompa = 8;
unsigned long inizioIrrigazione = 0;



void setup() {
  pinMode(pompa, OUTPUT);
  Serial.begin(9600);



}


//attendi un comando dalla serial
  if ( Serial.available()) {
    byte DataRX = Serial.read();
    if (DataRX == 51) {
     
      digitalWrite(pompa, HIGH);
      inizioIrrigazione=millis();
      if (millis() - inizioIrrigazione >= 6000){
        digitalWrite(pompa, LOW);
      }
    }

se metti lo spegnimento dentro lo stesso IF dell'accensione....

e poi manca il loop :slight_smile:

ok sistemato, ma non funziona, mi spiego meglio: appena mando il comando il motore della pompa parte ma rimane acceso sempre, mentre se invio nuovamente il comando si ferma.

byte pompa = 8;
unsigned long inizioIrrigazione = 0;




void setup() {
  pinMode(pompa, OUTPUT);
  Serial.begin(9600);



}
void loop () {

  //attendi un comando dalla serial
  if ( Serial.available()) {
    byte DataRX = Serial.read();
    if (DataRX == 51) {

      digitalWrite(pompa, HIGH);

    }
    if (millis() - inizioIrrigazione >= 6000) {
      digitalWrite(pompa, LOW);
      inizioIrrigazione = millis();
    }
  }
}

Hai messo il controllo per lo spegnimento dentro all'if che verifica se ci sono caratteri sulla seriale. Stesso errore, insomma.

Scusa la domanda, ma il tuo è un progetto simile a quello di cui si parla qui?
https://forum.arduino.cc/index.php?topic=543091.msg3701469#msg3701469
Perché mi sembra che stiate usando più o meno gli stessi materiali, con le stesse necessità
Se mi sbaglio scusami, sennò magari provava chiedere a quell'utente se potete scambiarvi consigli ed esperienze

Standardoil:
Scusa la domanda, ma il tuo è un progetto simile a quello di cui si parla qui?
Progetto Serra Automatica - Hardware - Arduino Forum

In particolare il post in cui si comincia a parlare di logica basata su "situazioni" è questo: forum.arduino.cc/index.php?topic=543091.msg3705172#msg3705172

Nel caso di Elmo ci sono solo due situazioni da gestire: fermo e acceso, che reagiscono ciascuna a un solo evento (rispettivamente "arrivato carattere giusto da seriale", e "timeout").

Quando si è nella situazione spento e arriva il carattere giusto si segna il tempo attuale, si accende, si imposta situazione acceso.

Quando si è nella situazione acceso e sono trascorsi 6 secondi, si spegne e si reimposta situazione spento.

Vero è
Ma nel topic precedente lo OP ha mosso un cancello, è questo mi ha fatto ricordare quello citato,
Come ho detto posso sbagliarmi, ma un tentativo lo meritava