Arduino Mega2560 e display Nextion

Il 05/01/2022 18:04, Franco Af ha scritto:

correzioni delle varie variabili, esattamente come dovrebbe funzionare e come funziona il mio ultimo. Questo il tuo come l'ho modificato:

if (statovapore == 0) { if ((digitalRead(inSwitch)==HIGH) || (statocaffe == 1 ) ) { digitalWrite(relePompa, HIGH); }

else { digitalWrite(relePompa, LOW); } }

if (statovapore == 1) { digitalWrite(relePompa, LOW); }

sull'ingresso dello switch, immagino che sia merito di questa resistenza

variabili sul monitor dell'IDE, quella dello switch variava regolarmente da 1 a 0. Quindi sia il tuo codice che il mio, anche se fatti con logiche diverse funzionano entrambi alla stessa maniera, mi chiedo se sia normale :-) Questo il mio codice:

if ((digitalRead(inSwitch) == HIGH) && (statovapore == 0)) { digitalWrite(relePompa, HIGH); } if ((digitalRead(inSwitch) == LOW) && (statocaffe == 0)) { digitalWrite(relePompa, LOW); }

Alla fine devo ammettere che non sono portato per queste cose, troppo

troppo difficile per chi non ne ha mai masticato.

uguale ad Arduino, ma a quel punto se anche riuscissi ad imparare il C non userei sicuramente Arduino :-)

con la parte elettronica, sperando che fili tutto liscio. Sempre un grande grazie per l'aiuto :-)

--
Saluti da Drizzt, quello vero! 


www.agidone.altervista.org 
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! 
http://www.tappezzeriagraziella.com/
Reply to
Drizzt do'Urden
Loading thread data ...

Il 06/01/2022 14:34, Drizzt do'Urden ha scritto:

ps: con il tuo aiuto ho anche capito che i dati dalla seriale arrivano un carattere alla volta ad ogni ciclo macchina, sembra scontato per chi lo sa ma credevo che la stringa arrivasse tutta in una volta, ecco

caratteri ricevuti, in tutti i tutorial che ho seguito nessuno ha mai specificato questa cosa. :-)

Questo il codice completo:

/* * FUNZIOZNAMENTO CONTROLLO MACCHINA CAFFE'

nella lettura del sensore LMT85 * Si usa un display Nextion touch

per quando si spegne la macchinetta * La pompa dell'acqua si attiva col proprio pulsante a doppia azione e con la manopola dell'acqua

  • I dati al display vengono mandati solo ai moduli della pagina selezionata

il timer millis() per non sovracaricare la seriale * * */ #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

int statocaffe = 0; int statovapore = 0;

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 inSwitch = 24; //pin rele apertura

unsigned long t1, dt; //variabili timer per mandare valori al display unsigned long dim1, dim2; //variabili timer per backlight display

void setup() { Serial.begin(9600); Serial2.begin(9600); //seriale Nextion

pinMode(inSwitch, 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 (statovapore==0) // questo serve alla partenza del micro per

{ 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 } } } }

stato premuto e siamo sulla pagina 0 { Serial2.print("bt0.val=0"); // manteniamo il pulsante

Serial2.write(0xff); Serial2.write(0xff); Serial2.write(0xff); }

// USO E INTERBLOCCO SWITCH VALVOLA ACQUA***************************

if(statovapore == 0)//verifica che lo stato del vapore sia a zero, vapore NON selezionato { if ((digitalRead(inSwitch)==HIGH) || (statocaffe == 1 ) ) //se

{ digitalWrite(relePompa, HIGH); }

else { digitalWrite(relePompa, LOW); } }

bloccata { digitalWrite(relePompa, LOW); }

/* // SISTEMA DIVERSO PER USO E INTERBLOCCO SWITCH VALVOLA ACQUA********************* if ((digitalRead(inSwitch) == HIGH) && (statovapore == 0)) { digitalWrite(relePompa, HIGH); } if ((digitalRead(inSwitch) == LOW) && (statocaffe == 0)) { digitalWrite(relePompa, LOW); }

*/

// COMANDI CAFFE' E VAPORE DA DISPLAY****************************

if ((com == caffeon) && (statovapore==0)) { statocaffe=1; digitalWrite(relePompa, HIGH); dimming(); //rimanda al ciclo che porta la backlight l 100% }

if (com == caffeoff ) { statocaffe = 0; digitalWrite(relePompa, LOW); dimming(); //rimanda al ciclo che porta la backlight l 100% }

if (com == vapon ) // se viene premuto il tasto vapore { statovapore=1; // settiamo la variabile corrispondente statocaffe=0; digitalWrite (relePompa, LOW); //disattiviamo la pompa dell'acqua settemp = settempvap; //settiamo il set temperatura con quello del vapore dimming(); //rimanda al ciclo che porta la backlight l 100% }

{ statovapore=0; //settiamo la sua variabile a 0 //statocaffe = 0; settemp = settempcaffe; //settiamo il set temperatura con

dimming(); //rimanda al ciclo che porta la backlight l 100% }

if (com == page0) // memorizza la pagina 0 su cui stiamo lavorando { page0on = 1;

dimming(); //rimanda al ciclo che porta la backlight l 100% }

if (com == page1) // memorizza la pagina 1 su cui stiamo lavorando { page1on = 1;

dimming(); //rimanda al ciclo che porta la backlight l 100% }

selezionata la pagina relativa { settempcaffe = settempcaffe + 1; EEPROM.write(0, settempcaffe); Serial2.print("settemp.val=" + String (settempcaffe)); // selezionare il modulo numerico scrivendo l'id corrispondente al modulo a cui si vuole inviare Serial2.write(0xff); // bisogna mandare i tre caratteri di fine trasmissione Serial2.write(0xff); Serial2.write(0xff); dimming(); //rimanda al ciclo che porta la backlight l

100% }

selezionata la pagina relativa { settempcaffe = settempcaffe - 1; EEPROM.write(0, settempcaffe); Serial2.print("settemp.val=" + String (settempcaffe)); // selezionare il modulo numerico scrivendo l'id corrispondente al modulo a cui si vuole inviare Serial2.write(0xff); // bisogna mandare i tre caratteri di fine trasmissione Serial2.write(0xff); Serial2.write(0xff); dimming(); //rimanda al ciclo che porta la backlight l

100% }

if (page1on == 1) // manda il valore del set temperatura solo se la

{ Serial2.print("settemp.val=" + String (settempcaffe)); // selezionare il modulo numerico scrivendo l'id corrispondente al modulo a cui si vuole inviare Serial2.write(0xff); // bisogna mandare i tre caratteri di fine trasmissione Serial2.write(0xff); Serial2.write(0xff); }

// 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); }

}

dim1 = millis() - dim2; // timer per abbassare la backlight se non si premono tasti per il tempo selezionato

if (dim1 > 30000) { Serial2.print("dim=10"); Serial2.write(0xff); Serial2.write(0xff); Serial2.write(0xff); }

}

void dimming() //serve per riportare la retroilluminazione al 100& se si preme un tasto { Serial2.print("dim=100"); Serial2.write(0xff); Serial2.write(0xff); Serial2.write(0xff); dim2=millis(); }

--
Saluti da Drizzt, quello vero! 


www.agidone.altervista.org 
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! 
http://www.tappezzeriagraziella.com/
Reply to
Drizzt do'Urden

Il 06/01/2022 14:59, Drizzt do'Urden ha scritto:

con un po' di aiuto :)

Reply to
Franco Af

Il 06/01/2022 15:14, Franco Af ha scritto:

Se abitassimo vicini potremmo trovarci e ti offrirei una pizza :-) Mica stai in Romagna?

--
Saluti da Drizzt, quello vero! 


www.agidone.altervista.org 
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! 
http://www.tappezzeriagraziella.com/
Reply to
Drizzt do'Urden

Il 06/01/2022 18:54, Drizzt do'Urden ha scritto:

Reply to
Franco Af

Il 06/01/2022 19:31, Franco Af ha scritto:

Si tu, io mi sono scervellato :-D

Comunque un amico a cui ho fatto vedere il lavoro mi ha stuzzicato a

formatting link

--
Saluti da Drizzt, quello vero! 


www.agidone.altervista.org 
MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! 
http://www.tappezzeriagraziella.com/
Reply to
Drizzt do'Urden

Il 06/01/2022 23:44, Drizzt do'Urden ha scritto:

sapessi le volte che sono diventato scemo con la programmazione, sono anni ormai :)

bello, interessante magari quando avrai tempo posta un video per vederla funzionare :)

Reply to
Franco Af

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.