io volevo regolare la temperatura con decimi di grado ma facendo delle
l'uscita digitale che fa alcuni lampeggi, ora sto provando a temperatura
temperatura = map(analogRead(intemperatura), 186, 585, 150, 19);
settempoff=settemp+1;
if ((temperatura) < (settemp)) { digitalWrite (22, HIGH); } if ((temperatura) > (settempoff)) { digitalWrite (22, LOW); }
Saluti da Drizzt, quello vero!
www.agidone.altervista.org
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!!
http://www.tappezzeriagraziella.com/
Didn't find your answer? Ask the community — no account required.
D
Drizzt do'Urden
Il 04/01/2022 17:45, Franco Af ha scritto:
dallo switch sulla valvola dell'acqua calda/vapore del beccuccio. Ho iniziato col solito if ma poi mi sono reso conto che in questa maniera o non si ferma la pompa quando chiudi la valvola del vapore 3e lo switch va su off oppure se aggiungo un altro if o un else non si
bloccata dal if sullo switch. Che tipo di logica bisogna usare in questi casi? Con i classici if non ci riesco :-(
Altrimenti mi devi fare uno schemino giusto che non capisco
sono vecchio mi rincoglionisci facilmente :)
D
Drizzt do'Urden
Il 05/01/2022 14:35, Franco Af ha scritto:
Fatto, errore da principiante, quando le cose funzionano non si guarda altro :-)
#include
String caffeoff = "9997102102101111102102"; //stringa pulsante caffe che arriva dal Nextion String caffeon = "9997102102101111110"; String vapoff = "11897112111102102"; //stringa pulsante vapore che arriva dal Nextion String vapon = "11897112111110"; String setpiu = "115101116109101110111"; //stringa pulsante +Set Temp che arriva dal Nextion String setmeno = "115101116112105117";//stringa pulsante -Set Temp che arriva dal Nextion String page0 = "1129710310148"; //stringa numero pagina String page1 = "1129710310149";
sempre la pagina 0 ad essere visualizzata int page1on = 0; //variabile di cambio pagina
String a = ""; //variabile dove si memorizza la lettura della seriale dal Nextion String com; //variabile dove viene memorizzata la stringa completa che arriva dal Nextion
int intemperatura = A0; // ingresso sensore temperatura int temperatura = 0; //variabile temperatura dopo mappatura int settemp = 0; //temperatura di set int settempvap = 120; //variabile del set fisso della temperatura vapore int settempcaffe = EEPROM.read(0); //variabile modificabile della
int relePompa = 13; //pin tasto apertura int releResistenza = 22; //pin tasto chiusura int switchAcqua = 24; //pin rele apertura
unsigned long t1, dt; //variabili timer per mandare valori al display
pinMode(switchAcqua, INPUT); //ingresso switch acqua calda analogReference( INTERNAL2V56 ); //usa il reference di 2.56V per avere
}
void loop() {
// MAPPATURA TEMPERATURA *******************************
temperatura = map(analogRead(intemperatura), 186, 585, 150, 19); //mappa il segnale proveniente dal LMT85
if (vap==0) // questo serve alla partenza del micro per settare la
{ settemp = settempcaffe; }
// TERMOSTATO************************
if ((temperatura) < (settemp - 1)) // dato per l'isteresi della temperatura { digitalWrite (releResistenza, HIGH); } if ((temperatura) > (settemp)) { digitalWrite (releResistenza, LOW); }
// RICEZIONE STRINGHE DA NEXTION **************************
com = ""; //azzeramento variabile
if (Serial2.available())// in attesa che arrivi un carattere dal Nextion { a=Serial2.read(); }
if(a=="167") //dato inizio stringa da aggiungere nella
{ int start=1; while(start==1) { if (Serial2.available()) { a=Serial2.read();
nella programmazione pulsanti Nextion
{
comando }
else { start=0; // permette di uscire dal ciclo } } } }
premuto e siamo sulla pagina 0 { Serial2.print("bt0.val=0"); // manteniamo il pulsante
if (com == caffeoff ) { digitalWrite (relePompa, LOW); }
if (com == vapon ) // se viene premuto il tasto vapore { vap=1; // settiamo la variabile corrispondente digitalWrite (relePompa, LOW); //disattiviamo la pompa dell'acqua settemp = settempvap; //settiamo il set temperatura con quello del vapore }
{ vap=0; //settiamo la sua variabile a 0 settemp = settempcaffe; //settiamo il set temperatura con
}
if (com == page0) // memorizza la pagina 0 su cui stiamo lavorando { page0on = 1;
}
if (com == page1) // memorizza la pagina 1 su cui stiamo lavorando { page1on = 1;
}
selezionata la pagina relativa { settempcaffe = settempcaffe + 1; EEPROM.write(0, settempcaffe); Serial2.print("settemp.val=" + String (settempcaffe)); // seleziona il modulo numerico scrivendo l'id corrispondente al modulo a cui si vuole inviare e si manda la stringa della variabile Serial2.write(0xff); // bisogna mandare i tre caratteri di fine trasmissione Serial2.write(0xff); Serial2.write(0xff); }
selezionata la pagina relativa { settempcaffe = settempcaffe - 1; EEPROM.write(0, settempcaffe); Serial2.print("settemp.val=" + String (settempcaffe)); Serial2.write(0xff); // bisogna mandare i tre caratteri di fine trasmissione Serial2.write(0xff); Serial2.write(0xff); }
if (page1on == 1) // manda il valore del set temperatura solo se la
{ Serial2.print("settemp.val=" + String (settempcaffe)); Serial2.write(0xff); // bisogna mandare i tre caratteri di fine trasmissione Serial2.write(0xff); Serial2.write(0xff); }
// AZIONAMENTO POMPA DA SWITCH SU VALVOLA DEL VAPORE*************** // DA RIVEDERE NON FUNZIONA LA LOGICA***********************************
if ((digitalRead(switchAcqua) == HIGH) & (vap == 0)) //attiva la
{ digitalWrite(relePompa, HIGH); }
// AGIORNAMENTO TEMPERATURA SU NEXTION ***************************
pagina 0 { dt = millis() - t1; // aggiorna col timer per non sovracaricare la seriale
if (dt > 500) { Serial2.print("t1.txt=\"" + String(temperatura) + "
*C""\""); // manda la temperatura come stringa e *C come caratteri Serial2.write(0xff); // bisogna mandare i tre caratteri di fine trasmissione Serial2.write(0xff); Serial2.write(0xff); t1=millis(); } if (digitalRead (releResistenza) == LOW) //se il rele della
{ Serial2.print("t1.bco=63488"); //colore rosso per set temperatura raggiunto Serial2.write(0xff); Serial2.write(0xff); Serial2.write(0xff); }
if (digitalRead (releResistenza) == HIGH) //quando la temperatura scende sotto al set e si attiva il rele resistenza torna il colore normale { Serial2.print("t1.bco=1310"); //colore azzurro dello sfondo del display Serial2.write(0xff); Serial2.write(0xff); Serial2.write(0xff); }
}
}
Saluti da Drizzt, quello vero!
www.agidone.altervista.org
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!!
http://www.tappezzeriagraziella.com/
D
Drizzt do'Urden
Il 05/01/2022 15:15, Franco Af ha scritto:
Scusa ho visto solo ora il tuo post, ora provo poi ti dico, effettivamente alle tre condizioni non avevo pensato :-)
Saluti da Drizzt, quello vero!
www.agidone.altervista.org
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!!
http://www.tappezzeriagraziella.com/
D
Drizzt do'Urden
Il 05/01/2022 15:15, Franco Af ha scritto:
caffeoff ci sono solo quando viene premuto il pulsante sul display, come anche quello del vapore. In pratica la pompa deve essere possibile attivarla e disattivarla dallo
funzionare il pulsante sul display. Ci sto ragionando da un'ora ma non riesco a sgrovigliare una logica e se
singolarmente dallo switch e dal display e le unisco tramite un diodo,
Saluti da Drizzt, quello vero!
www.agidone.altervista.org
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!!
http://www.tappezzeriagraziella.com/
F
Franco Af
segna passi che dovrebbe fare il programma, serve uno schema
questi due lo devono fare in modo svincolato fra loro.
Saluti da Drizzt, quello vero!
www.agidone.altervista.org
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!!
http://www.tappezzeriagraziella.com/
D
Drizzt do'Urden
Il 05/01/2022 16:25, Drizzt do'Urden ha scritto:
formatting link
-- Saluti da Drizzt, quello vero!
formatting link
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!!
formatting link
D
Drizzt do'Urden
Il 05/01/2022 16:36, Drizzt do'Urden ha scritto:
contatto aperto, vapore off contatto chiuso.
Saluti da Drizzt, quello vero!
www.agidone.altervista.org
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!!
http://www.tappezzeriagraziella.com/
F
Franco Af
Il 05/01/2022 16:37, Drizzt do'Urden ha scritto:
primo livello :)
Io mi attengo allo schema, poi facciamo le modifiche, "int swacqua" dichiarala all'esterno
if(vap == 0){ //vapore off interruttore chiuso if (swacqua || (com == caffeon ) ){ // se switch == 1 chiuso oppure
// attiviamo pompa digitalWrite(relePompa, HIGH);
} else{
digitalWrite(relePompa, LOW); } }
if(vap == 1){ vapore on interruttore aperto digitalWrite(relePompa, LOW); }
verifica se funziona tutto
D
Drizzt do'Urden
Il 05/01/2022 18:04, Franco Af ha scritto:
Non funziona, il led della pompa si eccita solo nell'attimo che premo caffeon pi si spegne subito e nemmeno l'ingresso swacqua fa qualcosa.
Ho anche eliminato tutto il mio codice ma fa uguale, evidentemente vede
Nel frattempo per riposare la mente e vedere se mi venuva un'idea su come risolvere questa cosa, ho predisposto il dimming del display, se non si premono tasti per xTempo la backlight si abbassa al 10% poi appena si preme un qualsiasi tasto torna al 100% :-)
Saluti da Drizzt, quello vero!
www.agidone.altervista.org
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!!
http://www.tappezzeriagraziella.com/
F
Franco Af
hai messo 2 pulsanti caffeon e caffeoff ?
non confrontarlo con com I comandi mettili sempre in variabili.
cfonoff lo metti a 1 quando arriva caffeon e a 0 quando arriva caffeoff
if (swacqua || (cfonoff == 1 ) ){
D
Drizzt do'Urden
Il 05/01/2022 19:17, Franco Af ha scritto:
Si lo avevo intuito e l'ho fatto ma sembra che la funzione || non funzioni, questo il codice,
valori a 0 la pompa non si spegne, in pratica funziona tutto, se lo
mi sembra ci sia altro e comunque se tutti i tre valori sono a zero la funzione if dovrebbe passare a else, mi perdo qualcosa? che stress... PS: scusa se ho cambiato i nomi delle variabili, cerco sempre di rendere
if(vap == 1){ vapore on interruttore aperto digitalWrite(relePompa, LOW); }
D
Drizzt do'Urden
Il 06/01/2022 11:57, Franco Af ha scritto:
Allora puoi dire tranquillamente che sono incicciuito, cavolo, troppo per la mia piccola mente :-D Porta pazienza, sono troppo vecchio per tutti questi bit byte ecc ecc :-P
comunque non funziona, la pompa non si ferma se tolgo lo switch, allora
Saluti da Drizzt, quello vero!
www.agidone.altervista.org
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!!
http://www.tappezzeriagraziella.com/
F
Franco Af
ma il "com" del mio codice lo hai tolto ? io ho solo copiato quello che ho scritto, mi sembra strano che non funzioni. Lo riscrivo giusto altrimenti mi sa che succcede qualche altro errore:
if (statovapore == 0) { statoswitch = digitalRead(24); if ((statoswitch == 1) || (statocaffe == 1)){ digitalWrite(relePompa, HIGH); }else{
if (statovapore == 1) { digitalWrite(relePompa, LOW); }
Possibile che ti funzioni tutto senza questo codice? Potresti avere una delle 2 variabili statocaffe e switch a 1 e funzionare ugualmente anche con statovapore a 1
F
Franco Af
controlla se statoswitch restituisce veramente 1 o -1 altrimenti
if ( (statoswitch == HIGH) || (statocaffe == 1)){
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.