Isi kandungan:

Arduino HMI Menggunakan Mesin Negeri: 9 Langkah
Arduino HMI Menggunakan Mesin Negeri: 9 Langkah

Video: Arduino HMI Menggunakan Mesin Negeri: 9 Langkah

Video: Arduino HMI Menggunakan Mesin Negeri: 9 Langkah
Video: Membangun SCADA HMI Menggunakan Arduino Melalui Protokol OPC (Promotional Video) 2024, Julai
Anonim
Arduino HMI Menggunakan Mesin Negeri
Arduino HMI Menggunakan Mesin Negeri

Dalam Instructable ini, saya akan menunjukkan kepada anda bagaimana menggunakan YAKINDU Statechart Tools untuk merealisasikan HMI yang mudah dan boleh dikembangkan dengan menggunakan Perisai Kekunci LCD 16x2 untuk Arduino.

Mesin Keadaan Terhingga (FSM) adalah corak reka bentuk yang kuat untuk membangunkan Interface Mesin Manusia (HMI) yang kompleks. Oleh kerana fungsi HMI dapat meningkat, berguna untuk menggunakan corak reka bentuk seperti mesin keadaan.

Contoh lengkapnya terdapat dalam Alat Carta Negeri YAKINDU. Selain itu, Eclipse C ++ IDE untuk Arduino Plugin telah digunakan untuk menyusun dan mem-flash di IDE.

Sinopsis Ringkas Alat Carta Negeri YAKINDU

Dengan alat ini, adalah mungkin untuk membuat mesin keadaan grafik. Ia membolehkan pengguna menghasilkan kod C, C ++ atau Java dari mesin negara. Dengan pendekatan ini, model dapat diubah atau diperluas dan pengguna hanya dapat menghasilkan semula kod dan tidak perlu menulis kod sumber biasa.

Bekalan

Bahagian:

  • Arduino (Uno, Mega)
  • Wayar USB
  • Perisai Kekunci LCD 16x2

Alat:

  • Alat Carta Negeri YAKINDU
  • Eclipse C ++ IDE untuk Arduino

Langkah 1: Perkakasan

Image
Image

Perisai Keypad LCD hanya boleh dipasang ke Arduino. Ia mempunyai Paparan LCD 16x2 dan juga mendapat enam butang tekan:

  • Meninggalkan
  • Betul
  • Ke atas
  • Ke bawah
  • Pilih
  • (Tetapkan semula)

Jelas, lima daripadanya boleh digunakan. Kunci disambungkan ke pembahagi voltan dan dikesan dengan menggunakan Pin A0 bergantung pada voltan. Saya telah menggunakan perisian melantun untuk mengesannya dengan betul.

Langkah 2: Tentukan Bagaimana Ia Perlu Berfungsi

Kawalan HMI
Kawalan HMI

Permohonan harus dapat melakukan tiga perkara.

  1. Kendalikan Negeri Di sini saya ingin menggunakan butang untuk menavigasi antara lima keadaan: Atas, Tengah, Bawah, Kiri dan Kanan
  2. Jam randik ringkas, yang boleh dimulakan, dihentikan dan diset semula. Ia harus ditingkatkan setiap 100 milisaat
  3. Kaunter Bahagian ketiga mengandungi kaunter atas / bawah yang sederhana. Ia mesti dapat mengira nombor positif dan ia mesti diset semula

Menu aktif (atau keadaan) akan dipaparkan pada LCD 16x2 di barisan atas. Aplikasi (State, Timer atau Counter) akan dipaparkan di garis bawah. Untuk navigasi, butang kiri dan kanan harus digunakan.

Langkah 3: Memadankan Mesin Negara

Butang akan dilancarkan dan disambungkan ke mesin negara. Mereka boleh digunakan seperti dalam acara di mesin negara. Selain itu, operasi ditentukan untuk memaparkan menu semasa. Dan sekurang-kurangnya dua pemboleh ubah, satu untuk pemasa dan satu untuk pembilang, ditentukan.

antara muka:

// butang sebagai input peristiwa dalam acara kanan dalam acara kiri dalam acara naik dalam peristiwa turun pilih // paparkan HMI nilai nilai paparan operasiLCDString (nilai: tali, panjang: bilangan bulat, kedudukan: bilangan bulat) paparan operasiLCDInteger (nilai: bilangan bulat, kedudukan: integer) operasi clearLCDRow (kedudukan: integer) dalaman: // pemboleh ubah untuk penyimpanan var cnt: integer var timeCnt: integer = 0

Setelah menghasilkan kod C ++, acara dalam acara mesti diturunkan dan disambungkan ke antara muka. Coretan kod ini menunjukkan cara melakukannya.

Pada mulanya, butang akan ditentukan:

# tentukan TIADA 0 # tentukan PILIH 1 # tentukan KIRI 2 # tentukan BAWAH 3 # tentukan NAIK 4 # tentukan KANAN 5

Kemudian ada fungsi yang ditentukan untuk membaca butang. Nilainya mungkin berbeza-beza, bergantung pada pengeluar LCD Shield.

statik int readButton () {int hasil = 0; hasil = analogRead (0); jika (hasil <50) {kembali KANAN; } jika (hasil <150) {kembali ke atas; } jika (hasil <300) {kembali KE BAWAH; } jika (hasil <550) {kembali KIRI; } jika (hasil <850) {kembali PILIH; } kembali TIADA; }

Pada akhirnya, butang akan dibongkar. Saya memperoleh keputusan yang baik dengan 80 ms. Setelah butang dilepaskan, ia akan menaikkan yang sesuai sekiranya berlaku.

int oldState = TIADA; kenaikan kekosongan statik Peristiwa () {int butang Ditekan = readButton (); kelewatan (80); oldState = butang Ditekan; if (oldState! = NONE && readButton () == TIADA) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); rehat; } kes KIRI: {stateMachine-> raise_left (); rehat; } kes KE BAWAH: {stateMachine-> raise_down (); rehat; } kes UP: {stateMachine-> raise_up (); rehat; } kes KANAN: {stateMachine-> raise_right (); rehat; } lalai: {rehat; }}}}

Langkah 4: Kawalan HMI

Setiap keadaan digunakan untuk satu bahagian menu. Terdapat sub-keadaan, di mana aplikasi - misalnya jam randik - akan dijalankan.

Dengan reka bentuk ini, antara muka dapat dikembangkan dengan mudah. Menu tambahan boleh ditambah dengan menggunakan corak reka bentuk yang sama. Membaca nilai sensor dan memaparkannya dalam item menu keempat bukanlah masalah besar.

Buat masa ini, hanya kiri dan kanan digunakan sebagai kawalan. Tetapi naik dan turun juga dapat digunakan sebagai pelanjutan navigasi di menu utama. Hanya butang pilih yang akan digunakan untuk memasukkan item menu tertentu.

Langkah 5: Mengendalikan Negeri

Mengendalikan Negeri
Mengendalikan Negeri

Menu pegangan hanya digunakan sebagai contoh navigasi lebih lanjut. Menggunakan atas, bawah, kanan atau kiri membolehkan pertukaran antara keadaan. Keadaan semasa akan selalu dicetak pada baris kedua pada Paparan LCD.

Langkah 6: Jam randik

Jam randik
Jam randik

Jam randik cukup mudah. Pada mulanya, nilai pemasa akan ditetapkan semula. Pemasa boleh dimulakan dengan menggunakan butang kiri dan beralih dengan menggunakan kiri dan kanan. Menggunakan atas atau bawah menetapkan semula pemasa. Pemasa juga dapat diatur kembali ke nol dengan menggunakan tombol pilih dua kali - meninggalkan menu dan memasukkannya sekali lagi, kerana pemasa akan ditetapkan ke nol dengan awalnya memasuki jam randik.

Langkah 7: Kaunter

Kaunter
Kaunter

Paling tidak, ada kaunter yang dilaksanakan. Memasuki keadaan kaunter menetapkan semula kaunter. Ini dapat dimulai dengan menggunakan tombol tekan apa pun, kecuali tombol pilih. Ini dilaksanakan sebagai penghitung atas / bawah sederhana, yang nilainya tidak boleh lebih kecil dari 0.

Langkah 8: Simulasi

Langkah 9: Dapatkan Contohnya

Anda boleh memuat turun IDE di sini: YAKINDU Statechart Tools

Sebaik sahaja anda memuat turun IDE, anda akan mendapat contoh melalui Fail -> N ew -> Contoh

Percuma digunakan untuk penggemar, tetapi anda juga boleh menggunakan percubaan 30 hari.

Disyorkan: