Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pembuatan Menu LCD Bebas Kode Menggunakan XOD

Komponen dan persediaan

Arduino UNO
× 1
DFRobot Arduino LCD/Keypad Shield
× 1

Aplikasi dan layanan online

Lingkungan XOD

Tentang proyek ini

Prosesor yang memberi daya pada papan pengembangan Arduino bukanlah mikrokontroler kakek Anda - mereka memiliki kekuatan pemrosesan yang serius dan dapat digunakan untuk memantau dan mengontrol berbagai jenis perangkat keras fisik dan sensor secara bersamaan. IDE pemrograman grafis XOD untuk Arduino dapat menyederhanakan tugas desain perangkat keras prototipe cepat, tetapi ketika sistem tumbuh dalam kompleksitas, ada masalah kontrol pengguna dan manajemen informasi - bagaimana mengatur informasi tentang proses yang dikendalikan untuk ditampilkan dan membiarkan pengguna mengendalikannya secara logis. Tombol dan sakelar khusus berfungsi untuk proyek sederhana tetapi segera kehabisan cara logis untuk mengaturnya (atau tempat untuk meletakkannya di penutup.) Banyak desain menggunakan tampilan dari beberapa jenis untuk memberikan umpan balik semacam ini, bahkan oven microwave biasanya memiliki layar kecil yang memungkinkan pengeditan pengaturan dan memasukkan waktu memasak, dan sementara terlalu banyak "menu menyelam" untuk mengakses pengaturan yang tidak jelas dapat membahayakan pengalaman pengguna, antarmuka berbasis menu adalah fakta kehidupan untuk semua jenis proyek.

Kerangka kerja perangkat lunak untuk mengembangkan antarmuka berbasis menu dalam C atau C++ untuk mikrokontroler sering kali memiliki kurva belajar yang curam dan bisa jadi sulit untuk membuat perubahan desain yang cepat, karena seringkali semuanya berinteraksi dengan yang lainnya. Tujuan dari proyek ini adalah untuk menggunakan lingkungan pemrograman grafis XOD untuk menyediakan kemampuan untuk secara cepat membuat prototipe antarmuka berbasis menu untuk proyek mikrokontroler yang kompatibel dengan Arduino menggunakan gaya antarmuka drag-and-drop/WYSIWYG. Parameter output dan input dari struktur menu yang dihasilkan bersifat modular dan generik dan harus dapat digunakan dengan berbagai sumber input (saklar, tombol, encoder) dan menghasilkan urutan output teks biasa yang dapat diumpankan ke berbagai berbagai jenis tampilan yang didukung XOD, termasuk modul LCD teks multi-baris seperti yang digunakan dalam contoh ini.

Jika Anda tidak terbiasa dengan lingkungan XOD yang digunakan proyek ini, silakan lihat tutorial untuk proyek itu terlebih dahulu di xod.io.

Tangkapan layar dari sketsa contoh motivasi sederhana berikut. Kami akan membahas diagram tambalan XOD ini bagian demi bagian untuk menjelaskan bagaimana semuanya cocok satu sama lain.

  • Menu Bagian antarmuka pengontrol

Di sebelah kanan layar pengeditan tambalan di XOD ada empat node yang terhubung secara menurun. Dari atas ke bawah, pertama ada node tipe input analog, yang dipilih untuk dihubungkan ke salah satu port input analog Arduino. Dalam pengujian saya, saya telah menggunakan Arduino Uno dengan prosesor ATMega328 8 bit, dengan pelindung LCD/keypad 16x2 yang terhubung di atasnya. Keypad pada pelindung terhubung melalui pin pelindung ke input analog "A0" Arduino, dan perangkat keras menghasilkan voltase dengan level berbeda untuk memberi sinyal ke Arduino tombol mana pada pad yang ditekan.

Selain tombol "reset" pada keypad yang tidak langsung terhubung ke sketsa Arduino, jenis pelindung layar ini menyediakan empat tombol arah - atas, bawah, kiri, dan kanan, tombol "pilih". Node kedua yang disuplai oleh node input analog berisi kode yang menerjemahkan voltase berbeda yang sesuai dengan masing-masing tombol, dan mengeluarkan pemicu tipe pulsa tergantung pada tombol mana yang ditekan. Masukan "batas waktu" disediakan sehingga pengembang XOD dapat menyesuaikan batas waktu debounce dari keypad pelindung LCD untuk menghindari pemicuan yang salah, disesuaikan dengan tombol atau jenis sakelar aplikasi tertentu.

Node ketiga ke bawah adalah node tipe pengontrol menu, yang berisi kode untuk menerima pemicu tipe pulsa dari panel kontrol dan menangani logika pengguna yang menavigasi melalui pohon menu dan membuat pilihan yang menghasilkan pembaruan status dari pohon menu.

Seperti yang diterapkan saat ini, ia menerima input tipe Angka tunggal yang dapat berupa parameter apa pun yang dapat diubah pengguna dari kontrol eksternal, katakanlah potensiometer atau dial pada panel kontrol yang mewakili beberapa parameter yang dapat diubah. Ketika menu jenis daun yang diberikan dipilih oleh pengontrol menu yang menerima pulsa ke input "Invoke", di atas pohon menu di sebelah kiri simpul layar yang sedang dilihat pengguna akan mengeluarkan pulsa dengan sendirinya output, dan juga mengirimkan perubahan parameter. Ada juga dua input String yang dapat digunakan untuk menghasilkan splash screen pada tampilan saat Arduino menyala.

Setelah node tersebut adalah modul pengontrol LCD 16x2 stok dari perpustakaan standar lingkungan XOD, tetapi semua jenis tampilan yang tersedia untuk modul dapat digunakan untuk menampilkan teks keluaran di sini.

  • Bagian Pohon Menu

Di bagian atas tangkapan layar sketsa adalah struktur seperti pohon yang, ketika dikompilasi dan "root" keluaran akhir dari pohon diarahkan ke input pengontrol menu yang menerimanya, akan secara otomatis menghasilkan menu yang dapat dinavigasi seperti yang digambarkan di desainer grafis. Saat ini diimplementasikan tiga jenis simpul pohon menu, menu jenis "daun" - sub menu terakhir, tanpa port input berwarna oranye - ini mewakili beberapa tindakan atau parameter yang dapat dikontrol pengguna, menu jenis "cabang" dengan input dan output, di mana pengguna dapat memilih di antara beberapa sub-menu anak, dan menu tipe "concat" di mana sub-menu dikelompokkan bersama dan dimasukkan ke input menu tipe cabang, untuk membuat grup pilihan. Mudah-mudahan cukup jelas dari diagram cara memasang set node ini.

Memilih "panggil" ketika menu tipe "cabang" ditampilkan turun ke grup sub menu yang terkait, daripada menghasilkan output seperti menu tipe daun. Sub-sub menu, sub-sub-sub menu, dll dimungkinkan! Struktur kompleks dapat diimplementasikan, terutama dibatasi oleh sumber daya RAM dan memori Flash yang tersedia dari prosesor model Arduino tertentu.

  • Keluaran bagian

Dalam contoh ini, bagian keluaran adalah tempat antarmuka menu tipe daun ke perangkat keras eksternal melalui pin keluaran Arduino. Setiap menu tipe daun memiliki output tipe Pulsa yang terhubung ke masing-masing flip-flop melalui bus, untuk mengaktifkan dan menonaktifkan pin output digital terkait. Pengaturan semacam ini dapat digunakan untuk mengontrol relai eksternal atau LED, tetapi output Pulsa sangat umum, dan pulsa output yang dihasilkan saat memilih "Invoke" saat mengakses layar menu tipe daun dapat digunakan untuk melakukan banyak tugas, seperti memperbarui node tipe buffer XOD internal tempat data parameter dari port input tipe parameter pengontrol menu disimpan untuk penggunaan di masa mendatang.

  • Masalah umum saat ini

Kumpulan node ini telah diuji dan akan berfungsi dengan baik dengan Arduino Uno apa adanya, tetapi beberapa masalah tetap ada yang tidak diselesaikan oleh tenggat waktu proyek ini. Saat ini harus ada menu tipe cabang di pohon di suatu tempat untuk sketsa untuk dikompilasi, meskipun sebagian besar proyek mungkin ingin memiliki setidaknya satu. Masukan menu "atas" ke pengontrol menu, yang dimaksudkan untuk kembali sepenuhnya ke layar judul antarmuka, saat ini tidak diimplementasikan tetapi harus menjadi fitur yang mudah untuk revisi berikutnya.

Tampilan empat baris didukung oleh node pengontrol menu tetapi antarmuka menu tipe daun dengan empat baris input teks belum ditulis. Sejumlah besar upaya telah dilakukan untuk mengurangi overhead memori utilitas ini tetapi cara transpiler XOD saat ini menyimpan string konstan tidak optimal untuk overhead RAM yang sangat rendah, dan antarmuka berbasis menu cenderung memiliki banyak teks. Untuk proyek ini, solusi telah dikembangkan dan satu set node tipe flash-string ditambahkan di patch untuk memastikan string yang lebih panjang tidak menghabiskan RAM program yang berharga. Mudah-mudahan ini akan diatasi dalam pembaruan lingkungan XOD, tetapi penyelesaiannya tidak masalah untuk saat ini.

Menggunakan node tipe flash-string tidak terlalu menyakitkan tetapi membutuhkan duplikasi patch dan kode untuk setiap string baru yang disimpan dalam memori program, dan mengklik kode C++ yang terdapat di dalam node itu sendiri untuk mengedit string output:

Input "ID" dari simpul daun dan cabang belum memiliki fungsi. Pemikirannya adalah akan lebih baik untuk setiap set sub-menu untuk memiliki nomor ID terkait yang diatur sedemikian rupa sehingga pengguna dapat melacak posisi mereka dalam satu set tampilan tetapi akan membutuhkan lebih banyak pemikiran tentang cara mengkodekan ini dalam C++ terjadi secara otomatis.

  • Melanjutkan pekerjaan

Pengujian bug lebih lanjut dan pengujian pada perangkat Arduino lain selain perangkat AVR/ATmega seperti ARM harus dilakukan. Kumpulan tipe menu-node saat ini agak membatasi harus ada lebih banyak variasi input dan output. Melanjutkan upaya untuk mengurangi overhead RAM, mungkin dengan menggunakan lebih banyak metaprogramming waktu kompilasi dan menyimpan sebanyak mungkin data dalam memori Flash daripada menghubungkan/menggabungkan komponen pohon saat run-time.

19/2/19 - Contoh kedua.

Tangkapan layar sketsa contoh kedua ini menunjukkan cara menggunakan pengontrol menu untuk mengambil nilai eksternal atau internal sebagai input ke pengontrol, menampilkan nilai saat ini dan sebelumnya pada halaman menu yang diinginkan, dan memilih nilai baru dan menyimpannya ke buffer.

Di sebelah kanan node pengontrol menu sedang diumpankan dengan output penghitung, diumpankan oleh node "jam". Tapi ini bisa berupa nilai data internal apa pun, atau nilai eksternal dari katakanlah potensiometer yang terhubung ke input analog. Keluaran penghitung juga dikirim ke node pemformatan string, dan digabungkan dengan beberapa teks tampilan untuk menunjukkan nilai saat ini yang diterima oleh pengontrol pada baris kedua LCD, ketika halaman menu itu ditampilkan.

Keluaran "dipanggil" dan "param" dari menu daun "A" dikirim ke simpul "penyangga" dari pustaka standar XOD. Output dari buffer kemudian diarahkan kembali ke pengaturan yang sama seperti sebelumnya kecuali untuk node "defer", yang diperlukan untuk memecah loop umpan balik dalam sketsa XOD. Nilai yang disimpan dalam buffer ditampilkan pada baris pertama LCD.

Ketika node pengontrol menu menerima pulsa pemicu "panggilan" dari pengontrol keypad, node A-out mengeluarkan nilai input parameter dari pengontrol menu di sana, dalam hal ini nilai arus penghitung, dan pemicu "dipanggil". pulsa yang mengaktifkan rutin pembaruan buffer dan menyimpan parameter baru buffer. Layar kemudian diperbarui secara otomatis untuk mencerminkan nilai tersimpan yang baru.

Port keluaran buffer juga kemudian dapat dirutekan ke sejumlah node lain untuk mengubah perilakunya agar mencerminkan nilai data baru yang telah dipilih pengguna:

Kode

  • Perpustakaan Sistem Menu XOD
Perpustakaan Sistem Menu XODC/C++
https://xod.io/libs/bitrex/xod-menu-system-11

Tambahkan bitrex/xod-menu-system ke browser perpustakaan sketsa dari opsi File -> Add Libraries... dari dalam lingkungan XOD.
Tidak ada pratinjau (hanya unduh).

Skema

Buka langsung menggunakan XOD IDE xodmenusystemrev1_1_4-1-19_fLVYrcSgbX.xodball

Proses manufaktur

  1. Decoder DTMF Hanya Menggunakan Arduino
  2. Membuat Monitor Ambilight Menggunakan Arduino
  3. Mesin ULTRASONIC LEVITATION Menggunakan ARDUINO
  4. Animasi dan Permainan LCD
  5. Voltmeter DIY Menggunakan Arduino dan Smartphone
  6. Pemantau Detak Jantung Menggunakan IoT
  7. WebServerBlink Menggunakan Arduino Uno WiFi
  8. Penghitung Mobil menggunakan Arduino + Pemrosesan + PHP
  9. Game Dino otomatis menggunakan arduino
  10. Radio FM Menggunakan Arduino dan RDA8057M