Sisukord:
Video: Erinev lähenemine Nextioniga: 3 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Oma esimeses projektis, kus Arduino Nano oli ühendatud Nextioni puutetundliku ekraaniga, olin kirjutanud pika seeria käske, mida Nextionile jadaporti kaudu edastada, ja see on vältimatu, kui peame saatma täiesti sõltumatud käsud juhuslikel hetkedel.
Pean ka tunnistama, et veetsin raamatukogudega võitlemisel rohkem aega kui miski muu. Nii hakkasin tasapisi täiesti ilma raskete ITEADi raamatukogudeta tööle.
Mõistsin peagi, et mul ei ole kiiret vajadust Nextionile visuaalsete objektide atribuutide muudatustest teatada, kuid eelistan oodata, kuni need kokku kogun, ja saata need tervikuna Nextionile.
Püüan ennast paremini selgitada.
Kui oma projektis, mis koosneb 16 tekstinäidust, tahan mõned neist sisse või välja lülitada, kasutan seda atribuudi „bco” abil, mis sisselülitamisel muutub (näiteks) tumehallist valgeks (kui must ristkülik) ja väljalülitamiseks vastupidi.
Leidsin, et minu rakenduses on kasutu saata 16 käsku jadapordile 16 erineval hetkel, üks iga 16 signaali bco kohta.
Eelistan selle asemel, et Arduino koguks 16-bitises registris, millised signaalid peavad olema sisse lülitatud (HIGH) ja millised välja lülitatud (LOW), kus iga bit vastab ühele Nextioni 16 signaalist.
Pärast registri iga bitti värskendamist edastan selle väärtuse Nextionile, ühele sõnumile, mis sisaldab 16 elemendi kohta koguteavet.
Sel moel väheneb Arduino ja Nextioni suhtlus märkimisväärselt, sest selle ühe jada kaudu Nextionile edastatud sõnumi käigus kogutakse teavet, mis muidu oleks nõudnud 16 sõnumi edastamist.
Tõsi, alati pole vaja kõiki aruandeid värskendada, kuid olen kindel, et muidu toimides kuluks rohkem aega.
Loomulikult peab iga Arduino saadud täisarvu bitti Nextioni kuvar seostama selle soovitud atribuudiga.
See tähendab, et kood tuleb Nextioni ekraanile kirjutada, kuid ärge kartke: kui mul see õnnestub…
Siis on kahekordne eelis: Arduinol on kergem kood ja ta tegeleb vähem Nextioniga jadasidega.
Nextion pärast andmete saamist ühes sõnumis kasutab neid palju kiiremini kui 16 sõnumi ootamine. 16 signaali sisselülitamine või väljalülitamine on seega peaaegu samaaegne kõige tavalisema režiimi puhul, mille puhul esimese signaalimise käsu täitmise ja viimase signaalimise käsu vahel möödub tundmatu arvu sõnumite aeg.
Nextioni ekraanil lõin selle süsteemi klassikalisel viisil, see tähendab, et iga kord, kui keerate maskiregistri, saate uurida iga 16 bitti. Kui uuritud bitt on HIGH, süttib selle bitiga seotud signaal ekraanil ja kustub, kui bitt on LOW.
Selle süsteemi negatiivne aspekt on see, et Nextioni ekraanile kirjutatud koodi on vähem mugav dokumenteerida kui Arduino koodi. Lisaks võib Nextioni kood hajutada erinevate objektide vahel. Tuleb hoolitseda selle eest, et dokumenteeriksite kohe, mida teete.
Kasutan Notepad ++ koodi kirjutamiseks, mille seejärel kopeerin Nextioni objekti, mis asub peaaegu eranditult lehe 0 tm0 -s.
Nextioni keele süntaksil on palju piiranguid, kuid see suudab neist üle saada või neist minimaalse pingutusega mööda minna ning püüda näha probleeme ka ebatavalistest vaatenurkadest.
Näitena toon välja viisi, kuidas Arduino kirjutab edastatava registri, mille olen kirjutanud võimalikult elementaarsel viisil.
Samm: kuidas registrit edastatakse
Failis ArduinoCode. PDF näitan kogu oma visandit. (Koodi lugedes pole see nii selge)
Siin all tahan ma ainult näidata, kuidas Arduino 16 -bitise registri Nextionile saadab, ilma raamatukogude abita, kuid austades ITEADi kirjeldatud süntaksit.
//***************************************************************************************
tühine NexUpd ()
//***************************************************************************************
{
SRSerial.print ("vINP.val =");
SRSerial.print (InpReg); // edastage 16 kogutud bitti Nextioni kuvarile
SRSerial.print (InpReg); // edastage 16 kogutud bitti Nextioni kuvarile
SRSerial.write (terminal); 255
SRSerial.write (terminal); 255
SRSerial.write (terminal); 255
}
//***************************************************************************************
2. samm:.. Aga enne…
Loomulikult algab kood kõigi deklaratsioonide ja seadistusega ().
Sisendid on INPUT_PULLUP, seega on sisendlülitid tavaliselt avatud ja kui need on suletud, rakendavad nad GND -d vastavale sisendile.
(See on minu esimene Instructable ja mul on kahju teile oma koodi nii halvasti näidata. Palun laadige alla fail ArduinoCode. PDF, et see on väga selge.
Las ma räägin sellest lähemalt
Olen välja töötanud oma viisi, kuidas Nextioni ekraanile öelda, mida see peab tegema. Tavaliselt saadab MCU (minu puhul Arduino) sõnumi iga variatsiooni kohta, mida kohaldatakse iga üksiku objekti atribuudi suhtes. See meetod raiskab palju aega, et teha asju, mis ei ole alati nii kiireloomulised, et järjestikune liin pidevalt laadida. Leidsin, et Arduino on mugavam koguda 16 -bitistesse registritesse teavet atribuutide kohta, mis Nextioni puhul erinevad. Umbes iga 500 ms järel saadab minu Arduino Nextionile ühe sõnumi, mis sisaldab igas registris sisalduvat 16 bitti korraga. Ilmselt vajame Nextionis koodi, mis haldab seda, mida tuleb täita. See ülesande (ja koodi) jaotus võimaldab saada palju muid eeliseid. Näiteks mõelge, kuidas panna vilkuma! Minu lähenemisega on see lihtne: seadke natuke Arduino registrisse ja saatke see Nextionile. Nextioni kaksikregistreid saab Arduinost uuendada väga harva, kuna vilkumissagedus on kommunikatsioonist sõltumatu; Vilgumissagedus sõltub taimeri objektist Nextioni ja võib töötada minimaalse ajavahemikuga 50 mS lähedal. Nii et minu meetodi abil saame Nextionis suhteliselt kõrgel sagedusel (oletame 2 Hz) valgustada, isegi kui minu Arduino saadab sõnumeid iga 10 sekundi tagant, ainult äärmusliku näite jaoks. See võib soovitada vastupidist probleemi: kuidas toimida, kui side ebaõnnestub? See ei ole selle arutelu objekt, kuid olen selle probleemi juba lahendanud omamoodi valvekoeraga: üks Arduino koodi sees, teine Nextioni koodis.
Vilkuvust reguleerib Nextioni kood, kus iga valgus järgib tema õigeid reegleid: ON/OFF või ROHELINE/PUNANE või muudab ka sisemust (või muud). Ma võiksin oma projekti kohta veel mõndagi rääkida, kuid eelistan teie küsimusi oodata, enne kui lisan liiga palju sõnu, mida pole nii lihtne tõlkida, nagu ma seda teeksin.
3. samm: Nextion -objektide redigeerimine
Siin on osa koodist, mille kirjutasin Nextion Editoriga objektile tm0.
Me ei hoia tähelepanuta, et Arduinolt saadud 16 bitiga ei lülita Nextioni ekraan lihtsalt sisse ja välja signaale. Hetkel jätan selgitused välja, et mitte arusaamist keerulisemaks muuta.
Olen algaja ja seetõttu on parem alla laadida Nextioni kood. PDF -i leht, et lugeda segaduses olevat koodi siit allapoole. (Vabandust, see on mu esimene juhendatav)
Soovi korral saate selle minu rakenduse jaoks alla laadida täieliku koodi "HMI". Selle koodi failinimi on POW1225. HMI. See võib sattuda teie Nextioni ekraanile NX4024T032, kuid selle mõistmiseks peate ujuma paljudesse objektidesse ja vaatama koodi redaktori väikesest aknast. Nii et ma arvan, et on lihtsam vaadata põhikoodi, mis on kirjutatud faili Nextion code. PDF
// Projekt POW1225. HMI 15. mai 2019
// vACC (va0) Aku
// vINP (va1) Sisendregister xxxx xxxx xxxx xxxx
tm0.en = 1 // tm0 Alusta
tm0.tim = 50 // tm0 Aja baas 50 mS
// RDY ***************
vACC.val = vINP.val & 0x0001 // Mask
if (vACC.val! = 0) // Testi RDY
{
tRDY.pco = SININE // PUNANE
} muud
{
tRDY.pco = HALL // tumeHALL
}
// PWR ***************
vACC.val = vINP.val & 0x0002
if (vACC.val! = 0) // Testi PWR
{
tPWR.pco = ROHELINE // hele ROHELINE
tPON.txt = "SEES" // SEES
tPON.pco = ROHELINE // hele ROHELINE
} muud
{
tPWR.pco = HALL // tume HALL 33808
tPON.txt = "VÄLJAS" // VÄLJAS
tPON.pco = HALL // tume HALL 33808
}
// KUIV ***************
vACC.val = vINP.val & 0x0004
if (vACC.val! = 0) // Test DRY
{
tDRV.pco = SININE // SININE
tDRY.pco = SININE // SININE
} muud
{
tDRV.pco = HALL // tume HALL 33808
tDRY.pco = HALL // tume HALL 33808
}
// RUN ***************
vACC.val = vINP.val & 0x0018
if (vACC.val! = 0) // Test RUN
{
tRUN.bco = PUNANE // MARCIA RED (sees)
tRUN.pco = MUST // mustal
tDIR.bco = PUNANE // DIR PUNANE
tDIR.pco = MUST // mustal
} muud
{
tRUN.bco = 32768 // MARCIA GREY (väljas)
tRUN.pco = HALL // hallil
tDIR.bco = 32768 // DIR tume GREEN 1024
tDIR.pco = HALL // DIR HALL
tDIR.txt = "---" // STOP
}
// VASAK **************
vACC.val = vINP.val & 0x0008
if (vACC.val! = 0) // Test RUN Right
{
tDIR.txt = "<<<" // VASAK
}
// ÕIGE *************
vACC.val = vINP.val & 0x0010
if (vACC.val! = 0) // Test RUN Left
{
tDIR.txt = ">>>" // ÕIGE
}
// MÕLEMAD **************
vACC.val = vINP.val & 0x0018
if (vACC.val == 24) // Testi RUN mõlemad
{
tDIR.txt = ">>! <<" // MÕLEM
}
// TEST **************
vACC.val = vINP.val & 0x0020
if (vACC.val! = 0) // Test TEST
{
tTEST.pco = VALGE // VALGE
tsw tTEST, 1 // Luba puutetundlikud sündmused
} muud
{
tTEST.pco = HALL // tumeHALL 33808
tsw tTEST, 0 // Puuteürituste keelamine
}
// VIGA *************
vACC.val = vINP.val & 0x0040
if (vACC.val == 0) // Test FAULT
{
tFLT.pco = HALL // VIGA puudub
}
kui (vACC.val! = 0)
{
tFLT.pco = KOLLANE // VIGA esineb
}
// EME ***************
vACC.val = vINP.val & 0x0080
if (vACC.val == 0) // Testi EME
{
tEME.pco = HALL // EME puudub
}
kui (vACC.val! = 0)
{
tEME.pco = PUNANE // EME on kohal
}
}
// FERMO **************
vACC.val = vINP.val & 0x0100
if (vACC.val! = 0) // Testi FERMO
{
tFER.pco = MUST // MUST
tFER.bco = ROHELINE // ROHELINE
} muud
{
tFER.pco = HALL // HALL
tFER.bco = 672 // tume ROHELINE
}
// *******************
Tunnustus
Ma tahan Gideon Rossouwvile oma tänu avaldada, sest tema juhendit lugedes olen kiiresti saavutanud osa oma eesmärkidest. Tänan teid, mr. Gideon Rossouwv
Soovitan:
Diy makroobjektiiv koos teravustamisega (erinev kui kõik muud DIY makroobjektiivid): 4 sammu (koos piltidega)
Diy makroobjektiiv koos teravustamisega (erinev kui kõik muud DIY makroobjektiivid): olen näinud palju inimesi, kes teevad makroläätsi tavalise komplekti objektiiviga (tavaliselt 18–55 mm). Enamik neist on objektiiv, mis on lihtsalt tagurpidi kaamera külge kinnitatud või esielement eemaldatud. Mõlemal variandil on varjuküljed. Objektiivi kinnitamiseks
Liikuv OLOID - erinev lemmikloom erinevatel aegadel: 10 sammu (piltidega)
Liikuv OLOID - erinev lemmikloom erinevatel aegadel: Koroon on muutnud meie elu: see nõuab meilt füüsilist distantseerumist, mis omakorda viib sotsiaalse distantseerumiseni. Mis siis võiks olla lahendus? Võibolla lemmikloom? Aga ei, Corona pärineb loomadelt. Päästkem end järjekordse Corona 2.0 eest. Aga kui meil on
Erguro-one on Sonos Play 5 tegija lähenemine IKEA Kuggis Boxiga: 7 sammu (piltidega)
Erguro-one on Sonos Play 5 tegija lähenemine IKEA Kuggis Boxiga: see projekt sündis pärast seda, kui ma esimest korda Sonos Play 5 kõlareid kuulsin, mul oli kõlari väiksuse tõttu helikvaliteet nii muljet avaldanud, madalad sagedused on täiesti muljetavaldavad, sel põhjusel on mul 2 Play 5;-) I h
Kuidas muuta oma disain professionaalseks trükkplaadiks - Minu lähenemine: 9 sammu
Kuidas muuta oma disain professionaalseks trükkplaadiks | Minu lähenemine: selles postituses jagan oma lähenemisviisi professionaalse trükkplaadi ehitamiseks väga väheste sammudega. Olen lisanud ka sama video, saate seda vaadata või jätkata postituse lugemist üksikasjaliku selgituse saamiseks. Nii et alustame
Windowsi Bluetooth -süsteemi analüüs - SensorTag lähenemine: 7 sammu (piltidega)
Windowsi Bluetooth -süsteemi analüüs - SensorTag -lähenemine: Järgnevalt analüüsin Windowsi operatsioonisüsteemi (OS) Bluetooth Low Energy seadmetega suhtlemise seisukohast - meie puhul erinevat tüüpi SensorTagidega: Thunderboard React, Thunderboard Sense (b