
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01


Tinjauan Projek
Dalam projek ini, saya ingin menunjukkan cara pemrograman Otto Robot, yang merupakan robot DIY berasaskan Arduino. Dengan menggunakan YAKINDU Statechart Tools (percuma untuk bukan komersial) kita dapat dengan mudah menggunakan mesin keadaan untuk memodelkan tingkah laku Otto Robot secara grafik dan menghasilkan kod C / C ++. Kami akan menggunakan salah satu contohnya untuk memperluas tingkah laku mengikut keinginan kami.
Bagi orang yang tidak tahu apa itu mesin negara dan tidak mahu mencari-cari artikel Wikipedia yang rumit, berikut adalah penjelasan kecil:
Mesin keadaan hanyalah nod dan laluan di antara nod tersebut. Anda mempunyai simpul permulaan dan dapat mengambil jalan ke simpul lain bergantung pada pengawalnya, yang dapat diwakili oleh peristiwa. Peristiwa ini dibangkitkan dari mesin negara sendiri atau dari luar (seperti fungsi, dll.).
Alat itu sendiri menggunakan antara muka seret & lepas dan bahasa khusus domain. Saya akan mengatasinya untuk anda, jadi anda tidak perlu menggali dokumentasi mereka agar Otto anda dapat dijalankan. Menyiapkan IDE tidak terlalu sukar, kerana semua pemalam, dan lain-lain harus dipasang secara automatik.
Bekalan
Robot Otto atau Robot Zowi
Kedua-dua robot ini pada dasarnya sama dan menggunakan API yang sama. Otto Robot adalah robot DIY, dengan bahagiannya dalam talian, siap dicetak dengan pencetak 3D sekiranya anda mempunyai satu. Alternatifnya ialah Robot Zowi, yang boleh dibeli secara dalam talian dan siap digunakan.
Alat Carta Negeri YAKINDU
Alat yang akan kita gunakan untuk memodelkan mesin keadaan. Anda boleh memulakan dengan percubaan 30 hari dan mendapatkan lesen percuma untuk penggunaan bukan komersial selepas itu.
Eclipse C ++ IDE untuk Arduino Plugin
Kami tidak perlu memuat turunnya secara manual, kerana IDE melakukannya untuk kami. Saya masih fikir senang untuk menyenaraikannya di sini.
Langkah 1: Menetapkan Segalanya

Setelah memasang IDE, jalankan dan sediakan ruang kerja di mana sahaja di komputer anda (penyediaannya sama dengan menggunakan Eclipse untuk pertama kalinya). Apabila program telah dimulakan sepenuhnya, klik halaman selamat datang dan klik pada 'Fail -> Baru -> Contoh …' dan kemudian pilih 'Contoh StateCart YAKINDU', tunggu sebentar dan cari "Sistem Tertanam -> Zowi (C ++) "contoh.
PENTING: Klik pada butang kanan atas yang disebut 'Pasang Ketergantungan …'! Ini memasang segala-galanya untuk anda, jadi anda tidak perlu risau tentang Perpustakaan, Pemalam dan sejenisnya. Muat turun contoh, ikuti arahan dalam contoh "Sistem Tertanam -> Zowi (C ++)" dan kemudian teruskan dengan langkah seterusnya.
Langkah 2: Memahami Cara Memadankan Otto
Masuk ke fail ".sct" dan edit mesin keadaan mengikut keinginan anda. Di sebelah kanan terdapat menu dengan semua item ada. Kami hanya berminat dengan negeri dan peralihan.
Dalam gambar, anda dapat melihat, bahawa saya menulis beberapa perkara pada peralihan; "selepas X s" cukup jelas dan "selalu" hanya bermaksud, ia akan pergi ke sana tepat setelah menyelesaikan kod dari Negeri. "Entri /" bermaksud, bahawa kod tersebut harus dilaksanakan tepat setelah memasuki keadaan.
IDE menyusun mesin keadaan ke C ++, yang mematuhi Arduino. Untuk menggunakan ciri-ciri Otto, kita harus melakukan sedikit usaha untuk mengakses antara muka.
Kata kunci berikut boleh digunakan untuk menentukan barang yang akan digunakan mesin negara:
pemalar, yang memegang nilai dan tidak dapat diubah
pemboleh ubah, yang memegang nilai dan boleh diubah
operasi, yang akan dihasilkan untuk kaedah C ++ maya untuk pelaksanaan
antara muka:
const PIN_YL: integer = 2 const PIN_YR: integer = 3 const PIN_RL: integer = 4 const PIN_RR: integer = 5 const sound: integer = 2 const mouth_heart: integer = 13 const mouth_happyBuka: integer = 11 operasi zowi_init (YL: integer, YR: integer, RL: integer, RR: integer) operasi zowi_home () operasi zowi_putMouth (mouthType: integer) operasi zowi_sing (songName: integer) operasi zowi_walk (langkah: nyata, T: integer, dir: integer) operasi zowi_shakeLeg ()
Petua Pro: jika anda tidak tahu apa yang harus dimasukkan di suatu tempat atau nampaknya ada ralat, tekan "ctrl + space" untuk mendapatkan petunjuk mengenai apa yang boleh anda masukkan.
Selain itu, anda harus melihat contohnya, mereka juga mempunyai beberapa kod! Anda juga dapat menggunakannya sebagai struktur untuk hanya mengedit model, yang merupakan satu-satunya bahagian yang kami minati sekarang.
Langkah 3: Mengisi Jurang

Setelah mengubah sesuatu dalam model, anda boleh klik kanan pada "zowiSCT.sgen -> Hasilkan Artifak Kod". Ini menghasilkan fungsi maya di C ++, yang dinyatakan dalam mesin keadaan ke folder "src-gen", yang kemudian kita laksanakan menggunakan C ++ normal.
Cukup buat dua fail ini di folder "src" untuk mendapatkan fungsi yang kita mahukan dari Otto.
Pertama Impl.h
#ifndef SRC_IMPL_H_
#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: public ZowiSCT:: DefaultSCI_OCB {awam: Impl (); maya ~ Impl (); batal zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); batal zowi_home (); kekosongan zowi_putMouth (sc_integer mouthType); batal zowi_sing (sc_integer songName); batal zowi_walk (langkah sc_real, sc_integer T, sc_integer dir); batal zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /
Kemudian Impl.cpp
#sertakan "Impl.h"
#include "../Zowi/Zowi.h" Zowi zowi = Zowi baru (); Impl:: Impl () {} Impl:: ~ Impl () {} batal Impl:: zowi_home () {zowi.home (); } batal Impl:: zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR) {zowi.init (YL, YR, RL, RR); } batal Impl:: zowi_putMouth (sc_integer mouthType) {zowi.putMouth (mouthType); } batal Impl:: zowi_sing (sc_integer songName) {zowi.sing (songName); } batal Impl:: zowi_walk (langkah sc_real, sc_integer T, sc_integer dir) {zowi.walk (langkah, T, dir); } batal Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }
Langkah 4: Membuat Tarian Otto
Apabila anda berpuas hati dengan produk anda, klik pada tukul di kiri atas dan tunggu prosesnya selesai. Kemudian klik pada anak panah hijau di sebelah kanan tukul dan lihat Otto anda menari!
Sekiranya anda mahu, anda boleh melihat beberapa contoh lain: YAKINDU Statechart Tools
Disyorkan:
Otto DIY + Arduino Bluetooth Robot Cetakan 3D Mudah: 6 Langkah (dengan Gambar)

Otto DIY + Arduino Bluetooth Robot Cetakan 3D Mudah: Sumber terbuka Otto yang benar-benar membenarkan pendidikan STEAM terbuka, kami mengumpulkan maklum balas dari pelbagai bengkel dan sekolah di seluruh dunia yang sudah menggunakan Otto DIY di dalam kelas mereka dan bergantung kepada keterbukaan tempat pendidikan ini kita atau
Otto DIY Humanoid Robot: 7 Langkah (dengan Gambar)

Otto DIY Humanoid Robot: Otto bipedal robot kini mempunyai senjata untuk kelihatan serupa dengan " Manusia " dan matriks LED untuk menyatakan emosi. Cetakan 3D sendiri dan kemudian kumpulkan bahagian-bahagian yang akan dibina sendiri. Otot benar-benar Opensource; ini bermaksud perkakasan mudah dilihat sehingga
Mesin Negeri di Arduino - Lampu Lalu Lintas Pejalan Kaki: 6 Langkah (dengan Gambar)

State Machine on Arduino - Lampu Lalu Lintas Pejalan Kaki: Hai! Saya akan menunjukkan kepada anda cara memprogram lampu isyarat pejalan kaki untuk Arduino di C ++ dengan mesin keadaan terhingga dengan menggunakan YAKINDU Statechart Tools. Ini akan menunjukkan kehebatan mesin negara dan dapat digunakan sebagai cetak biru untuk
Arduino HMI Menggunakan Mesin Negeri: 9 Langkah

Arduino HMI Menggunakan Mesin Negeri: Dalam Instructable ini, saya akan menunjukkan kepada anda bagaimana menggunakan Alat Statechart Tools YAKINDU untuk mewujudkan HMI yang mudah dan dapat diperluas dengan menggunakan Perisai Keypad LCD 16x2 untuk Arduino.Finite State Machines (FSM) adalah corak reka bentuk yang kuat untuk dikembangkan Mesin Manusia yang kompleks
Arduino PLC 32 I / O + Mesin Negeri + SCADA atau HMI: 8 Langkah

Arduino PLC 32 I / O + State Machine + SCADA atau HMI: Banyak cara untuk memprogram, mengawal dan mengawasi sistem industri dengan arduino