Orodha ya maudhui:
- Hatua ya 1: Jinsi Daftari linavyosambazwa
- Hatua ya 2:.. Lakini Kabla ya…
- Hatua ya 3: Kuhariri Vitu vya Nextion
Video: Njia tofauti na Ufuatao: Hatua 3
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Katika mradi wangu wa kwanza na Arduino Nano iliyounganishwa na onyesho la Nextion kugusa, nilikuwa nimeandika safu ndefu ya maagizo kupelekwa kwa Nextion kupitia bandari ya serial na hii haiwezi kuepukika ikiwa tunahitaji kutuma amri huru kabisa, kwa wakati mfupi.
Lazima pia nikubali kwamba nilitumia wakati mwingi katika 'kupigana' na Maktaba kuliko kitu kingine chochote. Kwa hivyo pole pole nilikuja kufanya kazi bila maktaba nzito ya ITEAD.
Hivi karibuni niligundua kuwa sikuwa na uharaka wa kuwasiliana na Nextion mabadiliko ya sifa za vitu vya kuona, lakini napendelea kusubiri hadi nizikusanye na kuzituma kwa Nextion kwa ujumla, nilipopata kikundi kamili.
Nitajaribu kujielezea vizuri.
Wakati katika mradi wangu ulio na viashiria 16 vya maandishi nataka kuwasha au kuzima baadhi yao, ninafanya hivyo kwa kutumia sifa ya 'bco' ambayo kwa kuwasha, hupita (kwa mfano) kutoka kijivu nyeusi hadi nyeupe (ikiwa in mstatili mweusi), na kinyume chake kuzima.
Katika maombi yangu niliona haina maana kutuma amri 16 kwa bandari ya serial kwa muda 16 tofauti, moja kwa kila 'bco' ya ishara 16.
Ninapendelea badala yake kwamba Arduino ikusanye ni ishara zipi lazima ziwe "juu" (HIGH) na ni zipi lazima ziwe "off" (LOW) katika rejista ya 16-bit, ambapo kila kidogo inalingana na moja ya ishara 16 ya Nextion.
Baada ya kusasisha kila daftari, ninasambaza dhamana yake kwa Nextion, ujumbe mmoja ambao una habari ya pamoja kuhusu mambo 16.
Kwa njia hii mawasiliano kutoka Arduino na Nextion yamepunguzwa sana kwa sababu katika ujumbe huo mmoja uliosambazwa kwenye serial kwenda kwa Nextion, habari hukusanywa ambayo vinginevyo ingehitaji usambazaji wa ujumbe 16.
Ukweli, sio lazima kila wakati kusasisha ripoti zote, lakini nina hakika kuwa kufanya vinginevyo kutapoteza wakati zaidi.
Kwa kawaida kila kipande kilichomo kwenye nambari iliyopokelewa na Arduino, onyesho la Nextion italazimika kuihusisha na sifa inayotarajiwa.
Hii inamaanisha kuwa nambari lazima iandikwe kwenye onyesho la Nextion, lakini haifai kuogopa: ikiwa nimefaulu…
Halafu kuna faida maradufu: Arduino atakuwa na nambari nyepesi na atakuwa chini ya mawasiliano ya serial na Nextion.
Ujumbe baada ya kupokea data katika ujumbe mmoja, utazitumia haraka sana kuliko ikiwa ungengojea ujumbe 16. Kuzima au kuzima kwa ishara 16 kwa hivyo itakuwa karibu wakati huo huo kwa hali ya kawaida, ambayo wakati wa idadi isiyojulikana ya ujumbe hupita kati ya utekelezaji wa amri ya ishara ya kwanza na amri ya ishara ya mwisho.
Katika onyesho la Nextion niliunda mfumo huu kwa njia ya kawaida, ambayo ni kwamba, kugeuza rejista ya 'mask' kila wakati hukuruhusu kuchunguza kila moja ya 16 bits. Kidogo kinapochunguzwa ni JUU, ishara inayohusishwa na taa hiyo inaangaza kwenye onyesho na inazima wakati kidogo ni CHINI.
Kipengele cha 'hasi' cha mfumo huu ni kwamba nambari iliyoandikwa kwenye onyesho la Nextion haifai sana kuandikwa kuliko nambari ya Arduino. Kwa kuongezea, nambari ya Nextion ina hatari ya kutawanyika juu ya vitu anuwai. Uangalifu lazima uchukuliwe kuandika kile unachofanya mara moja.
Ninatumia Notepad ++ kuandika nambari ambayo mimi huinakili kwenye kitu cha Nextion ambacho kiko karibu katika tm0 ya ukurasa 0.
Sintaksia ya lugha ya Nextion ina mapungufu mengi, lakini inaweza kushinda au kuzunguka kwa bidii na kujaribu kuona shida kutoka kwa maoni ambayo pia sio ya kawaida.
Kama mfano, naripoti njia ambayo Arduino anaandika sajili ili kupitishwa, iliyoandikwa na mimi kwa njia ya msingi zaidi iwezekanavyo.
Hatua ya 1: Jinsi Daftari linavyosambazwa
Katika faili ArduinoCode. PDF ninaonyesha mchoro wangu wote. (Kusoma nambari hapa chini sio wazi sana)
Hapa chini, nataka tu kuonyesha ni kwa njia gani Arduino tuma Sajili 16 kidogo kwa Nextion, bila msaada wa maktaba, lakini jus akiheshimu sintaksia iliyoelezewa na ITEAD.
//***************************************************************************************
tupu NexUpd ()
//***************************************************************************************
{
SRSerial.print ("vINP.val =");
SRSerial.print (InpReg); // kusambaza bits 16 zilizokusanywa kwenye Onyesho la Nextion
SRSerial.print (InpReg); // kusambaza bits 16 zilizokusanywa kwenye Onyesho la Nextion
Andika (termin); // 255
Andika (termin); // 255
Andika (termin); // 255
}
//***************************************************************************************
Hatua ya 2:.. Lakini Kabla ya…
Kwa kweli nambari huanza na matamko yote na usanidi ().
Pembejeo ni INPUT_PULLUP, kwa hivyo swichi za kuingiza kawaida hufunguliwa na zikifungwa, hutumia GND kwa pembejeo ya mwandishi.
(Hii ni ya kwanza kufundishwa na samahani kukuonyesha nambari yangu kwa njia hii mbaya. Tafadhali pakua faili ArduinoCode. PDF kwamba ni wazi sana.
Ngoja nizungumze juu yake zaidi
Nimebuni njia yangu mwenyewe ya 'kuwaambia' maonyesho ya Nextion ni nini inapaswa kufanya. Kawaida MCU (Arduino kwa upande wangu) hutuma ujumbe kwa kila tofauti ili kutumika kwa sifa ya kitu chochote kimoja. Methode hii hupoteza muda mwingi kufanya vitu sio haraka sana kupakia mfululizo wa Line Serial. Nimeona ni rahisi zaidi kwamba Arduino kukusanya katika rejista 16 kidogo habari juu ya sifa za kutofautiana kwenye Nextion. Karibu kila mS 500, Arduino yangu anatuma kwa Nextion ujumbe mmoja ulio na biti 16 zilizomo katika kila rejista kwa wakati. Kwa wazi katika Nextion tunahitaji nambari inayoshughulikia kile lazima kifanyike. Usambazaji huu wa kazi (na nambari) hebu pata faida zingine nyingi. Kwa mfano, fikiria jinsi ya kufanya blink taa! Kwa njia yangu ni rahisi: weka kidogo kwenye rejista ya Arduino na upeleke kwa Nextion. Sajili za mapacha ya Nextion zinaweza kusasishwa kutoka Arduino mara chache sana, kwa sababu mzunguko wa blink ni huru kutoka kwa mawasiliano; mzunguko wa blink unategemea kutoka kwa kitu cha Timer kwenda kwa Nextion na inaweza kukimbia na msingi wa muda wa chini karibu na 50 mS. Kwa hivyo kwa njia yangu tunaweza kupepesa taa katika Nextion kwa masafa ya juu (tuseme 2 Hz), hata kama Arduino yangu atatuma ujumbe kila sekunde 10, kwa mfano uliokithiri. Hii inaweza kupendekeza shida tofauti: jinsi ya kufanya ikiwa Mawasiliano hayatafaulu? Hili sio lengo la mjadala huu, lakini tayari nimetatua shida hii na aina ya Mbwa wa Kuangalia: moja ndani ya Nambari ya Arduino, na nyingine kwenye nambari ya Nextion.
Kupepesa kunasimamiwa na nambari ya Nextion, ambapo kila taa inafuata sheria zake sahihi: ZIMA / ZIMA au KIJANI / RED au pia kubadilisha yaliyoandikwa ndani (au mengine zaidi). Ningeweza kuambia mambo mengine juu ya mradi wangu lakini napendelea kusubiri maswali yako, kabla ya kuongeza maneno mengi sio rahisi kwangu kutafsiri vizuri kama vile ningefanya.
Hatua ya 3: Kuhariri Vitu vya Nextion
Hapa kuna sehemu ya nambari niliyoandika na Nextion Mhariri kwenye kitu cha tm0.
Haitoroki taarifa yetu kwamba na bits 16 zilizopokelewa kutoka Arduino, onyesho la Nextion haliwashi na kuzima tu ishara. Kwa sasa ninaacha maelezo ili nisije nikasumbua uelewa.
Mimi ni waanzilishi na kwa hivyo ni bora kupakua nambari ya Nextion. PDF badala yake kusoma nambari iliyochanganyikiwa hapa chini. (Samahani hii ndio mafunzo yangu ya kwanza)
Ikiwa unataka unaweza kupakua nambari kamili "HMI" kwa programu hii. Jina la faili la nambari hii ni POW1225. HMI. Inaweza kukimbia kwenye onyesho lako la Nextion NX4024T032 lakini ili kuielewa lazima uogelee kwenye vitu vingi na uangalie nambari ndani ya dirisha dogo la mhariri. Kwa hivyo nadhani hiyo itakuwa rahisi zaidi kutafuta nambari kuu, iliyoandikwa kwenye nambari ya Nextion ya faili
// Mradi POW1225. HMI 15 Mei 2019
// vACC (va0) Mkusanyiko
// vINP (va1) Daftari la Kuingiza xxxx xxxx xxxx xxxx
tm0.en = 1 // tm0 Anza
tm0.tim = 50 // tm0 Msingi wa saa 50 mS
// RDY ***************
vACC.val = vINP.val & 0x0001 // Mask
ikiwa (vACC.val! = 0) // Jaribu RDY
{
tRDY.pco = BLUE // NYEKUNDU
} mwingine
{
tRDY.pco = KIJIVU // kijivu kijivu
}
// PWR ***************
vACC.val = vINP.val & 0x0002
ikiwa (vACC.val! = 0) // Jaribu PWR
{
tPWR.pco = KIJANI / KIJANI
tPON.txt = "ON" // ILIYO
tPON.pco = KIJANI // KIJIVU KIJANI
} mwingine
{
tPWR.pco = KIJIVU // kijivu kijivu 33808
tPON.txt = "ZIMA" // ZIMA
tPON.pco = KIJIVU // kijivu kijivu 33808
}
// KAKAVU ***************
vACC.val = vINP.val & 0x0004
ikiwa (vACC.val! = 0) // Jaribu DRY
{
tDRV.pco = BLUE // BLUE
tDRY.pco = BLUE // BLUE
} mwingine
{
tDRV.pco = KIJIVU // kijivu kijivu 33808
tDRY.pco = KIJIVU // kijivu kijivu 33808
}
// KIMBIA ***************
vACC.val = vINP.val & 0x0018
ikiwa (vACC.val! = 0) // Jaribu RUN
{
tRUN.bco = NYEKUNDU // MARCIA RED (on)
tRUN.pco = NYEUSI // kwa NYEUSI
tDIR.bco = NYEKUNDU // DIR NYEKUNDU
tDIR.pco = NYEUSI // kwa NYEUSI
} mwingine
{
tRUN.bco = 32768 // MARCIA GRAY (imezimwa)
tRUN.pco = KIJIVU // kwenye kijivu
tDIR.bco = 32768 // DIR giza KIJANI 1024
tDIR.pco = KIJIVU // KIJIVU KIJIVU
tDIR.txt = "---" // STOP
}
// KUSHOTO **************
vACC.val = vINP.val & 0x0008
ikiwa (vACC.val! = 0) // Jaribu RUN Haki
{
tDIR.txt = "<<<" // DIR LEFT
}
// HAKI *************
vACC.val = vINP.val & 0x0010
ikiwa (vACC.val! = 0) // Jaribu RUN Kushoto
{
tDIR.txt = ">>>" // DIR HAKI
}
// WOTE **************
vACC.val = vINP.val & 0x0018
ikiwa (vACC.val == 24) // Jaribu RUN zote mbili
{
tDIR.txt = ">>! <<" // DIR BOTH
}
// Jaribio **************
vACC.val = vINP.val & 0x0020
ikiwa (vACC.val! = 0) // Jaribio la Mtihani
{
MTIHANI.pco = NYEUPE // NYEUPE
Jaribio la tsw, 1 // Wezesha hafla za Kugusa
} mwingine
{
MTIHANI.pco = KIJIVU // kijivu kijivu 33808
Jaribio la tsw, 0 // Lemaza hafla za Kugusa
}
// KOSA *************
vACC.val = vINP.val & 0x0040
ikiwa (vACC.val == 0) // Jaribio LA KOSA
{
tFLT.pco = KIJIVU // KOSA haipo
}
ikiwa (vACC.val! = 0)
{
tFLT.pco = MANJANO // KOSA iko
}
// EME ***************
vACC.val = vINP.val & 0x0080
ikiwa (vACC.val == 0) // Jaribu EME
{
tEME.pco = KIJIVU // EME haipo
}
ikiwa (vACC.val! = 0)
{
tEME.pco = NYEKUNDU // EME sasa
}
}
// FERMO *************
vACC.val = vINP.val & 0x0100
ikiwa (vACC.val! = 0) // Jaribu FERMO
{
tFER.pco = NYEUSI // NYEUSI
tFER.bco = KIJANI / KIJANI
} mwingine
{
tFER.pco = KIJIVU // KIJIVU
tFER.bco = 672 // giza KIJANI
}
// *******************
Shukrani
Ninataka kutoa shukurani zangu kwa Gideon Rossouwv kwa sababu kusoma Maagizo yake nimepata haraka sehemu ya malengo yangu. Asante mr. Gideon Rossouwv
Ilipendekeza:
Wimbo-ufuatao Kuangaza-kuwasha-O-Taa !: 6 Hatua
Wimbo unaofuata Kuangaza-kuwasha-taa-ya-taa
Tofauti kati ya (Njia Mbadala ya Sasa na ya Moja kwa Moja): Hatua 13
Tofauti kati ya (Njia mbadala ya sasa na ya moja kwa moja): Kila mtu anajua kuwa umeme ni Dc, lakini vipi kuhusu aina nyingine ya umeme? Je! Unamjua Ac? Je! AC inasimama kwa nini? Inatumika basi DC? Katika utafiti huu tutajua tofauti kati ya aina ya umeme, vyanzo, matumizi
OLOID ya Kusonga - Mnyama tofauti katika Nyakati Tofauti: Hatua 10 (na Picha)
Kusonga kwa OLOID - mnyama tofauti kwa nyakati tofauti: Corona amebadilisha maisha yetu: inahitaji sisi kuwa umbali wa kisayansi, ambayo husababisha kuenea kwa jamii. Kwa hivyo suluhisho linaweza kuwa nini? Labda mnyama? Lakini hapana, Corona hutoka kwa wanyama. Wacha tujiokoe kutoka Corona 2.0 nyingine. Lakini ikiwa sisi ha
Taa ya Utaftaji wa LED na athari tofauti tofauti za 7!: Hatua 8
Taa ya Utaftaji wa LED na athari tofauti tofauti za 7! Mradi huu unajumuisha athari 7 tofauti za taa za mfululizo ambazo zitafunikwa baadaye. Imeongozwa na mmoja wa waundaji niliowaona kwenye Youtube siku chache zilizopita, na ninaona ni nzuri sana kwa hivyo ningependa kushiriki hii na nyinyi watu na kufanya kamili
Njia tofauti za Kuungana na Mac Mini yako: Hatua 5
Njia tofauti za Kuungana na Mac Mini yako: Kuunganisha kwa mini mini yako ukiwa nyumbani au mbali ni muhimu, haswa ikiwa huna panya ya kibodi na ufuatiliaji umeambatanishwa kabisa. Kipande kimoja cha lugha tunahitaji kuweka mikataba ya moja kwa moja na kompyuta ambayo tunazungumzia. Nitatumia kila wakati