puoi linkare la libreria Nextion che stai usando ?
volevo capire cosa ti sta succedendo e ho installato questa:
puoi linkare la libreria Nextion che stai usando ?
volevo capire cosa ti sta succedendo e ho installato questa:
Il 01/01/2022 14:15, alfio ha scritto:
Ho usato la libreria originale ma sarebbe meglio non usare nulla e
usare tali dati, il Nextion manda i dati in formato ascii con ultimi tre byte 0xFF 0xFF 0xFF, ora riesco a vedere sul monitor di arduino cosa mando, esattamente al premere un tasto mando la scritta "caffeon" ma poi se la voglio confrontare con l'istruzione "if" non riesco a farla vedere, non ci capisco una mazza e i vari tutorial sono spiegati per chi
https://nextion.tech/nextion-editor/#_section3
-- Saluti da Drizzt, quello vero! www.agidone.altervista.org MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! http://www.tappezzeriagraziella.com/
Il 01/01/2022 14:15, alfio ha scritto:
ma non sono riuscito a farla funzionare:
-- Saluti da Drizzt, quello vero! www.agidone.altervista.org MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! http://www.tappezzeriagraziella.com/
in che senso non riesci a confrontare? parli dell'usare l'istruzione giusta per il confronto oppure che le 2 stringhe "sembrano" diverse?
Il 02/01/2022 11:15, Franco Af ha scritto:
In pratica il display manda "caffeon" o "caffeoff" sulla seriale quando viene premuto il pulsante a doppio stato, io vorrei far partire la pompa o fermarla in base alla parola che arriva. Sul monitor dell'IDE riesco a leggere le due parole quando arrivano ma non ho capito come usarle per quello che mi serve. Ho cercato in rete esempi ma sono tutti molto complicati, usano istruzioni strane... boh :-) Sto facendo un sacco di prove ma non giungo a risultati funzionanti :-(
-- Saluti da Drizzt, quello vero! www.agidone.altervista.org MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! http://www.tappezzeriagraziella.com/
Il 02/01/2022 12:03, Drizzt do'Urden ha scritto:
prendere la parte di stringa giusta
Il 02/01/2022 12:09, Franco Af ha scritto:
9997102102101111110 che corrisponde in ascii a "caffeon"uso questo codice per leggere:
Serial.begin(9600); Serial2.begin(9600);
if (Serial2.available()) { String a=Serial2.read(); }
Serial.print(a);
-- Saluti da Drizzt, quello vero! www.agidone.altervista.org MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! http://www.tappezzeriagraziella.com/
"Drizzt do'Urden" ha scritto nel messaggio news:sqqbp3$me8$ snipped-for-privacy@gioia.aioe.org...
caso mio ma
mentre ci sei, prova anche quella che c'e' nell'elenco delle librerie di
Arduino IDE, cioe' quella che vedi nel mio screenshot: Nextion 2.0.2 by Helder Rodriguez
Il 02/01/2022 14:31, alfio ha scritto:
l'hanno nemmeno commentato e non saprei come usare i comandi.
-- Saluti da Drizzt, quello vero! www.agidone.altervista.org MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! http://www.tappezzeriagraziella.com/
Serial.print(String(a) + " ");
in pratica viene letto un carattere alla volta non tutti insieme
Il 02/01/2022 15:05, Franco Af ha scritto:
99 97 102 102 101 111 110ma come posso usare questa stringa per fargli fare delle azioni? Giusto per fare una prova ho scritto questo (non ridere) ma non
confrontati: Nella mia testolina le cose dovrebbero essere semplici, arriva un dato dalla seriale, lo leggi e lo usi per fare quello che ti serve ma
String caffe= ""; String caffeoff= "caffeoff"; String caffeon="caffeon"; String a="";
void setup() { Serial.begin(9600); Serial2.begin(9600);
pinMode(22, OUTPUT); pinMode(13, OUTPUT); analogReference( INTERNAL2V56 );
} void loop() { if (Serial2.available()) { { a=Serial2.read(); Serial.print(String(a) + " "); } if (a == caffeon) { digitalWrite (13, HIGH); a=""; } if (a == caffeoff) { digitalWrite (13, LOW); a=""; } } }
-- Saluti da Drizzt, quello vero! www.agidone.altervista.org MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! http://www.tappezzeriagraziella.com/
Il 02/01/2022 15:23, Drizzt do'Urden ha scritto:
quando leggi a con "a=Serial2.read()" viene letto solo il primo carattere "99" (lo spazio lo aggiungiamo noi ogni volta che passiamo da read), e questo serviva per capire i caratteri letti.
partenza evento 101 (65 in esa) ma tu non lo vedi, prima lo vedevi
dal sorgente:
if (!start_event) { // No press event byte (0x65) have been received if (c == 0x65) { // Event press character received, start the event start_event = true; sym_indx = 0; } } else { buff[sym_indx] = c; if (c == 0xff) { // The finish sequence symbol if (end_event()) { page = buff[0]; item = buff[1]; start_event = false; return true; } } if (++sym_indx > 7) { start_event = false; } }
PEr renderlo facile dice: Quando arriva 65 imposti la variabile start_event a leggere tutti i prossimi caratteri e finire quando troverai c = 0xff .
Sei sicuro di avermi dato tutti i caratteri che ricevi ?
Se sono tutti prova in questo modo, attento a copiare tutto il codice :
String caffe= ""; // questi comandi devono essere uguali a quelle stringhe che vedi String caffeoff= "99 97 102 102 101 111 102 102"; String caffeon="99 97 102 102 101 111 110"; String a="";
String com;
void setup() { Serial.begin(9600); Serial2.begin(9600);
pinMode(22, OUTPUT); pinMode(13, OUTPUT); analogReference( INTERNAL2V56 );
}void loop() { com="";
while (Serial2.available()){ a=Serial2.read(); com=com + a + " "; // ti ho aggiunto lo spazio altrimenti non si
}Serial.print(com + " - ");
if (com == caffeon ) { digitalWrite (13, HIGH); Serial.print(" * HIGH * "); }
if (com == caffeoff ) { digitalWrite (13, LOW); Serial.print(" * LOW * "); }
}finito l'evento. Io non posso provare nulla, "dovrebbe" andare.
Il 02/01/2022 16:52, Franco Af ha scritto:
modifica questa : String caffeoff= "99 97 102 102 101 111 102 102 "; String caffeon="99 97 102 102 101 111 110 ";
ci manca lo spazio
"Drizzt do'Urden" ha scritto nel messaggio news:sqsb1v$eef$ snipped-for-privacy@gioia.aioe.org...
non
scritto al volo cercando di capire come funziona sia questa lib sia quella usata da te sia il tuo codice, senza aver mai visto un Nextion, quindi prova ma non dare per scontato che funzioni :-)
nel tuo codice sia Caffe' sia Vapore agiscono sull'uscita 13, e' corretto ?
questa libreria usa la SoftwareSerial e i 2 pin che metti nella dichiarazione di "nextion" devono soddisfare queste regole:
#include
Nextion nextion( 10,11 ); // pin seriale rx,tx
void cbSetMeno ( uint8_t page,uint8_t id,bool state ) { digitalWrite( 22,HIGH ); }
void cbSetPiu ( uint8_t page,uint8_t id,bool state ) { digitalWrite( 22,LOW ); }
void cbCaffe ( uint8_t page,uint8_t id,bool state ) { digitalWrite( 13,state ); }
void cbVapore ( uint8_t page,uint8_t id,bool state ) { digitalWrite( 13,state ); }
unsigned long dt;
void setup() { nextion.begin( 9600 ); // baudrate
nextion.attach( { 1,2,NEXTION_EVENT_PRESS }, cbSetMeno ); // { pag,id,evento },callback nextion.attach( { 1,3,NEXTION_EVENT_PRESS }, cbSetPiu ); nextion.attach( { 0,2,NEXTION_EVENT_PRESS }, cbCaffe ); nextion.attach( { 0,6,NEXTION_EVENT_PRESS }, cbVapore );
dt = millis(); }
nextionComponent cTemp = { 0,3 }; // pag,id nextionComponent cSetTemp = { 1,6 };
void scriviNumero ( nextionComponent &c,uint32_t val ) { nextion.print( "p["+String( c.page )+"].b["+String( c.id )+"].val=\""+String( val ) + "\"" ); }
void aggiornaNextion ( void ) { uint32_t temperatura = map( analogRead( A0 ), 186, 585, 150, 19 ); scriviNumero( cSetTemp,100 ); scriviNumero( cTemp,temperatura ); }
void loop() { nextion.listen();
if( millis()>=dt ) { dt += 1000; aggiornaNextion(); } }
Il 02/01/2022 16:52, Franco Af ha scritto:
Ok, penso di aver capito qualcosa di essenziale, fino ad ora pensavo che
ciclo con tutti i caratteri, invece "finalmente" ho capito che ad ogni
stringa, sembra banale per voi ma non ho mai trovato una spiegazione
l'argomento :-)
Dunque, se si lascia la programmazione del Nextion di default, ad ogni
65 00 05 00 FF FF FF esadecimaleoppure stringa
oppure ascii
101020255255255che indicano, il 65 non lo so, 00 pagina, 05 id oggetto, 00 valore oggetto FF FF FF fine stringa.
Gli oggetti del display li puoi anche programmare per inviare i dati che vuoi tu invece dell'indirizzo standard, in questo caso sto mandando "caffeon" che corrisponde a
99 97 102 102 101 111 110-- Saluti da Drizzt, quello vero! www.agidone.altervista.org MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! http://www.tappezzeriagraziella.com/
Il 02/01/2022 18:39, alfio ha scritto:
si, l'ho fatto per semplificare, sulla scheda di prova ho un solo led, nel progetto finito devono fare cose diverse.
Ok, io uso il Mega2560 quindi ho diverse seriali libere e ora uso la 2
Provo anche questo, se non mi incasino la testa :-D
-- Saluti da Drizzt, quello vero! www.agidone.altervista.org MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! http://www.tappezzeriagraziella.com/
Il 02/01/2022 16:55, Franco Af ha scritto:
Ho provato, copiato pari pari, la seriale parla continuamente e sul monitor si vedono passare velocemente tanti ----------- poi se premi il pulsante per un attimo appare la stringa corrispondente ma il led non si accende.
-- Saluti da Drizzt, quello vero! www.agidone.altervista.org MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! http://www.tappezzeriagraziella.com/
Il 02/01/2022 20:50, Drizzt do'Urden ha scritto:
e non appaiono nemmeno le scritte HIGH o LOW
ci lavoro per capire :-)
-- Saluti da Drizzt, quello vero! www.agidone.altervista.org MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! http://www.tappezzeriagraziella.com/
la seriale parla troppo :) dovresti cambiare il comando sul display con inizio e fine comando es:
per i comandi aggiungi un carattere all'inizio e uno alla fine...
esempio :
ovviamente su tutti i comandi, in questo modo capiremo il comando inizio e fine. Devi cambiarlo sul display .
poi cambia il codice while
while (Serial2.available()){ ...... }
con questo sotto:
if (Serial2.available()){ a=Serial2.read();
int start=1; while(start==1){ a=Serial2.read();
com=com + a + " "; }else{ start=0; // permette di uscire dal ciclo } } } }
dovrebbe funzionare :)
Il 02/01/2022 21:14, Franco Af ha scritto:
Dunque, la seriale parla ancora troppo :-D
per poter vedere sul monitor la stampa di "com" ho dovuto cambiare i due simboli col codice che mi arriva dalla seriale, altrimenti vedevo solo i
- scorrere:
ora quando premo il pulsante caffeon, sul monitor appare il codice 99 97
102 102 101 111 110 in mezzo ai - che scorrono e comunque il led non si accende e non appare la scritta HIGH.-- Saluti da Drizzt, quello vero! www.agidone.altervista.org MAI PIU' UN CESSO DI OPEL IN VITA MIA!!!! http://www.tappezzeriagraziella.com/
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.