İçindekiler:

Durum Makinalı Arduino Otto Robot: 4 Adım
Durum Makinalı Arduino Otto Robot: 4 Adım

Video: Durum Makinalı Arduino Otto Robot: 4 Adım

Video: Durum Makinalı Arduino Otto Robot: 4 Adım
Video: Otto Robot Yapımı - İnternetteki En Detaylı Türkçe Kaynak - Dans Eden Moonwalk Yapan Robot 2024, Kasım
Anonim
Image
Image

Projeye Genel Bakış

Bu projede sizlere Arduino tabanlı bir kendin yap robotu olan Otto Robot'u programlamanın bir yolunu göstermek istiyorum. YAKINDU Statechart Tools'u (ticari olmayanlar için ücretsiz) kullanarak, Otto Robot'un davranışını grafiksel olarak modellemek ve C/C++ kodu oluşturmak için durum makinelerini kolayca kullanabiliriz. Davranışı beğenimize genişletmek için örneklerinden birini kullanacağız.

Durum makinesinin ne olduğunu bilmeyen ve karmaşık Wikipedia makalesini karıştırmak istemeyen insanlar için işte küçük bir açıklama:

Durum makinesi sadece düğümler ve bu düğümler arasındaki yollardır. Bir başlangıç düğümünüz var ve korumalarına bağlı olarak olaylarla temsil edilebilen diğer düğümlere giden yolları kullanabilirsiniz. Bu olaylar ya durum makinesinin kendisinden ya da dışarıdan (bir fonksiyon gibi, vb.)

Aracın kendisi bir sürükle ve bırak arayüzü ve alana özgü bir dil kullanır. Bunu sizin için gözden geçireceğim, böylece Otto'nuzu çalışır duruma getirmek için belgelerini incelemenize gerek kalmaz. IDE'yi kurmak çok zor değil çünkü tüm eklentiler vb. otomatik olarak kurulmalıdır.

Gereçler

Otto Robot veya Zowi Robot

Bu robotların ikisi de temelde aynı şeyi yapar ve aynı API'yi kullanır. Otto Robot, parçaları çevrimiçi olan, elinizde varsa bir 3D yazıcı ile basılmaya hazır bir DIY robottur. Alternatif, çevrimiçi olarak satın alınabilen ve kullanıma hazır olan Zowi Robot'tur.

YAKINDU Durum Çizelgesi Araçları

Durum makinesini modellemek için kullanacağımız araç. 30 günlük bir deneme ile başlayabilir ve daha sonra ticari olmayan kullanım için ücretsiz bir lisans alabilirsiniz.

Arduino Eklentisi için Eclipse C++ IDE

IDE bizim için yaptığı için manuel olarak indirmemize gerek yok. Yine de burada listelemenin iyi olacağını düşündüm.

Adım 1: Her Şeyi Ayarlamak

Otto ile Nasıl Arayüz Yapılacağını Anlamak
Otto ile Nasıl Arayüz Yapılacağını Anlamak

IDE'yi kurduktan sonra çalıştırın ve bilgisayarınızın herhangi bir yerinde bir çalışma alanı kurun (kurulum Eclipse'i ilk kez kullanmakla aynıdır). Program tam olarak başladığında, hoş geldiniz sayfasını tıklayın ve 'Dosya -> Yeni -> Örnek…' üzerine tıklayın ve ardından 'YAKINDU Statechart Örnekleri'ni seçin, biraz bekleyin ve "Gömülü Sistemler -> Zowi (C++) öğesini arayın.)" örnek.

ÖNEMLİ: 'Bağımlılıkları Yükle…' adlı sağ üstteki düğmeye tıklayın! Bu sizin için her şeyi yükler, böylece Kitaplıklar, Eklentiler ve benzerleri hakkında endişelenmenize gerek kalmaz. Örneği indirin, "Gömülü Sistemler -> Zowi (C++)" örneğindeki talimatları izleyin ve ardından bir sonraki adıma geçin.

2. Adım: Otto ile Nasıl Arayüz Yapılacağını Anlamak

".sct" dosyasına gidin ve durum makinesini beğeninize göre düzenleyin. Sağda, mevcut tüm öğeleri içeren bir menü var. Biz sadece durumlar ve geçişlerle ilgileniyoruz.

Resimde geçişlerin üzerine bir şeyler yazdığımı görüyorsunuz; "X s'den sonra" oldukça açıklayıcıdır ve "her zaman" sadece, Devletin kodunu bitirdikten hemen sonra oraya gittiği anlamına gelir. "Giriş /", kodun duruma girildikten hemen sonra yürütülmesi gerektiği anlamına gelir.

IDE, durum makinesini Arduino uyumlu olan C++ ile derler. Otto'nun özelliklerini kullanmak için, arayüze erişmek için kendimiz biraz çalışmamız gerekiyor.

Durum makinesinin kullanması için öğeleri tanımlamak için aşağıdaki anahtar sözcükler kullanılabilir:

değerleri tutan ve değiştirilemeyen sabitler

değerleri tutan ve değiştirilebilen değişkenler

uygulama için sanal C++ yöntemlerine oluşturulacak işlemler

arayüz:

sabit PIN_YL: tamsayı = 2 sabit PIN_YR: tamsayı = 3 sabit PIN_RL: tamsayı = 4 sabit PIN_RR: tamsayı = 5 sabit ses: tamsayı = 2 sabit ağız_kalp: tamsayı = 13 sabit ağız_mutluOpen: tamsayı = 11 işlem zowi_init(YL, R): tamsayı, RL: tamsayı, RR: tamsayı) işlemi zowi_home() işlemi zowi_putMouth(ağızTipi: tamsayı) işlemi zowi_sing(şarkıAdı: tamsayı) işlemi zowi_walk(adımlar: gerçek, T: tamsayı, yön: tamsayı) işlemi zowi_sha

Profesyonel İpucu: Bir yere ne gireceğinizi bilmiyorsanız veya bir hata var gibi görünüyorsa, girebilecekleriniz hakkında bazı ipuçları almak için "ctrl+boşluk" tuşlarına basın.

Ek olarak, örneklere bakmalısınız, orada da bazı kodlar var! Bunları, şu anda ilgilendiğimiz tek kısım olan modeli düzenlemek için bir yapı olarak da kullanabilirsiniz.

Adım 3: Boşlukları Doldurmak

Boşlukları doldurmak
Boşlukları doldurmak

Modeldeki bazı şeyleri değiştirdikten sonra "zowiSCT.sgen -> Generate Code Artifacts" üzerine sağ tıklayabilirsiniz. Bu, C++'da, durum makinesinde "src-gen" klasörüne bildirilen ve daha sonra normal C++ kullanarak uyguladığımız sanal işlevleri oluşturur.

Otto'dan istediğimiz işlevselliği elde etmek için bu iki dosyayı "src" klasöründe oluşturmanız yeterlidir.

İlk olarak Impl.h

#ifndef SRC_IMPL_H_

#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" sınıfı Impl: public ZowiSCT::DefaultSCI_OCB{ public: Impl(); sanal ~Impl(); void zowi_init(sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); geçersiz zowi_home(); void zowi_putMouth(sc_integermouthType); void zowi_sing(sc_integer şarkıAdı); void zowi_walk(sc_real adımlar, sc_integer T, sc_integer dir); geçersiz zowi_shakeLeg(); }; #endif /* SRC_IMPL_H_ */

Daha sonra Impl.cpp

#include "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 ağızTürü) { zowi.putMouth(ağızTürü); } void Impl::zowi_sing(sc_integer şarkıAdı) { zowi.sing(şarkıAdı); } void Impl::zowi_walk(sc_real adımlar, sc_integer T, sc_integer dir) { zowi.walk(adımlar, T, dir); } geçersiz Impl::zowi_shakeLeg() { zowi.shakeLeg(); }

Adım 4: Otto Dansı Yapmak

Ürününüzden memnun kaldığınızda sol üstteki çekicin üzerine tıklayın ve işlemin bitmesini bekleyin. Ardından çekicin sağındaki yeşil oka tıklayın ve Otto dansını görün!

Dilerseniz başka örneklere de göz atabilirsiniz: YAKINDU Statechart Tools

Önerilen: