Съдържание:

Робот Arduino Otto с държавна машина: 4 стъпки
Робот Arduino Otto с държавна машина: 4 стъпки

Видео: Робот Arduino Otto с държавна машина: 4 стъпки

Видео: Робот Arduino Otto с държавна машина: 4 стъпки
Видео: Using 28BYJ-48 Stepper Motor Push button Speed with 8 projects: Ultimate Video Tutorial Lesson 107 2024, Юли
Anonim
Image
Image

Резюме на Проекта

В този проект искам да ви покажа начин за програмиране на Otto Robot, който е базиран на Arduino DIY робот. С помощта на YAKINDU Statechart Tools (безплатни за некомерсиални) можем лесно да използваме състоятелни машини за графично моделиране на поведението на Otto Robot и генериране на C/C ++ код. Ще използваме един от техните примери, за да разширим поведението по наш вкус.

За хората, които не знаят какво е държавна машина и не искат да ровят из сложната статия в Уикипедия, ето малко обяснение:

Машината на състоянието е само възли и пътища между тези възли. Имате начален възел и можете да поемете по пътищата до други възли в зависимост от техните защитници, които могат да бъдат представени от събития. Тези събития се повдигат или от самата машина на състоянието, или отвън (като функция и т.н.).

Самият инструмент използва интерфейс за плъзгане и пускане и език, специфичен за домейна. Ще го разгледам вместо вас, така че не е нужно да ровите в тяхната документация, за да стартирате вашия Ото. Настройването на IDE не е твърде трудно, защото всички приставки и т.н. трябва да се инсталират автоматично.

Консумативи

Ото робот или робот Зоуи

И двата робота работят по същество еднакво и използват един и същ API. Otto Robot е робот „Направи си сам“със своите части онлайн, готов за отпечатване с 3D принтер, ако случайно имате такъв. Алтернативата е роботът Zowi, който може да бъде закупен онлайн и готов за употреба.

Инструменти за диаграми на състоянието на YAKINDU

Инструментът, който ще използваме за моделиране на машината на състоянието. Можете да започнете с 30-дневен пробен период и след това да получите безплатен лиценз за некомерсиална употреба.

Eclipse C ++ IDE за Arduino Plugin

Не е нужно да го изтегляме ръчно, защото IDE го прави вместо нас. Все още си мислех, че би било хубаво да го изброя тук.

Стъпка 1: Настройване на всичко

Разбиране как да взаимодействаме с Ото
Разбиране как да взаимодействаме с Ото

След като инсталирате IDE, стартирайте го и настройте работно пространство навсякъде на вашия компютър (настройката е идентична с използването на Eclipse за първи път). Когато програмата стартира напълно, щракнете далеч от страницата за добре дошли и щракнете върху „Файл -> Ново -> Пример…“и след това изберете „Примери на диаграма на състоянието на YAKINDU“, изчакайте малко и потърсете „Вградени системи -> Zowi (C ++) "пример.

ВАЖНО: Кликнете върху горния десен бутон, наречен „Инсталиране на зависимости …“! Това инсталира всичко за вас, така че не е нужно да се притеснявате за библиотеки, приставки и други подобни. Изтеглете примера, следвайте инструкциите в примера „Вградени системи -> Zowi (C ++)“и след това продължете със следващата стъпка.

Стъпка 2: Разбиране как да взаимодействаме с Otto

Отидете във ".sct" файла и редактирайте машината на състоянието по ваш вкус. Вдясно е меню с всички налични елементи. Интересуват ни само състоянията и преходите.

На снимката можете да видите, че съм написал някои неща за преходите; "след X s" е доста обяснително и "винаги" означава само, че отива там веднага след приключване на кода от държавата. "Входът /" означава, че кодът трябва да бъде изпълнен веднага след влизане в състоянието.

IDE компилира машината на състоянието на C ++, която е съвместима с Arduino. За да използваме функциите на Otto, трябва сами да свършим малко работа, като получим достъп до интерфейса.

Следните ключови думи могат да се използват за определяне на неща, които държавната машина да използва:

константи, които държат стойности и не могат да бъдат променяни

променливи, които държат стойности и могат да бъдат променяни

операции, които ще бъдат генерирани във виртуални C ++ методи за изпълнение

интерфейс:

const PIN_YL: integer = 2 const PIN_YR: integer = 3 const PIN_RL: integer = 4 const PIN_RR: integer = 5 const звук: integer = 2 const mouth_heart: integer = 13 const mouth_happyOpen: integer = 11 операция zowi_init (YL: цяло число, YR: integer, RL: integer, RR: integer) операция zowi_home () операция zowi_putMouth (mouthType: integer) операция zowi_sing (songName: integer) операция zowi_walk (стъпки: real, T: integer, dir: integer) операция zowi_shakeLeg ()

Професионален съвет: ако не знаете какво да въведете някъде или изглежда, че има грешка, натиснете „ctrl+интервал“, за да получите подсказки за това какво можете да въведете.

Освен това трябва да разгледате примерите, те също имат някакъв код! Можете също така да ги използвате като структура за просто редактиране на модела, което е единствената част, която ни интересува в момента.

Стъпка 3: Попълване на празнините

Попълване на празнините
Попълване на празнините

След като промените нещата в модела, можете да щракнете с десния бутон върху „zowiSCT.sgen -> Generate Code Artefacts“. Това генерира виртуалните функции в C ++, които са декларирани в машината на състоянието в папката "src-gen", която след това реализираме, използвайки нормален C ++.

Просто създайте тези два файла в папката "src", за да получите функционалността, която искаме от Otto.

Първо 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 (); невалиден zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); void zowi_home (); void zowi_putMouth (sc_integer mouthType); void zowi_sing (sc_integer songName); void zowi_walk (sc_real стъпки, sc_integer T, sc_integer реж.); void zowi_shakeLeg (); }; #endif / * SRC_IMPL_H_ * /

След това Impl.cpp

#include „Impl.h“

#include "../Zowi/Zowi.h" Zowi zowi = нов 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 (стъпки, T, dir); } void Impl:: zowi_shakeLeg () {zowi.shakeLeg (); }

Стъпка 4: Направете танца на Ото

Когато сте доволни от вашия продукт, кликнете върху чука в горния ляв ъгъл и изчакайте процесът да приключи. След това кликнете върху зелената стрелка вдясно от чука и вижте как Ото танцува!

Ако искате, можете да разгледате някои други примери: Инструменти за диаграми на състоянието на YAKINDU

Препоръчано: