progetto aquario con modalità manutenzione

Ciao a tutti, ho ripreso in mano un progetto che grazie al Vostro aiuto sono riuscito a completare per gestire il mio acquario, chiedo l’aiuto del forum per incanalarmi nella giusta direzione per creare una modalità manutenzione, ovvero quanto devo eseguire il cambio dell’acqua e pulire i filtri vorrei che tutte le luci si accendessero in termostato o la ventola si spegnessero. Per farla breve sarei interessato a mettere un pulsante che una volta premuto metta tutto in standby tranne le luci, in modo da poter eseguire la manutenzione in qualsiasi orario.
Posto il progetto per meglio far capire la situazione in essere.
Grazie

2019-20190617T081451Z-001.zip (1.24 MB)

Capisco il gusto di fare qualcosa con Arduino, ma mettere riscaldatore e pompa su una ciabatta con interruttore (che premi quando fai manutenzione) è così difficile? :wink:

Beh si questo è facile, ma come dici tu il bello è smanettare con arduino.

Assolutamente d'accordo ma tieni presente che una ciabatta la accendi e la spegni quando vuoi tu, e ne sei consapevole, mentre farlo fare ad Arduino implica che poi ti debba fidare di lui: i tuoi pesci sarebbero d'accordo?
Anche perché Arduino è un po' schizzinoso con i relé che accendono carichi come pompe o resistenze e non vorrei che spegnesse tutto a tua insaputa...

Mi sono accorto che i relè comandati da arduino ogni tanto cileccano, però con il progetto che ho in essere comando l'accensione di tre lampade a led, un riscaldatore, una ventola per l'estate ed il co2, quindi mi piacerebbe fare proprio un sistema di manutenzione.

>kalle67: ... rammento che, ai sensi del punto 15 del REGOLAMENTO, se qualunque oggetto che vuoi controllare NON lavora a basissima tensione (es. se hai pompe a 230V, riscaldatore a 230V, ecc), qui NON ne puoi parlare, pena la chiusura del thread.

Guglielmo

Visto che hai già strutturato il loop in modo tale che se menu è uguale a zero richiami in sequenza le varie funzionalità è molto semplice fare ciò che desideri, dentro all'if che ti diche che non sei in nessun menu prima di richiamare tutte le tue funzioni metti la lettura di un pin a cui colleghi il pulsante (con debounce), se è stato premuto fai variare una variabile booleana, es.:

if(bottone_manutenzione_premuto)
{
  sonoInManutenzione = !sonoInManutenzione;
}

Se sei in manutenzione richiami una funzione che forza tutte le uscite a spento tranne le luci che le forza ad acceso (anche quelle UV??? Che fai ti fai la lampada mentre cambi l'acqua :slight_smile: ) altrimenti richiami le funzioni che già hai, non è elegantissimo ma è quello meno impegnativo da implementare.

La strada più tortuosa è evitare di implementare la funzione che gestisce la manutenzione come l'ho indicata sopra ma controllare in ogni funzione che già usi la variabile sonoInManutenzione, se è vera allora spengni tutto forzatamente (o accendi se si tratta delle luci), altrimenti le varia funzioni fanno ciò che già fanno.
Il vantaggio della prima ipotesi sono l'estrema facilità implementativa, lo svantaggio è che ad ogni funzione che gestisce qualcosa che aggiungi devi ricordarti di andarla a gestire anche nella funzione che gestisce la manutenzione.
Il vantaggio della seconda ipotesi è che ogni funzionalità aggiunta gestirà fin da subito la manutenzione, lo svantaggio è che devi modificarti tutto il codice già esistente, anche se non è difficile in fondo è possibile farlo un if che racchiude tutto il codice e un else, ma per falo al meglio dovresti modificare i vari if per farli cadere sempre nel caso voluto se sei in manutenzione

Grazie mille, questa è la strada giusta da seguire, mi scuso per aver parlato dei relè collegati ad oggetti con funzionamento a 220V, sono un impiantista è non ho pensato al regolamento che giustamente ne vieta il dibattito.