Talaan ng mga Nilalaman:
- Hakbang 1: Paano Ipinadala ang Rehistro
- Hakbang 2:.. Ngunit Bago …
- Hakbang 3: Pag-edit ng Mga Bagay na Nextion
Video: Isang Iba't ibang Diskarte Sa Nextion: 3 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
Sa aking unang proyekto kasama ang Arduino Nano na nakakonekta sa Nextion touch display, nagsulat ako ng isang mahabang serye ng mga utos upang maiparating sa Nextion sa pamamagitan ng serial port at hindi ito maiiwasan kung kailangan nating magpadala ng ganap na independiyenteng mga utos, sa mga random na sandali.
Aaminin ko din na gumugol ako ng mas maraming oras sa 'pakikipaglaban' sa Mga Aklatan kaysa sa anupaman. Kaya't unti-unti akong nagtatrabaho nang wala ang mga mabibigat na aklatan ng ITEAD.
Sa lalong madaling panahon napagtanto ko na wala akong pagpipilit na makipag-usap sa Nextion ng mga pagbabago sa mga katangian ng mga visual na bagay, ngunit mas gusto kong maghintay hanggang sa kolektahin ko sila at ipadala ang mga ito sa Nextion bilang isang buo, nang makakuha ako ng isang kumpletong pangkat.
Susubukan kong ipaliwanag nang mas mabuti ang aking sarili.
Kapag sa aking proyekto na binubuo ng 16 na pahiwatig na pang-tekstuwal na nais kong buksan o i-off ang ilan sa kanila, ginagawa ko ito sa pamamagitan ng pagsasamantala sa katangiang 'bco' na para sa pag-on, ipinapasa (halimbawa) mula sa maitim na kulay-abo hanggang puti (kung sa isang itim na rektanggulo), at vice versa upang patayin.
Sa aking aplikasyon nahanap kong walang silbi na magpadala ng 16 na mga utos sa serial port sa 16 na magkakaibang sandali, isa para sa bawat 'bco' ng 16 signal.
Mas gusto ko sa halip na kolektahin ng Arduino kung aling mga signal ang dapat na 'nasa' (TAAS) at alin ang dapat na 'off' (LOW) sa isang 16-bit na rehistro, kung saan ang bawat bit ay tumutugma sa isa sa 16 na pagbibigay ng senyas ng Nextion.
Matapos i-update ang bawat piraso ng rehistro, ipinapadala ko ang halaga nito sa Nextion, isang solong mensahe na naglalaman ng isang kolektibong impormasyon tungkol sa 16 na elemento.
Sa ganitong paraan ang komunikasyon mula sa Arduino at Nextion ay lubos na nabawasan sapagkat sa iisang mensahe na naihatid sa serial sa Nextion, nakolekta ang impormasyon na kung hindi ay kinakailangan ng paghahatid ng 16 na mensahe.
Totoo, hindi laging kinakailangan na i-update ang lahat ng mga ulat, ngunit sigurado ako na upang gawin kung hindi man ay mag-aaksaya ng mas maraming oras.
Naturally ang bawat bit na nilalaman sa integer na natanggap ng Arduino, ang pagpapakita ng Nextion ay kailangang iugnay ito sa nais na katangian.
Nangangahulugan ito na ang code ay dapat na nakasulat sa pagpapakita ng Nextion, ngunit hindi ito dapat matakot: kung magtagumpay ako …
Pagkatapos mayroong isang dobleng kalamangan: Ang Arduino ay magkakaroon ng isang mas magaan na code at hindi gaanong nakikilahok sa serial na komunikasyon sa Nextion.
Ang nextion pagkatapos matanggap ang data sa isang solong mensahe, gagamitin ang mga ito nang mas mabilis kaysa sa maghihintay ito ng 16 na mensahe. Ang pag-on o pag-off ng 16 signal ay samakatuwid ay halos magkakasabay na patungkol sa pinaka-karaniwang mode, kung saan ang oras para sa isang hindi kilalang bilang ng mga mensahe ay lumipas sa pagitan ng pagpapatupad ng utos para sa unang pagbibigay ng senyas at utos para sa huling pagbibigay ng senyas.
Sa display na Nextion nilikha ko ang sistemang ito sa klasikong paraan, iyon ay, ang pag-on ng isang 'mask' register bawat oras ay nagbibigay-daan sa iyo upang suriin ang bawat isa sa 16 na piraso. Kapag ang maliit na napagmasdan ay MASAKI, ang signal na nauugnay sa bit na iyon ay nag-iilaw sa display at patayin kapag ang isang medyo mababa.
Ang aspetong 'negatibo' ng sistemang ito ay ang code na nakasulat sa pagpapakita ng Nextion ay hindi gaanong naidodokumento kaysa sa Arduino code. Bukod dito, mapanganib ang code ng Nextion na nakakalat sa iba't ibang mga object. Dapat mag-ingat upang idokumento ang kaagad mong ginagawa.
Gumagamit ako ng Notepad ++ upang isulat ang code na pagkatapos ay kopyahin ko sa bagay na Nextion na halos eksklusibo sa tm0 ng pahina 0.
Ang syntax ng wikang Nextion ay may maraming mga limitasyon, ngunit namamahala ito upang mapagtagumpayan ang mga ito o upang mapalibot ang mga ito nang may pinakamaliit na pagsisikap at subukan na makita ang mga problema mula sa mga pananaw na hindi rin karaniwan.
Bilang isang halimbawa, iniuulat ko ang paraan kung saan nagsusulat si Arduino ng rehistro upang maipadala, na isinulat ko sa pinaka-elementarya na paraan na posible.
Hakbang 1: Paano Ipinadala ang Rehistro
Sa file na ArduinoCode. PDF ipinapakita ko ang lahat ng aking sketch. (Ang pagbabasa ng code dito pababa ay hindi gaanong malinaw)
Dito pababa, nais kong ipakita lamang sa kung aling paraan ipadala ng Arduino ang 16 bit na Magrehistro sa Nextion, nang walang tulong ng mga aklatan, ngunit respeto ng jus sa syntax na inilarawan ng ITEAD.
//***************************************************************************************
walang bisa ang NexUpd ()
//***************************************************************************************
{
SRSerial.print ("vINP.val =");
SRSerial.print (InpReg); // ihatid ang 16 na nakolektang mga piraso sa Nextion Display
SRSerial.print (InpReg); // ihatid ang 16 na nakolektang mga piraso sa Nextion Display
SRSerial.write (termin); // 255
SRSerial.write (termin); // 255
SRSerial.write (termin); // 255
}
//***************************************************************************************
Hakbang 2:.. Ngunit Bago …
Siyempre nagsisimula ang code sa lahat ng mga deklarasyon at pag-setup ().
Ang mga Input ay INPUT_PULLUP, kaya't ang mga switch ng input ay karaniwang bukas at kapag sarado, inilalapat nila ang GND sa input ng sulat.
(Ito ang aking unang Makatuturo at humihingi ako ng paumanhin na ipakita sa iyo ang aking code sa masamang paraan. Mangyaring i-download ang file na ArduinoCode. PDF na napakalinaw nito.
Hayaan mong pag-usapan ko pa ito
Bumuo ako ng aking sariling paraan upang 'sabihin' sa pagpapakita ng Nextion kung ano ang dapat gawin. Kadalasan ang MCU (Arduino sa aking kaso) ay nagpapadala ng isang mensahe para sa bawat solong pagkakaiba-iba upang mailapat sa katangian ng anumang solong object. Ang methode na ito ay nag-aaksaya ng maraming oras upang gawin ang mga bagay na hindi palaging kagyat na mag-load ng tuloy-tuloy sa Serial Line. Natagpuan ko na mas maginhawa na kinokolekta ng Arduino sa 16 bit ang pagrehistro ng impormasyon tungkol sa mga katangian na magkakaiba sa Nextion. Halos bawat 500 mS, ang aking Arduino ay nagpapadala sa Nextion ng isang mensahe na naglalaman ng 16 bit na nilalaman sa bawat rehistro sa oras. Malinaw na sa Nextion kailangan namin ang code na humahawak sa dapat ipatupad. Ang pamamahagi ng gawain (at ang code) hayaan makakuha ng maraming iba pang mga kalamangan. Halimbawa, isipin kung paano gawing isang ilaw ang blink! Sa aking diskarte madali ito: magtakda ng kaunti sa Arduino register at ipadala ito sa Nextion. Ang Nextion kambal rehistro ay maaaring ma-update mula sa Arduino napaka-bihirang, dahil ang blink dalas ito ay malaya mula sa komunikasyon; ang dalas ng blink ay nakasalalay mula sa isang Timer na bagay sa Nextion at maaaring tumakbo kasama ang minimum na base ng oras malapit sa 50 mS. Kaya sa aking pamamaraan maaari kaming magpikit ng ilaw sa Nextion sa dalas na medyo mataas (kunwari 2 Hz), kahit na ang aking Arduino ay nagpapadala ng mga mensahe bawat 10 segundo, para lamang sa isang matinding halimbawa. Maaari itong magmungkahi ng kabaligtaran na problema: kung paano gawin kung nabigo ang Komunikasyon? Hindi ito ang layunin ng talakayang ito, ngunit nalutas ko na ang problemang ito sa isang uri ng Watch Dog: isa sa loob ng Arduino Code, isa pa sa Nextion code.
Ang blinking ay kinokontrol ng Nextion code, kung saan ang bawat ilaw ay sumusunod sa kanyang wastong mga panuntunan: ON / OFF o GREEN / RED o binabago din ang nakasulat sa loob (o iba pa). Maaari kong sabihin ang ilang iba pang mga bagay tungkol sa aking proyekto ngunit mas gusto kong maghintay ng iyong mga katanungan, bago magdagdag ng masyadong maraming mga salita na hindi ganoon kadali para sa akin na magsalin nang maayos tulad ng gusto ko.
Hakbang 3: Pag-edit ng Mga Bagay na Nextion
Narito ang isang bahagi ng code na isinulat ko kasama ang Nextion Editor sa bagay na tm0.
Hindi ito nakaligtas sa aming paunawa na sa 16 na piraso na natanggap mula sa Arduino, ang pagpapakita ng Nextion ay hindi lamang i-on at i-off ang mga signal. Para sa sandaling tinatanggal ko ang mga paliwanag upang hindi masalimuot ang pag-unawa.
Ako ay isang nagsisimula at sa gayon mas mahusay na i-download ang Nextion code. PDF na pahina sa halip na basahin ang nalilito na code dito pababa. (Pasensya na ito ang aking unang itinuro)
Kung nais mo maaari mong i-download ang kumpletong code na "HMI" para sa aking application. Ang filename ng code na ito ay POW1225. HMI. Maaari itong tumakbo sa iyong Nextion display NX4024T032 ngunit upang maunawaan ito kailangan mong lumangoy sa maraming mga bagay at tingnan ang code sa loob ng maliit na window ng editor. Kaya sa palagay ko mas madali itong tingnan ang pangunahing code, nakasulat sa file na Nextion code. PDF
// Project POW1225. HMI 15 Mayo 2019
// vACC (va0) Accumulator
// vINP (va1) Mag-rehistro ng Input xxxx xxxx xxxx xxxx
tm0.en = 1 // tm0 Magsimula
tm0.tim = 50 // tm0 Oras ng batayan 50 mS
// RDY *************
vACC.val = vINP.val & 0x0001 // Mask
kung (vACC.val! = 0) // Test RDY
{
tRDY.pco = BLUE // RED
} iba pa
{
tRDY.pco = GRAY // dark GRAY
}
// PWR ***** *****
vACC.val = vINP.val & 0x0002
kung (vACC.val! = 0) // Subukan ang PWR
{
tPWR.pco = GREEN // light GREEN
tPON.txt = "ON" // ON
tPON.pco = GREEN // light GREEN
} iba pa
{
tPWR.pco = GRAY // dark GRAY 33808
tPON.txt = "OFF" // OFF
tPON.pco = GRAY // dark GRAY 33808
}
// DRY *************
vACC.val = vINP.val & 0x0004
kung (vACC.val! = 0) // DRY ng pagsubok
{
tDRV.pco = BLUE // BLUE
tDRY.pco = BLUE // BLUE
} iba pa
{
tDRV.pco = GRAY // dark GRAY 33808
tDRY.pco = GRAY // dark GRAY 33808
}
// TAKBAK **** *********
vACC.val = vINP.val & 0x0018
kung (vACC.val! = 0) // Test RUN
{
tRUN.bco = RED // MARCIA RED (on)
tRUN.pco = BLACK // on BLACK
tDIR.bco = PULA // DIR RED
tDIR.pco = BLACK // on BLACK
} iba pa
{
tRUN.bco = 32768 // MARCIA GRAY (off)
tRUN.pco = GRAY // sa GRAY
tDIR.bco = 32768 // DIR dark GREEN 1024
tDIR.pco = GRAY // DIR GRAY
tDIR.txt = "---" // TIGIL
}
// KALIWANI ***** *****
vACC.val = vINP.val & 0x0008
kung (vACC.val! = 0) // Test RUN Right
{
tDIR.txt = "<<<" // DIR LEFT
}
// TAMA *************
vACC.val = vINP.val & 0x0010
kung (vACC.val! = 0) // Test RUN Kaliwa
{
tDIR.txt = ">>>" // DIR RIGHT
}
// KAPITAN **** *********
vACC.val = vINP.val & 0x0018
kung (vACC.val == 24) // Test RUN pareho
{
tDIR.txt = ">>! <<" // DIR BOTH
}
// PAGSUSULIT **************
vACC.val = vINP.val & 0x0020
kung (vACC.val! = 0) // Test TEST
{
tTEST.pco = PUTI // PUTI
tsw tTEST, 1 // Paganahin ang mga kaganapan sa Touch
} iba pa
{
tTEST.pco = GRAY // dark GRAY 33808
tsw tTEST, 0 // Huwag paganahin ang mga kaganapan sa Touch
}
// FAULT *************
vACC.val = vINP.val & 0x0040
kung (vACC.val == 0) // FAULT
{
tFLT.pco = GRAY // FAULT absent
}
kung (vACC.val! = 0)
{
tFLT.pco = DILAW // KASALANAN kasalukuyan
}
// EME *************
vACC.val = vINP.val & 0x0080
kung (vACC.val == 0) // Test EME
{
tEME.pco = GRAY // EME absent
}
kung (vACC.val! = 0)
{
tEME.pco = PULA // EME kasalukuyan
}
}
// FERMO *************
vACC.val = vINP.val & 0x0100
kung (vACC.val! = 0) // Subukan ang FERMO
{
tFER.pco = BLACK // BLACK
tFER.bco = GREEN // GREEN
} iba pa
{
tFER.pco = GRAY // GRAY
tFER.bco = 672 // dark GREEN
}
// *******************
Pagkilala
Nais kong ibigay ang aking mga pagkilala kay Gideon Rossouwv sapagkat ang pagbabasa ng kanyang Mga Tagubilin Nakakuha ako ng mabilis na bahagi ng aking mga layunin. Salamat mr. Gideon Rossouwv
Inirerekumendang:
Diy Macro Lens Sa AF (Iba't Ibang sa Lahat ng Iba Pang Mga DIY Macro Lensa): 4 na Hakbang (na may Mga Larawan)
Diy Macro Lens With AF (Iba Pa Sa Lahat ng Iba Pang DIY Macro Lensa): Nakita ko ang maraming tao na gumagawa ng mga macro lens na may karaniwang kit lens (Karaniwan isang 18-55mm). Karamihan sa kanila ay isang lens na dumidikit lamang sa camera paatras o inalis ang pang-una na elemento. Mayroong mga downside para sa pareho sa mga pagpipiliang ito. Para sa pag-mount ng lens
Bumubuo ng Iba't ibang Mga Tunog Mula sa Mga Pelikula Gamit Ang Lamang Arduino: 3 Mga Hakbang
Bumubuo ng Iba't Ibang Mga Tunog Mula sa Mga Pelikulang Gumagamit Lamang ng Arduino: As-salamu alaykum! Nais kong makabuo ng iba't ibang mga tunog tulad ng maninila, optimus prime & bumblebee mula sa pelikulang transpormer. Totoong nanonood ako ng " ang hacksmith " video tungkol sa paggawa ng predator helmet.
The Moving OLOID - isang Iba't ibang Alagang Hayop sa Iba't Ibang Panahon: 10 Hakbang (na may Mga Larawan)
The Moving OLOID - isang Iba't Ibang Alagang Hayop sa Iba't Ibang Panahon: Binago ni Corona ang ating buhay: kinakailangan nito sa distansya ng pisikal, na kung saan ay hahantong sa paglayo ng lipunan. Kaya't ano ang maaaring maging solusyon? Baka alaga? Ngunit hindi, si Corona ay nagmula sa mga hayop. I-save natin ang ating sarili mula sa isa pang Corona 2.0. Ngunit kung tayo ay
Mga pattern ng LED (Iba't ibang Mga Banayad na pattern): 3 Mga Hakbang
Mga pattern ng LED (Iba't ibang Mga Banayad na pattern): Ang Ideya: Ang aking proyekto ay isang pattern ng kulay na LED. Naglalaman ang proyekto ng 6 LEDs na lahat ay pinalakas at nakikipag-usap sa Arduino. Mayroong 4 na magkakaibang mga pattern na ikot ikot at i-play sa isang loop. Kapag natapos ang isang pattern, isa pang
Bumubuo ng Mga Tono ng Iba't ibang Mga Uri Gamit ang Mga Equation na Matematika (MathsMusic) Arduino: 5 Mga Hakbang
Bumubuo ng Mga Tono ng Iba't Ibang Mga Uri Gamit ang Mga Equation ng Matematika (MathsMusic) Arduino: Paglalarawan ng Proyekto: Nagsimula ang bagong paglalakbay kung saan madaling maipatupad ang mga ideya gamit ang open source na pamayanan (Salamat sa Arduino). Kaya narito ang isang paraan · Tumingin sa paligid ng iyong sarili at obserbahan ang iyong nakapaligid · Tuklasin ang Mga Problema na kailangang