Isi kandungan:
Video: Pendekatan Yang Berbeza Dengan Nextion: 3 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Dalam projek pertama saya dengan Arduino Nano yang disambungkan ke paparan sentuhan Nextion, saya telah menulis satu siri arahan yang panjang untuk disampaikan kepada Nextion melalui port bersiri dan ini tidak dapat dielakkan jika kita perlu menghantar arahan yang benar-benar bebas, pada saat-saat rawak.
Saya juga harus mengakui bahawa saya menghabiskan lebih banyak masa dalam 'berperang' dengan Perpustakaan daripada perkara lain. Oleh itu, saya secara beransur-ansur bekerja sepenuhnya tanpa perpustakaan ITEAD yang berat.
Saya segera menyedari bahawa saya tidak perlu mendesak untuk menyampaikan kepada Nextion perubahan pada sifat objek visual, tetapi saya lebih suka menunggu sehingga saya mengumpulkannya dan menghantarnya ke Nextion secara keseluruhan, apabila saya mendapat kumpulan yang lengkap.
Saya akan cuba menjelaskan diri saya dengan lebih baik.
Apabila dalam projek saya terdiri daripada 16 petunjuk teks, saya mahu menghidupkan atau mematikan beberapa daripadanya, saya melakukannya dengan memanfaatkan atribut 'bco' yang untuk menghidupkan, melewati (misalnya) dari kelabu gelap ke putih (jika di segi empat hitam), dan sebaliknya untuk mematikan.
Dalam aplikasi saya, saya merasa tidak berguna untuk menghantar 16 arahan ke port bersiri dalam 16 momen yang berbeza, satu untuk setiap 'bco' dari 16 isyarat.
Saya lebih suka Arduino mengumpulkan isyarat mana yang mesti dihidupkan (TINGGI) dan mana yang mesti 'mati' (RENDAH) dalam daftar 16-bit, di mana setiap bit sesuai dengan salah satu daripada 16 isyarat Nextion.
Setelah mengemas kini setiap bit daftar, saya mengirimkan nilainya ke Nextion, satu mesej yang mengandungi maklumat kolektif mengenai 16 elemen.
Dengan cara ini komunikasi dari Arduino dan Nextion sangat berkurang kerana dalam satu pesan yang dihantar pada siri ke Nextion, maklumat dikumpulkan yang sebaliknya memerlukan penghantaran 16 mesej.
Benar, tidak selalu diperlukan untuk mengemas kini semua laporan, tetapi saya yakin bahawa jika tidak, akan membuang lebih banyak masa.
Secara semula jadi setiap bit yang terdapat dalam bilangan bulat yang diterima oleh Arduino, paparan Nextion harus mengaitkannya dengan atribut yang diinginkan.
Ini bermaksud bahawa kod mesti ditulis dalam paparan Nextion, tetapi tidak perlu takut: jika saya berjaya…
Kemudian ada kelebihan berganda: Arduino akan mempunyai kod yang lebih ringan dan akan kurang terlibat dalam komunikasi bersiri dengan Nextion.
Nextion setelah menerima data dalam satu mesej, akan menggunakannya lebih cepat daripada jika menunggu 16 mesej. Oleh itu, menghidupkan atau mematikan 16 isyarat akan hampir seiring dengan mod yang paling biasa, di mana masa untuk sebilangan mesej yang tidak diketahui berlalu antara pelaksanaan perintah untuk isyarat pertama dan perintah untuk isyarat terakhir.
Dalam paparan Nextion saya membuat sistem ini dengan cara klasik, iaitu memutar daftar 'topeng' setiap kali membolehkan anda memeriksa setiap 16 bit. Apabila bit yang diperiksa adalah TINGGI, isyarat yang berkaitan dengan bit itu menyala pada paparan dan mati apabila bitnya RENDAH.
Aspek 'negatif' dari sistem ini adalah bahawa kod yang ditulis dalam paparan Nextion kurang senang didokumentasikan daripada kod Arduino. Selanjutnya, kod Nextion berisiko tersebar di pelbagai objek. Berhati-hati mesti mendokumentasikan apa yang anda lakukan dengan segera.
Saya menggunakan Notepad ++ untuk menulis kod yang kemudian saya salin ke objek Nextion yang hampir secara eksklusif di tm0 halaman 0.
Sintaks bahasa Nextion mempunyai banyak batasan, tetapi ia berjaya mengatasinya atau mengatasinya dengan sedikit usaha dan berusaha melihat masalah dari sudut pandang yang juga tidak biasa.
Sebagai contoh, saya melaporkan cara Arduino menulis daftar yang akan dihantar, ditulis oleh saya dengan cara paling asas yang mungkin.
Langkah 1: Bagaimana Daftar Dihantar
Dalam fail ArduinoCode. PDF saya menunjukkan semua lakaran saya. (Membaca kod di sini tidak begitu jelas)
Di sini, saya hanya ingin menunjukkan dengan cara mana Arduino menghantar Daftar 16 bit ke Nextion, tanpa bantuan perpustakaan, tetapi hanya menghormati sintaks yang dijelaskan oleh ITEAD.
//***************************************************************************************
batal NexUpd ()
//***************************************************************************************
{
SRSerial.print ("vINP.val =");
SRSerial.print (InpReg); // hantarkan 16 bit yang dikumpulkan ke Paparan Nextion
SRSerial.print (InpReg); // hantarkan 16 bit yang dikumpulkan ke Paparan Nextion
SRSerial.write (terminal); // 255
SRSerial.write (terminal); // 255
SRSerial.write (terminal); // 255
}
//***************************************************************************************
Langkah 2:.. Tetapi Sebelum…
Sudah tentu kodnya bermula dengan semua pernyataan dan penyediaan ().
Input INPUT_PULLUP, jadi suis input biasanya terbuka dan ketika ditutup, mereka menerapkan GND ke input koresponden.
(Ini adalah Instructable pertama saya dan saya minta maaf untuk menunjukkan kod saya dengan cara yang tidak baik ini. Sila muat turun fail ArduinoCode. PDF bahawa sangat jelas.
Izinkan saya membincangkannya lebih lanjut
Saya telah mengembangkan cara saya sendiri untuk 'memberitahu' kepada paparan Nextion apa yang mesti dilakukannya. Biasanya MCU (Arduino dalam kes saya) menghantar mesej untuk setiap variasi untuk diterapkan pada atribut mana-mana objek tunggal. Kaedah ini membuang banyak masa untuk melakukan perkara yang tidak selalu mendesak untuk memuat terus Jalur Bersiri. Saya merasa lebih senang bahawa Arduino mengumpulkan menjadi 16 bit mendaftarkan maklumat mengenai atribut yang berbeza-beza di Nextion. Kira-kira setiap 500 mS, Arduino saya menghantar kepada Nextion satu mesej yang mengandungi 16 bit yang terdapat dalam setiap daftar pada masa itu. Jelas di Nextion kita memerlukan kod yang mengendalikan apa yang mesti dilaksanakan. Pengagihan tugas ini (dan kodnya) memungkinkan mendapat banyak kelebihan lain. Contohnya, fikirkan bagaimana menjadikan cahaya berkedip! Dengan pendekatan saya mudah: masukkan sedikit ke dalam daftar Arduino dan hantarkan ke Nextion. Daftar berkembar Nextion dapat dikemas kini dari Arduino sangat jarang, kerana frekuensi berkedip itu tidak bergantung pada komunikasi; kekerapan berkelip bergantung dari objek Pemasa ke Nextion dan dapat berjalan dengan pangkalan waktu minimum hampir 50 mS. Oleh itu, dengan kaedah saya, kita dapat mengedipkan cahaya di Nextion pada frekuensi yang agak tinggi (misalkan 2 Hz), walaupun Arduino saya menghantar mesej setiap 10 saat, hanya untuk contoh yang ekstrem. Ini dapat menunjukkan masalah yang berlawanan: bagaimana melakukan jika Komunikasi gagal? Ini bukan objektif perbincangan ini, tetapi saya telah menyelesaikan masalah ini dengan sejenis Watch Dog: satu di dalam Kod Arduino, yang lain ke dalam kod Nextion.
Berkedip diatur oleh kod Nextion, di mana setiap cahaya mengikuti peraturannya yang betul: ON / OFF atau HIJAU / MERAH atau juga mengubah yang tertulis di dalamnya (atau lain-lain lagi). Saya dapat memberitahu beberapa perkara lain mengenai projek saya tetapi saya lebih suka menunggu soalan anda, sebelum menambahkan terlalu banyak perkataan yang tidak begitu mudah untuk saya terjemahkan seperti yang saya mahukan.
Langkah 3: Mengedit Objek Nextion
Berikut adalah bahagian kod yang saya tulis dengan Nextion Editor pada objek tm0.
Kita tidak dapat mengetahui bahawa dengan 16 bit yang diterima dari Arduino, paparan Nextion tidak hanya menghidupkan dan mematikan isyarat. Buat masa ini saya menghilangkan penjelasan agar tidak menyukarkan pemahaman.
Saya seorang pemula dan jadi lebih baik memuat turun kod Nextion. PDF daripada membaca kod yang keliru di sini. (Maaf, ini adalah arahan pertama saya)
Sekiranya anda mahu, anda boleh memuat turun kod lengkap "HMI" untuk ini aplikasi saya. Nama fail kod ini ialah POW1225. HMI. Ia boleh masuk ke paparan Nextion NX4024T032 anda tetapi untuk memahaminya anda harus memasukkan banyak objek dan melihat kod di dalam tetingkap kecil editor. Jadi saya rasa itu akan lebih senang untuk melihat kod utama, yang ditulis dalam fail Nextion code. PDF
// Projek POW1225. HMI 15 Mei 2019
// akumulator vACC (va0)
// vINP (va1) Daftar Input xxxx xxxx xxxx xxxx
tm0.en = 1 // tm0 Mula
tm0.tim = 50 // tm0 Pangkalan masa 50 mS
// RDY ***************
vACC.val = vINP.val & 0x0001 // Topeng
jika (vACC.val! = 0) // Uji RDY
{
tRDY.pco = BIRU // MERAH
} lain
{
tRDY.pco = GREY // kelabu gelap
}
// PWR ***************
vACC.val = vINP.val & 0x0002
jika (vACC.val! = 0) // Uji PWR
{
tPWR.pco = HIJAU // cahaya HIJAU
tPON.txt = "ON" // AKTIF
tPON.pco = HIJAU // terang HIJAU
} lain
{
tPWR.pco = GRAY // gelap GREY 33808
tPON.txt = "OFF" // MATI
tPON.pco = GRAY // gelap GREY 33808
}
// KERING ***************
vACC.val = vINP.val & 0x0004
jika (vACC.val! = 0) // Uji KERING
{
tDRV.pco = BIRU // BIRU
tDRY.pco = BIRU // BIRU
} lain
{
tDRV.pco = GRAY // gelap GREY 33808
tDRY.pco = GRAY // gelap GREY 33808
}
// JALANKAN ***************
vACC.val = vINP.val & 0x0018
jika (vACC.val! = 0) // Uji RUN
{
tRUN.bco = MERAH // MARCIA MERAH (dihidupkan)
tRUN.pco = HITAM // pada HITAM
tDIR.bco = MERAH // DIR MERAH
tDIR.pco = HITAM // pada HITAM
} lain
{
tRUN.bco = 32768 // MARCIA GREY (mati)
tRUN.pco = GRAY // pada GREY
tDIR.bco = 32768 // DIR gelap HIJAU 1024
tDIR.pco = GREY // DIR GREY
tDIR.txt = "---" // HENTI
}
// MENINGGALKAN **************
vACC.val = vINP.val & 0x0008
if (vACC.val! = 0) // Uji Jalankan Kanan
{
tDIR.txt = "<<<" // DIR KIRI
}
// KANAN *************
vACC.val = vINP.val & 0x0010
if (vACC.val! = 0) // Uji RUN Kiri
{
tDIR.txt = ">>>" // DIR KANAN
}
// KEDUA **************
vACC.val = vINP.val & 0x0018
if (vACC.val == 24) // Uji RUN kedua-duanya
{
tDIR.txt = ">>! <<" // DIR KEDUA
}
// UJIAN **************
vACC.val = vINP.val & 0x0020
jika (vACC.val! = 0) // UJIAN UJIAN
{
tTEST.pco = PUTIH // PUTIH
tsw tTEST, 1 // Dayakan peristiwa Sentuhan
} lain
{
tTEST.pco = GRAY // gelap GREY 33808
tsw tTEST, 0 // Lumpuhkan acara Sentuhan
}
// FAULT *************
vACC.val = vINP.val & 0x0040
jika (vACC.val == 0) // UJIAN KESALAHAN
{
tFLT.pco = GREY // FAULT tidak hadir
}
jika (vACC.val! = 0)
{
tFLT.pco = KUNING // FAULT hadir
}
// EME ***************
vACC.val = vINP.val & 0x0080
jika (vACC.val == 0) // Uji EME
{
tEME.pco = GREY // EME tidak hadir
}
jika (vACC.val! = 0)
{
tEME.pco = MERAH // EME hadir
}
}
// FERMO *************
vACC.val = vINP.val & 0x0100
jika (vACC.val! = 0) // Uji FERMO
{
tFER.pco = HITAM // HITAM
tFER.bco = HIJAU // HIJAU
} lain
{
tFER.pco = GREY // GREY
tFER.bco = 672 // gelap HIJAU
}
// *******************
Ucapan terima kasih
Saya ingin memberikan penghargaan kepada Gideon Rossouwv kerana dengan membaca Instruksinya, saya telah memperoleh sebahagian daripada objektif saya dengan cepat. Terima kasih puan. Gideon Rossouwv
Disyorkan:
Lensa Makro Diy Dengan AF (Berbeza dengan Semua Lensa Makro DIY Lain): 4 Langkah (dengan Gambar)
Lensa Makro Diy Dengan AF (Berbeza dengan Semua Lensa Makro DIY Lain): Saya telah melihat banyak orang membuat lensa makro dengan lensa kit standard (Biasanya 18-55mm). Sebilangan besar lensa hanya melekat pada kamera ke belakang atau elemen depan dikeluarkan. Terdapat kelemahan untuk kedua-dua pilihan ini. Untuk memasang lensa
OLOID Bergerak - Haiwan Peliharaan Berbeza dalam Masa Berbeza: 10 Langkah (dengan Gambar)
OLOID yang Bergerak - Haiwan Peliharaan yang Berbeza pada Masa yang Berbeza: Corona telah mengubah hidup kita: ia memerlukan kita untuk menjauhkan secara fizikal, yang seterusnya membawa kepada jarak sosial. Jadi apa yang boleh menjadi penyelesaian? Mungkin haiwan kesayangan? Tetapi tidak, Corona berasal dari haiwan. Mari selamatkan diri kita dari Corona 2.0 yang lain. Tetapi jika kita ha
Lampu Berurutan LED Dengan 7 Kesan Sejuk yang berbeza !: 8 Langkah
Lampu LED Berurutan Dengan 7 Kesan Sejuk yang berbeza!: Projek ini merangkumi 7 kesan cahaya berurutan yang berbeza yang akan diliputi kemudian. Ia diilhamkan oleh salah seorang pencipta yang saya lihat di Youtube beberapa hari yang lalu, dan saya merasa sangat keren, jadi saya ingin berkongsi perkara ini dengan anda semua dan membuat
Manipulasi Monitor Led Dengan Kumpulan Kawalan Yang Berbeza. Hiasan LED di Arduino: 6 Langkah
Manipulasi Monitor Led Dengan Kumpulan Kawalan yang Berbeza. Hiasan LED di Arduino: Topik untuk projek komputer Arduino adalah untuk ' Memanipulasi Monitor Led Dengan Kumpulan Kawalan yang Berbeza. Hiasan LED di Arduino ". Dalam peranti Arduino ini, terdapat dua kumpulan kawalan yang berbeza yang dapat mengawal monitor LED dan
Cara Bekerja Dengan Arduino dan LGB RGB yang berbeza: 3 Langkah
Cara Bekerja Dengan Arduino dan LGB RGB yang berbeza: Arduino adalah peranti kecil yang luar biasa. Tetapi salah satu aplikasi yang paling banyak digunakan untuk peranti kecil yang kuat ini ialah sering memancarkan atau mengedipkan LED. Tutorial ini akan menunjukkan kepada anda tiga cara untuk bekerja dengan RGB Leds dan Arduino. Cara pertama adalah menggunakan