Daftar Isi:
- Perlengkapan
- Langkah 1: Perangkat Keras
- Langkah 2: Tentukan Cara Kerjanya
- Langkah 3: Menghubungkan Mesin Negara
- Langkah 4: Kontrol HMI
- Langkah 5: Tangani Status
- Langkah 6: Stopwatch
- Langkah 7: Kontra
- Langkah 8: Simulasi
- Langkah 9: Dapatkan Contoh
Video: Arduino HMI Menggunakan State Machines: 9 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Dalam Instruksi ini, saya akan menunjukkan kepada Anda bagaimana menggunakan YAKINDU Statechart Tools untuk mewujudkan HMI yang sederhana dan dapat diperluas dengan menggunakan Perisai Keypad LCD 16x2 untuk Arduino.
Finite State Machines (FSM) adalah pola desain yang kuat untuk mengembangkan Human Machine Interfaces (HMI) yang kompleks. Karena fungsionalitas HMI dapat meningkat, akan berguna untuk menggunakan pola desain seperti mesin keadaan.
Contoh lengkapnya ada di YAKINDU Statechart Tools. Selain itu, Eclipse C++ IDE untuk Arduino Plugin telah digunakan untuk mengkompilasi dan mem-flash IDE.
Sinopsis Singkat YAKINDU Statechart Tools
Dengan alat ini, dimungkinkan untuk membuat mesin status grafis. Ini memungkinkan pengguna untuk menghasilkan kode C, C++ atau Java dari mesin negara. Dengan pendekatan ini, model dapat diubah atau diperluas dan pengguna cukup membuat ulang kode dan tidak perlu menulis kode sumber biasa.
Perlengkapan
Bagian:
- Arduino (Uno, Mega)
- Kabel USB
- Perisai Tombol LCD 16x2
Peralatan:
- Alat Bagan Negara YAKINDU
- Eclipse C++ IDE untuk Arduino
Langkah 1: Perangkat Keras
LCD Keypad Shield cukup dicolokkan ke Arduino. Ini memiliki Layar LCD 16x2 dan juga memiliki enam tombol:
- Kiri
- Benar
- Ke atas
- Turun
- Pilih
- (Mengatur ulang)
Jelas, lima dari mereka dapat digunakan. Kunci dihubungkan ke pembagi tegangan dan dideteksi dengan menggunakan Pin A0 tergantung pada tegangan. Saya telah menggunakan perangkat lunak debouncing untuk mendeteksi mereka dengan benar.
Langkah 2: Tentukan Cara Kerjanya
Aplikasi harus mampu melakukan tiga hal.
- Menangani StatusDi sini saya ingin menggunakan tombol untuk menavigasi di antara lima status: Atas, Tengah, Bawah, Kiri dan Kanan
- StopwatchSebuah stopwatch sederhana, yang dapat dimulai, dihentikan, dan disetel ulang. Itu harus bertambah setiap 100 milidetik
- Penghitung Bagian ketiga berisi penghitung naik/turun sederhana. Itu harus dapat menghitung angka positif dan harus dapat disetel ulang
Menu aktif (atau status) akan ditampilkan pada LCD 16x2 di baris paling atas. Aplikasi (State, Timer atau Counter) akan ditampilkan di bagian bawah. Untuk navigasi, tombol kiri dan kanan harus digunakan.
Langkah 3: Menghubungkan Mesin Negara
Tombol akan di-debounce dan ditransfer ke mesin negara. Mereka dapat digunakan seperti dalam acara di mesin negara. Selain itu, operasi ditentukan untuk menampilkan menu saat ini. Dan setidaknya dua variabel, satu untuk timer dan satu untuk counter, didefinisikan.
antarmuka:
// tombol sebagai input kejadian di acara kanan di acara kiri di acara naik di acara turun di acara pilih // menampilkan HMI nilai spesifik tampilan operasiLCDString(nilai:string, panjang:bilangan bulat, posisi:integer) tampilan operasiLCDInteger(nilai:bilangan bulat, posisi:integer) operasi clearLCDRow(position:integer) internal: //variabel untuk penyimpanan var cnt: integer var timeCnt: integer = 0
Setelah menghasilkan kode C++, acara in harus di-debounce dan ditransfer ke antarmuka. Cuplikan kode ini menunjukkan cara melakukannya.
Pada awalnya, tombol akan ditentukan:
#define NONE 0#define SELECT 1 #define LEFT 2 #define DOWN 3 #define UP 4 #define KANAN 5
Kemudian ada fungsi yang ditentukan untuk membaca tombol. Nilainya dapat bervariasi, tergantung pada produsen LCD Shield.
static int readButton() { int hasil = 0; hasil = analogRead(0); if (hasil < 50) { kembali KANAN; } if (hasil < 150) { kembali NAIK; } if (hasil < 300) { kembali TURUN; } if (hasil < 550) { kembali ke KIRI; } if (hasil < 850) { kembali SELECT; } mengembalikan NONE; }
Pada akhirnya, tombol akan di-debounce. Saya melakukan hasil yang baik dengan 80 ms. Setelah tombol akan dirilis, itu akan menaikkan sesuai dalam acara.
int oldState = NONE;static void raiseEvents() { int buttonPressed = readButton(); penundaan (80); oldState = tombolDitekan; if (oldState != NONE && readButton() == NONE) { switch (oldState) { case SELECT: { stateMachine->raise_select(); merusak; } kasus KIRI: { stateMachine->raise_left(); merusak; } kasus BAWAH: { stateMachine->raise_down(); merusak; } kasus UP: { stateMachine->raise_up(); merusak; } kasus KANAN: { stateMachine->raise_right(); merusak; } default: { istirahat; } } } }
Langkah 4: Kontrol HMI
Setiap status digunakan untuk satu bagian menu. Ada sub-status, di mana aplikasi - misalnya stopwatch - akan dieksekusi.
Dengan desain ini, antarmuka dapat dengan mudah diperluas. Menu tambahan dapat dengan mudah ditambahkan dengan menggunakan pola desain yang sama. Membaca nilai sensor dan menampilkannya di item menu keempat bukanlah masalah besar.
Untuk saat ini, hanya kiri dan kanan yang digunakan sebagai kontrol. Namun naik turun juga bisa digunakan sebagai ekstensi navigasi di menu utama. Hanya tombol pilih yang akan digunakan untuk memasukkan item menu tertentu.
Langkah 5: Tangani Status
Menu status pegangan hanya digunakan sebagai contoh navigasi lebih lanjut. Menggunakan atas, bawah, kanan atau kiri memungkinkan beralih antar negara. Status saat ini akan selalu dicetak pada baris kedua pada Layar LCD.
Langkah 6: Stopwatch
Stopwatch cukup sederhana. Awalnya, nilai timer akan diatur ulang. Timer dapat dimulai dengan menggunakan tombol kiri dan beralih dengan menggunakan kiri dan kanan. Menggunakan naik atau turun akan mengatur ulang timer. Timer juga dapat disetel kembali ke nol dengan menggunakan tombol pilih dua kali - keluar dari menu dan masuk sekali lagi, karena timer akan disetel ke nol dengan memasukkan stopwatch terlebih dahulu.
Langkah 7: Kontra
Setidaknya, ada counter yang diterapkan. Memasuki negara counter me-reset counter. Ini dapat dimulai dengan menggunakan tombol apa saja, kecuali tombol pilih. Ini diimplementasikan sebagai penghitung naik/turun sederhana, yang nilainya tidak boleh lebih kecil dari 0.
Langkah 8: Simulasi
Langkah 9: Dapatkan Contoh
Anda dapat mengunduh IDE di sini: Alat Statechart YAKINDU
Setelah Anda mengunduh IDE, Anda menemukan contohnya melalui File -> Baru -> Contoh
Ini gratis digunakan untuk penghobi, tetapi Anda juga dapat menggunakan uji coba 30 hari.
Direkomendasikan:
Cara Mengontrol Bulb dengan Menggunakan Arduino UNO dan Modul Solid State Relay 5V Saluran Tunggal: 3 Langkah
Cara Mengontrol Bohlam dengan Menggunakan Arduino UNO dan Modul Solid State Relay 5V Saluran Tunggal: Deskripsi:Dibandingkan dengan relai mekanis tradisional, Solid State Relay (SSR) memiliki banyak keunggulan: memiliki masa pakai yang lebih lama, dengan putaran yang jauh lebih tinggi/ off kecepatan dan tidak ada suara. Selain itu, ia juga memiliki ketahanan yang lebih baik terhadap getaran dan
Jam Digital di Arduino Menggunakan Mesin Finite State: 6 Langkah
Jam Digital di Arduino Menggunakan Mesin Finite State: Hai, saya akan menunjukkan kepada Anda bagaimana jam tangan digital dapat dibuat dengan YAKINDU Statechart Tools dan dijalankan di Arduino, yang menggunakan LCD Keypad Shield. Model asli dari digital jam tangan diambil dari David Harel. Dia telah menerbitkan makalah tentang
Arduino PLC 32 I/O+State Machine+SCADA atau HMI: 8 Langkah
Arduino PLC 32 I/O+State Machine+SCADA atau HMI: Banyak cara untuk memprogram, mengontrol dan mengawasi sistem industri dengan arduino
Remote Otomatis ON/OFF Menggunakan Jack MIC pada Camcorder Anda / Relay Solid State Tegangan Rendah: 4 Langkah (dengan Gambar)
Remote Otomatis ON/OFF Menggunakan Jack MIC pada Camcorder Anda / Solid State Relay Tegangan Rendah: Tinjauan: Kami menggunakan jack MIC camcorder untuk mendeteksi saat camcorder menyala. Kami membangun relai solid-state bertegangan rendah untuk mendeteksi jack MIC dan secara otomatis menghidupkan dan mematikan perangkat jarak jauh pada saat yang sama dengan camcorder. Keadaan padat
Kontrol PC Super Mudah 110 Vac Menggunakan Relay Solid-State Crydom: 3 Langkah (dengan Gambar)
Kontrol PC Super Mudah 110 Vac Menggunakan Relay Solid-State Crydom: Saya sedang bersiap-siap untuk mencoba melakukan beberapa penyolderan hot plate. Oleh karena itu, saya membutuhkan cara untuk mengontrol 110Vac dari PC saya. Instruksi ini menunjukkan cara mengontrol 110Vac dengan mudah dari port output serial pada PC. Port serial yang saya gunakan adalah tipe USB