Daftar Isi:

Robot Arduino Otto Dengan Mesin Negara: 4 Langkah
Robot Arduino Otto Dengan Mesin Negara: 4 Langkah

Video: Robot Arduino Otto Dengan Mesin Negara: 4 Langkah

Video: Robot Arduino Otto Dengan Mesin Negara: 4 Langkah
Video: SAMPING REL KERETA API!! 🙃🙃 2024, November
Anonim
Image
Image

Ulasan Proyek

Dalam proyek ini, saya ingin menunjukkan kepada Anda cara memprogram Robot Otto, yang merupakan robot DIY berbasis Arduino. Menggunakan YAKINDU Statechart Tools (gratis untuk non-komersial) kita dapat dengan mudah menggunakan state machine untuk secara grafis memodelkan perilaku Robot Otto dan menghasilkan kode C/C++. Kami akan menggunakan salah satu contoh mereka untuk memperluas perilaku sesuai dengan keinginan kami.

Untuk orang-orang yang tidak tahu apa itu mesin negara dan tidak ingin mengobrak-abrik artikel Wikipedia yang rumit, berikut adalah penjelasan kecilnya:

Mesin negara hanyalah simpul dan jalur di antara simpul-simpul itu. Anda memiliki node awal dan dapat mengambil jalur ke node lain tergantung pada penjaganya, yang dapat diwakili oleh peristiwa. Peristiwa ini dibangkitkan baik dari mesin negara itu sendiri atau dari luar (seperti fungsi, dll.).

Alat itu sendiri menggunakan antarmuka seret & lepas dan bahasa khusus domain. Saya akan membahasnya untuk Anda, jadi Anda tidak perlu menggali dokumentasi mereka untuk mengaktifkan dan menjalankan Otto Anda. Menyiapkan IDE tidak terlalu sulit, karena semua plug-in, dll. harus diinstal secara otomatis.

Perlengkapan

Robot Otto atau Robot Zowi

Kedua robot ini pada dasarnya melakukan hal yang sama dan menggunakan API yang sama. Robot Otto adalah robot DIY, dengan bagian-bagiannya online, siap untuk dicetak dengan printer 3D jika Anda memilikinya. Alternatifnya adalah Robot Zowi, yang dapat dibeli secara online dan siap digunakan.

Alat Bagan Negara YAKINDU

Alat yang akan kita gunakan untuk memodelkan mesin negara. Anda dapat memulai dengan uji coba 30 hari dan mendapatkan lisensi gratis untuk penggunaan non-komersial sesudahnya.

Eclipse C++ IDE untuk Arduino Plugin

Kami tidak perlu mengunduhnya secara manual, karena IDE melakukannya untuk kami. Saya masih berpikir akan menyenangkan untuk mencantumkannya di sini.

Langkah 1: Mengatur Semuanya

Memahami Cara Menghubungkan Otto
Memahami Cara Menghubungkan Otto

Setelah menginstal IDE, jalankan dan atur ruang kerja di mana saja di pc Anda (pengaturannya identik dengan menggunakan Eclipse untuk pertama kalinya). Ketika program telah dimulai sepenuhnya, klik halaman selamat datang dan klik 'File -> New -> Example…' lalu pilih 'YAKINDU Statechart Example', tunggu sebentar dan cari "Embedded Systems -> Zowi (C++))" contoh.

PENTING: Klik tombol kanan atas yang disebut 'Install Dependencies…'! Ini menginstal semuanya untuk Anda, jadi Anda tidak perlu khawatir tentang Perpustakaan, Plug-In, dan sejenisnya. Download contohnya, ikuti petunjuk pada contoh "Embedded Systems -> Zowi (C++)" lalu lanjutkan dengan langkah berikutnya.

Langkah 2: Memahami Cara Menghubungkan Otto

Masuk ke file ".sct" dan edit mesin status sesuai keinginan Anda. Di sebelah kanan adalah menu dengan semua item yang tersedia. Kami hanya tertarik pada keadaan dan transisi.

Dalam gambar, Anda dapat melihat, bahwa saya menulis beberapa hal ke transisi; "setelah X s" cukup jelas dan "selalu" hanya berarti, bahwa ia pergi ke sana tepat setelah menyelesaikan kode dari Negara. The "entry /" berarti, bahwa kode harus dieksekusi tepat setelah memasuki keadaan.

IDE mengkompilasi mesin status ke C++, yang sesuai dengan Arduino. Untuk menggunakan fitur-fitur Otto, kita harus melakukan sedikit pekerjaan sendiri untuk mengakses antarmuka.

Kata kunci berikut dapat digunakan untuk menentukan hal-hal yang akan digunakan oleh mesin negara:

konstanta, yang menyimpan nilai dan tidak dapat diubah

variabel, yang menyimpan nilai dan dapat diubah

operasi, yang akan dihasilkan ke metode C++ virtual untuk implementasi

antarmuka:

const PIN_YL: integer = 2 const PIN_YR: integer = 3 const PIN_RL: integer = 4 const PIN_RR: integer = 5 const suara: integer = 2 const mouth_heart: integer = 13 const mouth_happyOpen: 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: real, T: integer, dir: integer) operasi zowi_shakeLeg()

Kiat Pro:jika Anda tidak tahu apa yang harus dimasukkan di suatu tempat atau tampaknya ada kesalahan, tekan "ctrl+spasi" untuk mendapatkan beberapa petunjuk tentang apa yang dapat Anda masukkan.

Selain itu, Anda harus melihat contoh, mereka memiliki beberapa kode di sana juga! Anda juga dapat menggunakannya sebagai struktur untuk mengedit model, yang merupakan satu-satunya bagian yang kami minati saat ini.

Langkah 3: Mengisi Kesenjangan

Mengisi Kesenjangan
Mengisi Kesenjangan

Setelah mengubah hal-hal dalam model Anda dapat mengklik kanan pada "zowiSCT.sgen -> Generate Code Artifacts". Ini menghasilkan fungsi virtual di C++, yang dideklarasikan di mesin negara ke folder "src-gen", yang kemudian kami implementasikan menggunakan C++ normal.

Buat saja kedua file ini di folder "src" untuk mendapatkan fungsionalitas yang kita inginkan dari Otto.

Pertama Impl.h

#ifndef SRC_IMPL_H_

#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: public ZowiSCT::DefaultSCI_OCB{ public: Impl(); virtual ~Impl(); void zowi_init(sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); batalkan zowi_home(); void zowi_putMouth(sc_integer mouthType); void zowi_sing(sc_integer songName); void zowi_walk(langkah sc_real, sc_integer T, sc_integer dir); batalkan zowi_shakeLeg(); }; #endif /* SRC_IMPL_H_ */

Kemudian Impl.cpp

#sertakan "Impl.h"

#include "../Zowi/Zowi.h" Zowi zowi = new Zowi(); Impl::Impl() {} Impl::~Impl() {} void Impl::zowi_home() { zowi.home(); } void Impl::zowi_init(sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR) { zowi.init(YL, YR, RL, RR); } void Impl::zowi_putMouth(sc_integer mouthType) { zowi.putMouth(mouthType); } void Impl::zowi_sing(sc_integer songName) { zowi.sing(songName); } void Impl::zowi_walk(sc_real langkah, sc_integer T, sc_integer dir) { zowi.walk(langkah, T, dir); } void Impl::zowi_shakeLeg() { zowi.shakeLeg(); }

Langkah 4: Membuat Tarian Otto

Saat Anda puas dengan produk Anda, klik palu di kiri atas dan tunggu prosesnya selesai. Kemudian klik panah hijau di sebelah kanan palu dan lihat Otto Anda menari!

Jika mau, Anda dapat melihat beberapa contoh lainnya: YAKINDU Statechart Tools

Direkomendasikan: