جدول المحتويات:

اردوينو أوتو روبوت مع آلة الدولة: 4 خطوات
اردوينو أوتو روبوت مع آلة الدولة: 4 خطوات

فيديو: اردوينو أوتو روبوت مع آلة الدولة: 4 خطوات

فيديو: اردوينو أوتو روبوت مع آلة الدولة: 4 خطوات
فيديو: مقدمة سلسلة - تعلم الاردوينو والروبوتات ببساطة 2024, يوليو
Anonim
Image
Image

ملخص المشروع

في هذا المشروع ، أريد أن أوضح لك طريقة لبرمجة Otto Robot ، وهو روبوت يعمل بنظام DIY يعتمد على Arduino. باستخدام أدوات YAKINDU Statechart (المجانية لغير التجارية) ، يمكننا بسهولة استخدام آلات الحالة لنمذجة سلوك Otto Robot بيانياً وإنشاء كود C / C ++. سنستخدم أحد أمثلةهم لتوسيع السلوك حسب رغبتنا.

بالنسبة للأشخاص الذين لا يعرفون ما هي آلة الدولة ولا يريدون البحث في مقالة ويكيبيديا المعقدة ، فإليك شرحًا بسيطًا:

آلة الحالة هي مجرد عقد ومسارات بين تلك العقد. لديك عقدة بداية ويمكنك أن تأخذ المسارات إلى العقد الأخرى اعتمادًا على حراسها ، والتي يمكن أن تمثلها الأحداث. تنشأ هذه الأحداث إما من آلة الدولة نفسها أو من الخارج (مثل الوظيفة ، وما إلى ذلك).

تستخدم الأداة نفسها واجهة سحب وإفلات ولغة خاصة بالمجال. سأراجعها من أجلك ، لذلك لا يتعين عليك البحث في وثائقهم للحصول على Otto وتشغيله. إعداد IDE ليس صعبًا للغاية ، لأنه يجب تثبيت جميع المكونات الإضافية وما إلى ذلك تلقائيًا.

اللوازم

أوتو روبوت أو زوي روبوت

كل من هذه الروبوتات تقوم بنفس الشيء وتستخدم نفس واجهة برمجة التطبيقات. Otto Robot هو روبوت يعمل بنفسك ، مع أجزائه عبر الإنترنت ، جاهز للطباعة باستخدام طابعة ثلاثية الأبعاد إذا كان لديك واحدة. البديل هو Zowi Robot ، والذي يمكن شراؤه عبر الإنترنت وجاهز للاستخدام.

YAKINDU Statechart Tools

الأداة التي سنستخدمها لنمذجة آلة الحالة. يمكنك البدء بفترة تجريبية مدتها 30 يومًا والحصول على ترخيص مجاني للاستخدام غير التجاري بعد ذلك.

Eclipse C ++ IDE لبرنامج Arduino الإضافي

لا يتعين علينا تنزيله يدويًا ، لأن IDE يقوم بذلك نيابةً عنا. ما زلت أعتقد أنه سيكون من الجيد إدراجه هنا.

الخطوة 1: إعداد كل شيء

فهم كيفية التعامل مع Otto
فهم كيفية التعامل مع Otto

بعد تثبيت IDE ، قم بتشغيله وإعداد مساحة عمل في أي مكان على جهاز الكمبيوتر الخاص بك (الإعداد مماثل لاستخدام Eclipse لأول مرة). عندما يبدأ البرنامج بالكامل ، انقر بعيدًا عن صفحة الترحيب وانقر على "ملف -> جديد -> مثال …" ثم حدد "أمثلة مخطط حالة YAKINDU" ، وانتظر قليلاً وابحث عن "الأنظمة المضمنة -> Zowi (C ++))" مثال.

هام: انقر فوق الزر الأيمن العلوي المسمى "تثبيت التبعيات …"! يقوم هذا بتثبيت كل شيء من أجلك ، لذلك لا داعي للقلق بشأن المكتبات والمكونات الإضافية وما شابه. قم بتنزيل المثال ، واتبع التعليمات في مثال "Embedded Systems -> Zowi (C ++)" ثم تابع إلى الخطوة التالية.

الخطوة 2: فهم كيفية التعامل مع Otto

انتقل إلى ملف ".sct" وقم بتحرير آلة الحالة حسب رغبتك. على اليمين توجد قائمة بجميع العناصر المتاحة. نحن مهتمون فقط بالدول والتحولات.

في الصورة ، يمكنك أن ترى أنني كتبت بعض الأشياء على التحولات ؛ "بعد X s" تشرح نفسها بنفسها وتعني كلمة "دائمًا" أنها تذهب إلى هناك مباشرةً بعد الانتهاء من الكود من الدولة. يعني "الإدخال /" ، أنه يجب تنفيذ الكود مباشرة بعد دخول الدولة.

يقوم IDE بترجمة آلة الحالة إلى C ++ ، وهو متوافق مع Arduino. لاستخدام ميزات Otto ، يتعين علينا القيام ببعض العمل بأنفسنا للوصول إلى الواجهة.

يمكن استخدام الكلمات الرئيسية التالية لتحديد الأشياء التي يجب أن يستخدمها جهاز الحالة:

الثوابت التي تحمل قيمًا ولا يمكن تغييرها

المتغيرات التي تحمل القيم ويمكن تغييرها

العمليات ، والتي سيتم إنشاؤها لطرق C ++ الافتراضية للتنفيذ

واجهه المستخدم:

const PIN_YL: صحيح = 2 const PIN_YR: عدد صحيح = 3 const PIN_RL: عدد صحيح = 4 const PIN_RR: عدد صحيح = 5 صوت ثابت: عدد صحيح = 2 const mouth_heart: عدد صحيح = 13 const mouth_happyOpen: عدد صحيح = 11 عملية zowi_init (YL: عدد صحيح ، YR: عدد صحيح ، RL: عدد صحيح ، RR: عدد صحيح) عملية zowi_home () عملية zowi_putMouth (mouthType: صحيح) عملية zowi_sing (songName: صحيح) عملية zowi_walk (خطوات: حقيقي ، T: عدد صحيح ، dir: عدد صحيح) عملية zowi_shakeLeg ()

نصيحة للمحترفين: إذا كنت لا تعرف ما يجب إدخاله في مكان ما أو يبدو أن هناك خطأ ما ، فاضغط على "ctrl + space" للحصول على بعض التلميحات حول ما يمكنك إدخاله.

بالإضافة إلى ذلك ، يجب أن تنظر في الأمثلة ، فلديهم بعض الرموز هناك أيضًا! يمكنك أيضًا استخدامها كهيكل لتعديل النموذج فقط ، وهو الجزء الوحيد الذي نهتم به حتى الآن.

الخطوة الثالثة: سد الثغرات

سد الثغرات
سد الثغرات

بعد تغيير الأشياء في النموذج ، يمكنك النقر بزر الماوس الأيمن فوق "zowiSCT.sgen -> إنشاء عناصر الكود". يؤدي هذا إلى إنشاء الوظائف الافتراضية في C ++ ، والتي يتم الإعلان عنها في جهاز الحالة إلى المجلد "src-gen" ، والذي نقوم بعد ذلك بتطبيقه باستخدام C ++ العادي.

ما عليك سوى إنشاء هذين الملفين في مجلد "src" للحصول على الوظيفة التي نريدها من Otto.

أولا ، الضمنية

#ifndef SRC_IMPL_H_

#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" class Impl: public ZowiSCT:: DefaultSCI_OCB {public: Impl ()؛ افتراضي ~ Impl () ؛ zowi_init باطلة (sc_integer YL، sc_integer YR، sc_integer RL، sc_integer RR) ؛ zowi_home () باطل ؛ باطل zowi_putMouth (نوع الفم sc_integer) ؛ zowi_sing باطل (sc_integer songName) ؛ zowi_walk باطل (خطوات sc_real ، sc_integer T ، sc_integer dir) ؛ zowi_shakeLeg () باطلة ؛ } ؛ #endif / * SRC_IMPL_H_ * /

ثم ملف Impl.cpp

# تضمين "Impl.h"

# تضمين "../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 steps، sc_integer T، sc_integer dir) {zowi.walk (steps، T، dir)؛ } void Impl:: zowi_shakeLeg () {zowi.shakeLeg ()؛ }

الخطوة 4: صنع رقصة أوتو

عندما تكون سعيدًا بمنتجك ، انقر فوق المطرقة في أعلى اليسار وانتظر حتى تنتهي العملية. ثم انقر فوق السهم الأخضر على يمين المطرقة وشاهد رقص Otto!

إذا كنت تريد ، يمكنك التحقق من بعض الأمثلة الأخرى: YAKINDU Statechart Tools

موصى به: