Nextion HMI kezdő lépések
Re: Nextion HMI kezdő lépések
Egyes esetekben arduino sem kell. Találtam megoldást arra, hogy ESP8266 és nextion összekapcsolásával hogyan lehet NTP-s (network time server) időt lekérni és megjeleníteni.
Az arduinot azért javaslom eleve betervezni, mert kapsz egy rakás portot, és egy megbízható, könnyen kezelhető programozási felületet.
A nextionnak vannak apró problémái leginkább a dokumentálás terén. Most épp azzal szívok, hogyan lehet egy timert felhasználni több lapon. Egy órának megterveztem az oldalakat nappali és éjszakai módjához, de eddig nem sikerült átadni a második lapnak a timer által változtatott változók értékét.
Az arduinot azért javaslom eleve betervezni, mert kapsz egy rakás portot, és egy megbízható, könnyen kezelhető programozási felületet.
A nextionnak vannak apró problémái leginkább a dokumentálás terén. Most épp azzal szívok, hogyan lehet egy timert felhasználni több lapon. Egy órának megterveztem az oldalakat nappali és éjszakai módjához, de eddig nem sikerült átadni a második lapnak a timer által változtatott változók értékét.
Re: Nextion HMI kezdő lépések
Beálltam én is a csapatba.
Nem bírtam ki vettem egyet ITEAD Studio-soktól 3.5" 6 nap alatt ideért.
Nem bírtam ki vettem egyet ITEAD Studio-soktól 3.5" 6 nap alatt ideért.
Re: Nextion HMI kezdő lépések
Mármint saját uC nélkül, mert a kijelző hátulján mindegyik változaton van kisebb-nagyobb uC.winnerbt írta: ...Mindez uC nélkül.
...A legnagyobb hibája, amit találtam, hogy értékek változtatásánál, legyen az gomb/vizesköcsög, toolbar vagy mi, a megváltoztatott numerikus érték változik (meg a grafika is), de nem visszaolvasható. ...szerintem ilyen áron jó választás és tehermentesíti a fő uC-t eléggé. (és gyorsabb is, mint TFT-t kezelni vacak 8-bites AVR-el)
A változókat vissza lehet olvasni a get paranccsal (ekkor a visszaküldött adat 0X70+ASCII code+0xff 0xff 0xff formátumú), vagy ki lehet küldeni soros portra csak az értéket a print paranccsal.
Tényleg jó választás, csak kicsit kiforratlan, kevés a minta, és rengeteget kell próbálkozni, mire sikerül valamit összehozni.
amit én a legnagyobb hibájának látok:
- nincs szöveges (ttx, xml, akármi) mentési lehetősége az elkészült kódnak, így egy elem paraméterezése után nem lehet egyszerűen áttekinteni, hol mit használtunk.
- SD kezelése csak frissítésre
- nincs szabad gpio, emiatt szinte mindig kell mögé valami uC
- bonyolult programozás (a lapok közötti paraméter átadással két napom ment el)
Re: Nextion HMI kezdő lépések
Fórumon panaszkodtak, hogy nem tudják visszaolvasni a "belül" lépkedő értéket, de én már vagy 1 éve rá sem néztem...
Az SDkártyás dolog elég sajnálatos, nagyon jó lenne, ha beleférne nekik a kezelése
Az én szenvedéseimre is azt mondta egy cimborám, hogy akkor inkább csináljunk egy saját HMI-t. (amilyen elvetemült,
meg is csinálná)
JAni
Az SDkártyás dolog elég sajnálatos, nagyon jó lenne, ha beleférne nekik a kezelése
Az én szenvedéseimre is azt mondta egy cimborám, hogy akkor inkább csináljunk egy saját HMI-t. (amilyen elvetemült,
meg is csinálná)
JAni
Re: Nextion HMI kezdő lépések
Sziasztok, nekem is van egy Nextionom, most tanulgatom a használatát... Amiket szeretnék, már sikerült kiíratnom rá, csakhogy nem bírom rávenni, hogy vissza tudjak küldeni egy parancsot az érintő felületről. Szeretnék egy plusz és egy minusz gombot, ami egy megadott értéket változtatna százados léptékben. Találtam jó néhány példát de egyik sem hozott vissza eredményt. Egy rövid példán keresztül valaki el tudná magyarázni, hogyan is kell érintőgombról arduinoba visszaolvastatni adatot? Soros monitorra max ennyi jön vissza : recvRetCommandFinished err
Köszi!
Köszi!
Re: Nextion HMI kezdő lépések
Adott egy gombod. A gombra kattintva a Touch Release Event (vagy Touch Press Event) részt kell kitölteni. get att parancs: http://wiki.iteadstudio.com/Nextion_Instruction_Set
Ha bepipálod a Set Component ID pipát, akkor a megnyomáskor először elküldi a gomb azonosítóját (0x65, page ID, gomb ID), csak ezután küld minden mást, amit az Event részben megadtál.
Ha van egy változód, akkor a szöveges változóbál a get t[n].txt, szám típusnál a get j[n].val paranccsal tudsz adatot küldeni. Fix értéket is lehet, pl. get "123". Ilyenkor a HMI elküld egy keretet az adat körül, ez szövegnél 0X70+ASCII code+0xff 0xff 0xff, számnál 0X71+4 byte binary data+0xff 0xff 0xff.
A másik lehetőség a print att, ekkor a sosos portra az adat keret nélkül kerül ki.
Ha bepipálod a Set Component ID pipát, akkor a megnyomáskor először elküldi a gomb azonosítóját (0x65, page ID, gomb ID), csak ezután küld minden mást, amit az Event részben megadtál.
Ha van egy változód, akkor a szöveges változóbál a get t[n].txt, szám típusnál a get j[n].val paranccsal tudsz adatot küldeni. Fix értéket is lehet, pl. get "123". Ilyenkor a HMI elküld egy keretet az adat körül, ez szövegnél 0X70+ASCII code+0xff 0xff 0xff, számnál 0X71+4 byte binary data+0xff 0xff 0xff.
A másik lehetőség a print att, ekkor a sosos portra az adat keret nélkül kerül ki.
Re: Nextion HMI kezdő lépések
Köszi, igen, eddig eljutottam. Szerintem az arduino kódban van a kutya elásva. Találtam egy (szerintem sokkal egyszerűbb) megoldást a lib-ek között. -ami persze nem működik- - mint a nyomógomb figyeléses PopCallback.
Ugye miután be lett lőve a Nextion a main, illetve a setup-ba, egy változó adat kiküldése csak ennyi : myNextion.setComponentText("press", String(barValue)); A nextion editoban csak arra kell figyelni, hogy press.txt legyen a változó neve.
Hasonló módon akarok bekérni egy adatot a képernyőről,
int cel = myNextion.getComponentValue("n0");
majd ezzel a cel változóval számításokat szeretnék végezni.
Azért, hogy lássam, hogy megvan-e ami kell
Serial.print(cel);
A serial monitoron -1 jön vissza, bármit nyomok a kijelzőn...
a nextion-on van egy n0.val nevű változóm két nyomógombom(b1 és b3) Touch Press Event-ben pedig:
b1:
n0.val=n0.val+1
get n0.val
b3:
n0.val=n0.val-1
get n0.val
(próbáltam a számítást is kihagyni csak get n0.val)
Az én elméletemben mikor megnyomom valamelyik gombot, akkor változtatva az n0.val értékét ki kellene küldenie, amit a Serial monitoron látnom kellene.
különböző deklarálási típusok szerint a "beolvasott" változó mindig 65535, vagy -1, vagy char esetén csak - .
Rájöttem arra, hogy valójában nem fogadja az adatot vissza, mert, ha átnevezem a változót akkor is ezeket az értékeket látom viszont. Tehát z adat vagy nem jött meg vagy nem értelmezhető.
ugyanez print-el, és mindegy, hogy ki vagy be kapcsolom a Set component ID-t.
A Nextion.cpp file-ban lévő getComponentValue :
Vagy rosszul gondolom ez a parancs nem erre való?
itt van a leírása is: http://openhardware.gridshield.net/home ... -functions
Köszi!
Ugye miután be lett lőve a Nextion a main, illetve a setup-ba, egy változó adat kiküldése csak ennyi : myNextion.setComponentText("press", String(barValue)); A nextion editoban csak arra kell figyelni, hogy press.txt legyen a változó neve.
Hasonló módon akarok bekérni egy adatot a képernyőről,
int cel = myNextion.getComponentValue("n0");
majd ezzel a cel változóval számításokat szeretnék végezni.
Azért, hogy lássam, hogy megvan-e ami kell
Serial.print(cel);
A serial monitoron -1 jön vissza, bármit nyomok a kijelzőn...
a nextion-on van egy n0.val nevű változóm két nyomógombom(b1 és b3) Touch Press Event-ben pedig:
b1:
n0.val=n0.val+1
get n0.val
b3:
n0.val=n0.val-1
get n0.val
(próbáltam a számítást is kihagyni csak get n0.val)
Az én elméletemben mikor megnyomom valamelyik gombot, akkor változtatva az n0.val értékét ki kellene küldenie, amit a Serial monitoron látnom kellene.
különböző deklarálási típusok szerint a "beolvasott" változó mindig 65535, vagy -1, vagy char esetén csak - .
Rájöttem arra, hogy valójában nem fogadja az adatot vissza, mert, ha átnevezem a változót akkor is ezeket az értékeket látom viszont. Tehát z adat vagy nem jött meg vagy nem értelmezhető.
ugyanez print-el, és mindegy, hogy ki vagy be kapcsolom a Set component ID-t.
A Nextion.cpp file-ban lévő getComponentValue :
Kód: Egész kijelölése
unsigned int Nextion::getComponentValue(String component){
String getValue = "get "+ component +".val";//Get componetn value
unsigned int value = 0;
sendCommand(getValue.c_str());
uint8_t temp[8] = {0};
nextion->setTimeout(20);
if (sizeof(temp) != nextion->readBytes((char *)temp, sizeof(temp))){
return -1;
}//end if
if((temp[0]==(0x71))&&(temp[5]==0xFF)&&(temp[6]==0xFF)&&(temp[7]==0xFF)){
value = (temp[4] << 24) | (temp[3] << 16) | (temp[2] << 8) | (temp[1]);//Little-endian convertion
}//end if
return value;
}//get_component_value */
boolean Nextion::setComponentText(String component, String txt){
String componentText = component + ".txt=\"" + txt + "\"";//Set Component text
sendCommand(componentText.c_str());
return ack();
}//end set_component_txt
itt van a leírása is: http://openhardware.gridshield.net/home ... -functions
Köszi!
Re: Nextion HMI kezdő lépések
Ha csak rádugod usb-soros átalakítóra, mit küld vissza a HMI? Debug ablakban gombnyomásra megjelenik a jó adat?
Re: Nextion HMI kezdő lépések
Sajnos nincs USB-soros átalakítóm, de a debug ablakban jó érték megy ki. : 0x71 0x01 0x00 0x00 0x00 0xff 0xff 0xff jelenleg csak get n0.val a parancs és kezdőértéknek 0001 az értéke. Vagy várjunk csak most látom, hogy az érkező karaktereknél nagy F betűt vár, de a kijelző csak f-et küld. Lehet ez a baja? Mindjárt átírom a programban.
Update: hiába írtam át, nem változott semmi...
Update: hiába írtam át, nem változott semmi...
Re: Nextion HMI kezdő lépések
Sziasztok!
Lehet hogy benéztem egy rendelést: http://www.ebay.com/itm/131759625507?_t ... EBIDX%3AIT
Ez vajon a touch-os változat?
Jól értem hogy az editorban megirt programot az sd kártyára kell kiírni?
Köszi Szabolcs
Lehet hogy benéztem egy rendelést: http://www.ebay.com/itm/131759625507?_t ... EBIDX%3AIT
Ez vajon a touch-os változat?
Jól értem hogy az editorban megirt programot az sd kártyára kell kiírni?
Köszi Szabolcs
Re: Nextion HMI kezdő lépések
Igen, ez nagyon úgy néz ki, hogy touch-os. A program mehet SD-kártyára vagy feltölthető a soros porton keresztül is.
Re: Nextion HMI kezdő lépések
Köszi!
A soros portos letöltéshez megfelel egy USB-RS232 konverter is? Esetleg tápfesszel együtt?
A soros portos letöltéshez megfelel egy USB-RS232 konverter is? Esetleg tápfesszel együtt?
Re: Nextion HMI kezdő lépések
Igen. Én úgy használom amikor játszok vele.
Re: Nextion HMI kezdő lépések
https://www.itead.cc/nextion-nx4024k032 ... dd4bea2543
Fejlesztenek a fiúk. Már van rajta IO port is + akció.
Fejlesztenek a fiúk. Már van rajta IO port is + akció.
Re: Nextion HMI kezdő lépések
Hiánypótló fejlesztés. Amivel eddig küzdöttem, hogy egy arduinot rakjak mögé, ami kezeli az RTC-t és van rajta GPIO (I2C hő és páratartalom mérő, soros ESP wifi). Ha a fejlesztő környezet is követi a változást, akkor jó választás lesz, kidobhatok egy MCU-t.