Satura rādītājs:
Video: Atšķirīga pieeja ar Nextion: 3 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
Savā pirmajā projektā ar Arduino Nano, kas savienots ar Nextion skārienekrānu, es biju uzrakstījis garu komandu sēriju, kas jāpaziņo Nextion, izmantojot seriālo portu, un tas ir neizbēgami, ja mums ir jānosūta pilnīgi neatkarīgas komandas nejaušos brīžos.
Man arī jāatzīst, ka es vairāk laika pavadīju cīņā ar bibliotēkām. Tā es pamazām sāku strādāt pilnīgi bez smagām ITEAD bibliotēkām.
Drīz es sapratu, ka man nav nekādas steigas paziņot Nextion par vizuālo objektu atribūtu izmaiņām, bet es labprātāk gaidu, kamēr tās apkopošu un nosūtīšu uz Nextion kopumā, kad ieguvu pilnu grupu.
Es centīšos labāk izskaidrot sevi.
Ja savā projektā, kas sastāv no 16 teksta norādēm, es vēlos dažas no tām ieslēgt vai izslēgt, es to daru, izmantojot atribūtu “bco”, kas ieslēgšanai pāriet (piemēram) no tumši pelēkas uz baltu (ja melns taisnstūris), un otrādi, lai izslēgtu.
Savā lietojumprogrammā es uzskatīju, ka ir bezjēdzīgi nosūtīt 16 komandas uz seriālo portu 16 dažādos brīžos, pa vienam katram 16 signālu “bco”.
Tā vietā es dodu priekšroku tam, lai Arduino savāktu signālus, kuriem jābūt ieslēgtiem (HIGH) un kuriem jābūt izslēgtiem (LOW) 16 bitu reģistrā, kur katrs bits atbilst vienam no 16 Nextion signāliem.
Pēc katra reģistra bita atjaunināšanas es nosūtu tā vērtību Nextion - vienam ziņojumam, kurā ir apkopota informācija par 16 elementiem.
Tādā veidā tiek ievērojami samazināta saziņa no Arduino un Nextion, jo vienā ziņojumā, kas tiek pārraidīts sērijā uz Nextion, tiek apkopota informācija, kas citādi būtu prasījusi 16 ziņojumu pārsūtīšanu.
Tiesa, ne vienmēr ir jāatjaunina visi pārskati, taču esmu pārliecināts, ka citādi būtu jātērē vairāk laika.
Protams, katrs bits, kas atrodas Arduino saņemtajā veselā skaitlī, Nextion displejam tas būs jāsaista ar vēlamo atribūtu.
Tas nozīmē, ka kods ir jāraksta Nextion displejā, taču tas nav jābaidās: ja man tas izdodas…
Tad ir dubultā priekšrocība: Arduino būs vieglāks kods un mazāk iesaistīsies sērijas sakaros ar Nextion.
Nextion pēc datu saņemšanas vienā ziņojumā tos izmantos daudz ātrāk nekā tad, ja gaidītu 16 ziņojumus. Tādējādi 16 signālu ieslēgšana vai izslēgšana būs gandrīz vienlaicīga attiecībā uz visparastāko režīmu, kurā laiks starp nezināmu ziņojumu skaitu paiet no pirmās signāla komandas izpildes līdz pēdējās signalizācijas komandai.
Nextion displejā es izveidoju šo sistēmu klasiskā veidā, tas ir, katru reizi pagriežot “masku” reģistru, jūs varat pārbaudīt katru no 16 bitiem. Ja pārbaudītais bits ir HIGH, ar šo bitu saistītais signāls iedegas displejā un izslēdzas, kad bits ir LOW.
Šīs sistēmas “negatīvais” aspekts ir tāds, ka Nextion displejā ierakstīto kodu ir mazāk ērti dokumentēt nekā Arduino kodu. Turklāt Nextion kods riskē tikt izkaisīts pa dažādiem objektiem. Ir jārūpējas, lai nekavējoties dokumentētu to, ko darāt.
Es izmantoju Notepad ++, lai uzrakstītu kodu, ko pēc tam nokopēju Nextion objektā, kas ir gandrīz tikai 0 lapas tm0.
Nextion valodas sintaksei ir daudz ierobežojumu, taču tai izdodas tos pārvarēt vai apiet ar minimālu piepūli, kā arī mēģināt aplūkot problēmas no neparasta viedokļa.
Kā piemēru es ziņoju par veidu, kādā Arduino raksta pārsūtāmo reģistru, ko es uzrakstīju pēc iespējas elementārākā veidā.
1. darbība. Reģistra pārsūtīšana
Failā ArduinoCode. PDF es rādu visu savu skici. (Lasot kodu šeit, tas nav tik skaidrs)
Šeit es vēlos tikai parādīt, kādā veidā Arduino nosūta 16 bitu reģistru uz Nextion bez bibliotēku palīdzības, bet ievērojot ITEAD aprakstīto sintaksi.
//***************************************************************************************
anulēts NexUpd ()
//***************************************************************************************
{
SRSerial.print ("vINP.val =");
SRSerial.print (InpReg); // pārsūtiet 16 savāktos bitus uz Nextion displeju
SRSerial.print (InpReg); // pārsūtiet 16 savāktos bitus uz Nextion displeju
SRSerial.write (terminālis); 255
SRSerial.write (terminālis); 255
SRSerial.write (terminālis); 255
}
//***************************************************************************************
2. solis:.. Bet pirms…
Protams, kods sākas ar visām deklarācijām un iestatīšanu ().
Ieejas ir INPUT_PULLUP, tāpēc ieejas slēdži parasti ir atvērti, un, aizverot, tie piemēro GND atbilstošajai ieejai.
(Šī ir mana pirmā pamācība, un man žēl parādīt jums savu kodu šādā sliktā veidā. Lūdzu, lejupielādējiet failu ArduinoCode. PDF, ka tas ir ļoti skaidrs.
Ļaujiet man vairāk par to runāt
Esmu izstrādājis savu veidu, kā “pateikt” Nextion displejam, kas tam jādara. Parasti MCU (manā gadījumā Arduino) nosūta ziņojumu par katru variāciju, kas attiecas uz jebkura atsevišķa objekta atribūtu. Šī metode tērē daudz laika, lai darītu lietas, kas ne vienmēr ir tik steidzamas, lai nepārtraukti ielādētu sērijas līniju. Man šķita ērtāk, ja Arduino savāc 16 bitu reģistros informāciju par atribūtiem, kas atšķiras atkarībā no Nextion. Apmēram ik pēc 500 mS mans Arduino nosūta Nextion vienu ziņojumu, kas satur katrā reģistrā esošos 16 bitus. Acīmredzot Nextion mums ir nepieciešams kods, kas apstrādā to, kas jāizpilda. Šāds uzdevuma (un koda) sadalījums ļauj iegūt daudzas citas priekšrocības. Piemēram, padomājiet, kā likt mirgot gaismai! Ar manu pieeju tas ir vienkārši: nedaudz iestatiet Arduino reģistrā un nosūtiet to uz Nextion. Nextion dvīņu reģistrus no Arduino varētu atjaunināt ļoti reti, jo mirgošanas frekvence ir neatkarīga no saziņas; mirgošanas biežums ir atkarīgs no taimera objekta uz Nextion un var darboties ar minimālo laika bāzi gandrīz 50 mS. Tātad ar manu metodi mēs varam mirgot Nextion gaismā ar salīdzinoši augstu frekvenci (pieņemsim, 2 Hz), pat ja mans Arduino sūta ziņojumus ik pēc 10 sekundēm, tikai ekstremālam piemēram. Tas var liecināt par pretēju problēmu: kā rīkoties, ja saziņa neizdodas? Tas nav šīs diskusijas objekts, bet es jau esmu atrisinājis šo problēmu ar sava veida sargsuņa palīdzību: viens Arduino kodā, cits Nextion kodā.
Mirgošanu regulē Nextion kods, kur katra gaisma atbilst viņa pareizajiem noteikumiem: IESLĒGTS/IZSLĒGTS vai ZAĻS/SARKANS vai arī mainot rakstīto (vai citu). Es varētu pastāstīt dažas citas lietas par savu projektu, bet es labāk gaidu jūsu jautājumus, pirms pievienoju pārāk daudz vārdu, kurus man nav tik viegli iztulkot, kā es to darītu.
3. darbība: Nextion objektu rediģēšana
Šeit ir daļa no koda, ko es uzrakstīju ar Nextion Editor uz objekta tm0.
Mēs nepamanām, ka ar 16 bitiem, kas saņemti no Arduino, Nextion displejs ne tikai ieslēdz un izslēdz signālus. Pagaidām izlaižu paskaidrojumus, lai nesarežģītu izpratni.
Esmu iesācējs, tāpēc labāk ir lejupielādēt Nextion kodu. PDF lapu, lai lasītu sajaukto kodu šeit. (Atvainojiet, šī ir mana pirmā pamācība)
Ja vēlaties, šai manai lietojumprogrammai varat lejupielādēt pilnu kodu "HMI". Šī koda faila nosaukums ir POW1225. HMI. Tas var iekļūt jūsu Nextion displejā NX4024T032, bet, lai to saprastu, jums ir jāiepeldējas daudzos objektos un jāaplūko kods redaktora mazajā logā. Tāpēc es domāju, ka būs vieglāk apskatīt galveno kodu, kas rakstīts failā Nextion code. PDF
// Projekts POW1225. HMI 2019. gada 15. maijs
// vACC (va0) Akumulators
// vINP (va1) Ievades reģistrs xxxx xxxx xxxx xxxx
tm0.en = 1 // tm0 Sākt
tm0.tim = 50 // tm0 Laika bāze 50 mS
// RDY ***************
vACC.val = vINP.val & 0x0001 // Maska
ja (vACC.val! = 0) // Pārbaudiet RDY
{
tRDY.pco = ZILS // SARKANS
} cits
{
tRDY.pco = PELĒKA // tumši pelēka
}
// PWR ***************
vACC.val = vINP.val & 0x0002
ja (vACC.val! = 0) // Pārbaudiet PWR
{
tPWR.pco = ZAĻA // gaiši ZAĻA
tPON.txt = "IESLĒGTS" // IESLĒGTS
tPON.pco = ZAĻA // gaiši ZAĻA
} cits
{
tPWR.pco = PELĒKA // tumši pelēka 33808
tPON.txt = "IZSLĒGTS" // IZSLĒGTS
tPON.pco = PELĒKA // tumši pelēka 33808
}
// DRY ***************
vACC.val = vINP.val & 0x0004
if (vACC.val! = 0) // Pārbaudīt DRY
{
tDRV.pco = ZILS // ZILS
tDRY.pco = ZILS // ZILS
} cits
{
tDRV.pco = PELĒKA // tumši pelēka 33808
tDRY.pco = PELĒKA // tumši pelēka 33808
}
// RUN ***************
vACC.val = vINP.val & 0x0018
ja (vACC.val! = 0) // Testa RUN
{
tRUN.bco = RED // MARCIA RED (ieslēgts)
tRUN.pco = BLACK // uz BLACK
tDIR.bco = SARKANS // DIR SARKANS
tDIR.pco = BLACK // uz BLACK
} cits
{
tRUN.bco = 32768 // MARCIA GREY (izslēgts)
tRUN.pco = PELĒKA // pelēkā krāsā
tDIR.bco = 32768 // DIR tumši zaļa 1024
tDIR.pco = PELĒKA // DIR GREY
tDIR.txt = "---" // STOP
}
// pa kreisi **************
vACC.val = vINP.val & 0x0008
if (vACC.val! = 0) // Test RUN Right
{
tDIR.txt = "<<<" // KREISIS KREISIS
}
// TAISNĪBA *************
vACC.val = vINP.val & 0x0010
if (vACC.val! = 0) // Test RUN Left
{
tDIR.txt = ">>>" // TIEŠAIS
}
// Abos **************
vACC.val = vINP.val & 0x0018
if (vACC.val == 24) // Pārbaudīt RUN abus
{
tDIR.txt = ">>! <<" // DIRB
}
// PĀRBAUDE **************
vACC.val = vINP.val & 0x0020
ja (vACC.val! = 0) // Pārbaudes tests
{
tTEST.pco = BALTS // BALTS
tsw tTEST, 1 // Iespējot pieskāriena notikumus
} cits
{
tTEST.pco = PELĒKA // tumši pelēka 33808
tsw tTEST, 0 // Atspējot Touch notikumus
}
// FAULT *************
vACC.val = vINP.val & 0x0040
ja (vACC.val == 0) // Testa kļūda
{
tFLT.pco = PELĒKA // KĻŪDA nav
}
ja (vACC.val! = 0)
{
tFLT.pco = DZELTENS // KĻŪDA
}
// EME ***************
vACC.val = vINP.val & 0x0080
ja (vACC.val == 0) // Pārbaudiet EME
{
tEME.pco = PELĒKA // EME nav
}
ja (vACC.val! = 0)
{
tEME.pco = RED // EME klāt
}
}
// FERMO *************
vACC.val = vINP.val & 0x0100
ja (vACC.val! = 0) // Pārbaudiet FERMO
{
tFER.pco = MELNA // MELNA
tFER.bco = ZAĻA // ZAĻA
} cits
{
tFER.pco = PELĒKA // PELĒKA
tFER.bco = 672 // tumši ZAĻA
}
// *******************
Apstiprinājums
Es vēlos pateikties Gideonam Rossouvam, jo, lasot viņa pamācības, esmu ātri sasniedzis daļu no saviem mērķiem. Paldies, mr. Gideons Rossuvs
Ieteicams:
Sirdsdarbības ātruma mērīšana ir pirksta galā: fotopletismogrāfijas pieeja sirdsdarbības noteikšanai: 7 soļi
Sirdsdarbības ātruma mērīšana ir pirksta galā: fotopletismogrāfija Pieeja sirdsdarbības ātruma noteikšanai: Fotopletismogrāfs (PPG) ir vienkārša un lēta optiskā tehnika, ko bieži izmanto, lai noteiktu asins tilpuma izmaiņas audu mikrovaskulārajā gultnē. To galvenokārt izmanto neinvazīvi, lai veiktu mērījumus uz ādas virsmas, parasti
Erguro-one ir Sonos Play 5 veidotāja pieeja ar IKEA Kuggis kastīti: 7 soļi (ar attēliem)
Erguro-one ir Sonos Play 5 veidotāja pieeja ar IKEA Kuggis Box: Šis projekts radās pēc tam, kad pirmo reizi dzirdēju Sonos Play 5 skaļruņus, mani tik ļoti pārsteidza skaņas kvalitāte, ņemot vērā skaļruņa mazo izmēru, zemās frekvences ir absolūti iespaidīgas, tāpēc man pieder 2 Play 5 ;-) es h
Kā pārvērst savu dizainu par profesionālu PCB plati - Mana pieeja: 9 soļi
Kā pārvērst savu dizainu par profesionālu PCB plati | Mana pieeja: šajā amatā es dalīšos ar savu pieeju profesionālas PCB plates izveidošanai, veicot tikai dažus detalizētus soļus. Esmu arī ievietojis tā paša videoklipu, varat to noskatīties vai turpināt lasīt ziņu, lai iegūtu detalizētu skaidrojumu. Tātad, sāksim ar
Windows Bluetooth sistēmas analīze - SensorTag pieeja: 7 soļi (ar attēliem)
Windows Bluetooth sistēmas analīze - SensorTag pieeja: Tālāk es analizēšu Windows operētājsistēmu (OS) no saziņas viedokļa ar Bluetooth zema enerģijas patēriņa ierīcēm - mūsu gadījumā ar dažāda veida SensorTags: Thunderboard React, Thunderboard Sense (b
AM modulators - optiskais pieeja: 6 soļi (ar attēliem)
AM modulators - Optical Aproach: Pirms mēnešiem es nopirku šo DIY AM radio uztvērēja komplektu no Banggood. Esmu to samontējis. (Kā to izdarīt, es plānoju aprakstīt atsevišķā instrukcijā) Pat bez jebkādas noregulēšanas bija iespējams noķert dažas radiostacijas, bet es centos sasniegt