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....
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