Ciao a tutti, sto cercando di fare n cicli modulari che mi accendano un sensore, verifichino lo stato del sensore e se questo è HIGH spenga un rele, mentre se è LOW accenda il rele e non lo spenga finchè il sensore non diventa HIGH. Solo a questa condizione si dovrà passare allo step successivo perfettamente uguale a questo.
Vi incollo il codice, con il while messo così (infatti l'ho commentato) non va.
Mi sapete dire dove sbaglio?
Grazie a tutti
Grazie Fratt, ora spero sia inserito correttamente.
Il progetto prevede l'alimentazione alternata di 6 sensori di umidità del terreno, e quando un sensore rileva la necessità di acqua comanda un rele con una elettrovalvola e dà acqua. Sino a che non chiude l'elettrovalvola non può passare al sensore successivo, altrimenti lascia l'acqua aperta e fa un macello. Pensavo quindi di mettere il while fintanto che non termina di irrigare non chiude il ciclo.
a dir la verità era meglio modificare e correggere il primo post...
quindi non c'è una "priorità" tra i sensori, vanno solo controllati uno dopo l'altro, giusto?
puoi provare così...
(non ho capito la logica dei nomi delle variabili... per capirmi le ho cambiate, poi sistema tu)
void loop() {
// primo sensore
if (digitalRead(sensore1) == HIGH) {
while (digitalRead(sensore1) == HIGH) {
// tengo attiva l'elettrovalvola
digitalWrite(elettrov1, HIGH / LOW); // metti il valore corretto
}
} else {
// chiudo l'elettrovalvola
digitalWrite(elettrov1, LOW / HIGH); // metti il valore corretto
}
// secondo sensore
if (digitalRead(sensore2) == HIGH) {
while (digitalRead(sensore2) == HIGH) {
// tengo attiva l'elettrovalvola
digitalWrite(elettrov2, HIGH / LOW); // metti il valore corretto
}
} else {
// chiudo l'elettrovalvola
digitalWrite(elettrov2, LOW / HIGH); // metti il valore corretto
}
// ecc...
}
docsavage sono in piena produzione di peperoncini ma per fortuna/purtroppo devo partire per 1 mese fuori e non ho nessuno che riesca a seguirli, siccome sono da febbraio che mi sbatto mi scoccerebbe tanto perderci tutto!
Il fatto di non poter passare alla lettura successiva deriva dal fatto che se mi tiene aperta l'acqua per troppo tempo mi allaga tutto, anche perchè i sensori li accendo ogni tot di tempo per prevenirne la corrosione.
Fratt la tua soluzione è perfetta! Grazie mille!
docsavage il tuo consiglio è un ottimo spunto su come gestire i cicli!
Grazie a tutti!
felice che tu abbia risolto... però devo ammettere che vedendo la soluzione proposta da docsavage, la mia sembra più una soluzione da agricoltore piuttosto che da programmatore... ma bene o male siamo comunque in argomento...