สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: การตั้งค่าทุกอย่าง
- ขั้นตอนที่ 2: ทำความเข้าใจวิธีเชื่อมต่อ Otto
- ขั้นตอนที่ 3: เติมช่องว่าง
- ขั้นตอนที่ 4: การทำ Otto Dance
วีดีโอ: Arduino Otto Robot พร้อม State Machine: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ภาพรวมโครงการ
ในโครงการนี้ ฉันต้องการแสดงวิธีการเขียนโปรแกรม Otto Robot ซึ่งเป็นหุ่นยนต์ DIY จาก Arduino การใช้ YAKINDU Statechart Tools (ฟรีสำหรับไม่ใช่เชิงพาณิชย์) เราสามารถใช้เครื่องของรัฐเพื่อสร้างแบบจำลองพฤติกรรมของ Otto Robot แบบกราฟิกและสร้างโค้ด C/C++ ได้อย่างง่ายดาย เราจะใช้หนึ่งในตัวอย่างของพวกเขาเพื่อขยายพฤติกรรมตามความชอบของเรา
สำหรับคนที่ไม่รู้ว่าเครื่องของรัฐคืออะไรและไม่ต้องการค้นหาบทความ Wikipedia ที่ซับซ้อน นี่คือคำอธิบายเล็กน้อย:
เครื่องสถานะเป็นเพียงโหนดและเส้นทางระหว่างโหนดเหล่านั้น คุณมีโหนดเริ่มต้นและสามารถใช้เส้นทางไปยังโหนดอื่นได้ขึ้นอยู่กับผู้พิทักษ์ซึ่งสามารถแสดงด้วยเหตุการณ์ได้ เหตุการณ์เหล่านี้เกิดขึ้นจากเครื่องของรัฐเองหรือจากภายนอก (เช่น ฟังก์ชัน ฯลฯ)
เครื่องมือนี้ใช้อินเทอร์เฟซแบบลากและวางและภาษาเฉพาะโดเมน ฉันจะอธิบายให้คุณฟัง เพื่อที่คุณจะได้ไม่ต้องค้นหาเอกสารประกอบเพื่อให้ Otto ของคุณเริ่มทำงาน การตั้งค่า IDE นั้นไม่ยากเกินไป เนื่องจากปลั๊กอินทั้งหมด ฯลฯ ควรได้รับการติดตั้งโดยอัตโนมัติ
เสบียง
Otto Robot หรือ Zowi Robot
โรบ็อตทั้งสองนี้ทำสิ่งเดียวกันโดยพื้นฐานแล้วและใช้ API เดียวกัน Otto Robot เป็นหุ่นยนต์ DIY ที่มีชิ้นส่วนออนไลน์ พร้อมที่จะพิมพ์ด้วยเครื่องพิมพ์ 3 มิติหากคุณมี อีกทางเลือกหนึ่งคือ Zowi Robot ซึ่งสามารถซื้อได้ทางออนไลน์และพร้อมใช้งาน
YAKINDU Statechart Tools
เครื่องมือที่เราจะใช้ในการสร้างแบบจำลองเครื่องสถานะ คุณสามารถเริ่มต้นด้วยการทดลองใช้ 30 วัน และรับใบอนุญาตฟรีสำหรับการใช้งานที่ไม่ใช่เชิงพาณิชย์ในภายหลัง
Eclipse C++ IDE สำหรับปลั๊กอิน Arduino
เราไม่ต้องดาวน์โหลดด้วยตนเองเพราะ IDE ทำเพื่อเรา ฉันยังคิดว่ามันคงจะดีที่จะแสดงรายการที่นี่
ขั้นตอนที่ 1: การตั้งค่าทุกอย่าง
หลังจากติดตั้ง IDE แล้ว ให้รันและตั้งค่าพื้นที่ทำงานที่ใดก็ได้บนพีซีของคุณ (การตั้งค่าจะเหมือนกับการใช้ Eclipse เป็นครั้งแรก) เมื่อโปรแกรมเริ่มทำงานอย่างสมบูรณ์แล้ว ให้คลิกที่หน้าต้อนรับและคลิกที่ 'ไฟล์ -> ใหม่ -> ตัวอย่าง…' จากนั้นเลือก 'YAKINDU Statechart Examples' รอสักครู่แล้วค้นหา "ระบบฝังตัว -> Zowi (C++))" ตัวอย่าง.
สำคัญ: คลิกที่ปุ่มขวาบนที่เรียกว่า 'ติดตั้งการพึ่งพา…'! สิ่งนี้จะติดตั้งทุกอย่างให้คุณ ดังนั้นคุณจึงไม่ต้องกังวลกับไลบรารี ปลั๊กอิน และอื่นๆ ดาวน์โหลดตัวอย่าง ทำตามคำแนะนำในตัวอย่าง "ระบบฝังตัว -> 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 เสียง const: จำนวนเต็ม = 2 const mouth_heart: จำนวนเต็ม = 13 const mouth_happyOpen: จำนวนเต็ม = 11 การดำเนินการ zowi_integer (, YR:: integer, RL: integer, RR: integer) operation zowi_home() operation zowi_putMouth(mouthType: integer) operation zowi_sing(songName: integer) operation zowi_walk(steps: real, T: integer, dir: integer_shake) operation zowi)
เคล็ดลับแบบมือโปร: หากคุณไม่รู้ว่าต้องป้อนอะไรในที่ใดที่หนึ่งหรือดูเหมือนว่าจะมีข้อผิดพลาด ให้กด "ctrl+space" เพื่อรับคำแนะนำว่าคุณสามารถป้อนอะไรได้บ้าง
นอกจากนี้ คุณควรดูตัวอย่าง พวกเขามีโค้ดอยู่ด้วย! คุณยังสามารถใช้เป็นโครงสร้างเพื่อแก้ไขแบบจำลอง ซึ่งเป็นส่วนเดียวที่เราสนใจในตอนนี้
ขั้นตอนที่ 3: เติมช่องว่าง
หลังจากเปลี่ยนสิ่งต่าง ๆ ในโมเดล คุณสามารถคลิกขวาที่ "zowiSCT.sgen -> Generate Code Artifacts" สิ่งนี้สร้างฟังก์ชันเสมือนใน C ++ ซึ่งประกาศในเครื่องสถานะไปยังโฟลเดอร์ "src-gen" ซึ่งเราจะนำไปใช้โดยใช้ C ++ ปกติ
เพียงสร้างสองไฟล์นี้ในโฟลเดอร์ "src" เพื่อรับฟังก์ชันที่เราต้องการจาก Otto
อันดับแรก Impl.h
#ifndef SRC_IMPL_H_
#define SRC_IMPL_H_ #include "../src-gen/ZowiSCT.h" คลาส Impl: สาธารณะ ZowiSCT::DefaultSCI_OCB{ สาธารณะ: Impl(); เสมือน ~Impl(); เป็นโมฆะ zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR); เป็นโมฆะ zowi_home(); เป็นโมฆะ zowi_putMouth(sc_integer mouthType); เป็นโมฆะ zowi_sing (sc_integer songName); เป็นโมฆะ zowi_walk (ขั้นตอน sc_real, sc_integer T, sc_integer dir); เป็นโมฆะ zowi_shakeLeg(); }; #endif /* SRC_IMPL_H_ */
จากนั้น Impl.cpp
#include "Impl.h"
#include "../Zowi/Zowi.h" Zowi zowi = ใหม่ Zowi(); Impl::Impl() {} Impl::~Impl() {} เป็นโมฆะ Impl::zowi_home() { zowi.home(); } โมฆะ Impl::zowi_init (sc_integer YL, sc_integer YR, sc_integer RL, sc_integer RR) { zowi.init (YL, YR, RL, RR); } เป็นโมฆะ Impl::zowi_putMouth (sc_integer mouthType) { zowi.putMouth (mouthType); } เป็นโมฆะ Impl::zowi_sing (sc_integer songName) { zowi.sing (ชื่อเพลง); } โมฆะ Impl::zowi_walk (ขั้นตอน sc_real, sc_integer T, sc_integer dir) { zowi.walk (ขั้นตอน, T, dir); } เป็นโมฆะ Impl::zowi_shakeLeg() { zowi.shakeLeg(); }
ขั้นตอนที่ 4: การทำ Otto Dance
เมื่อคุณพอใจกับผลิตภัณฑ์ของคุณแล้ว ให้คลิกที่ค้อนที่ด้านบนซ้ายและรอให้กระบวนการเสร็จสิ้น จากนั้นคลิกที่ลูกศรสีเขียวทางด้านขวาของค้อนและดู Otto ของคุณเต้น!
หากต้องการ คุณสามารถดูตัวอย่างอื่นๆ ได้: YAKINDU Statechart Tools
แนะนำ:
All Band Receiver พร้อม SI4732 / SI4735 (FM / RDS, AM และ SSB) พร้อม Arduino: 3 ขั้นตอน
All Band Receiver พร้อม SI4732 / SI4735 (FM / RDS, AM และ SSB) พร้อม Arduino: เป็นโปรเจ็กต์เครื่องรับย่านความถี่ทั้งหมด ใช้ห้องสมุด Arduino Si4734 ห้องสมุดนี้มีตัวอย่างมากกว่า 20 ตัวอย่าง คุณสามารถฟัง FM ด้วย RDS สถานี AM (MW) ในพื้นที่ SW และสถานีวิทยุสมัครเล่น (SSB) เอกสารทั้งหมดที่นี่
อินเทอร์เฟซ ESP32 พร้อม SSD1306 Oled พร้อม MicroPython: 5 ขั้นตอน
อินเทอร์เฟซ ESP32 พร้อม SSD1306 Oled พร้อม MicroPython: Micropython เป็นการเพิ่มประสิทธิภาพของ python และมีขนาดเล็กของ python ซึ่งหมายถึงการสร้างสำหรับอุปกรณ์ฝังตัวซึ่งมีข้อจำกัดด้านหน่วยความจำและใช้พลังงานต่ำ Micropython สามารถใช้ได้กับคอนโทรลเลอร์หลายตระกูล ซึ่งรวมถึง ESP8266, ESP32, Ardui
State Machine บน Arduino - สัญญาณไฟจราจรคนเดินเท้า: 6 ขั้นตอน (พร้อมรูปภาพ)
State Machine บน Arduino - สัญญาณไฟจราจรคนเดินเท้า: สวัสดี! ฉันจะแสดงวิธีตั้งโปรแกรมสัญญาณไฟจราจรสำหรับคนเดินเท้าสำหรับ Arduino ใน C ++ ด้วยเครื่องสถานะ จำกัด โดยใช้ YAKINDU Statechart Tools นี่จะแสดงให้เห็นถึงพลังของเครื่องจักรของรัฐและสามารถใช้เป็นพิมพ์เขียวสำหรับต่อไป
PWM พร้อม ESP32 - Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: 6 ขั้นตอน
PWM พร้อม ESP32 | Dimming LED พร้อม PWM บน ESP 32 พร้อม Arduino IDE: ในคำแนะนำนี้เราจะดูวิธีสร้างสัญญาณ PWM ด้วย ESP32 โดยใช้ Arduino IDE & โดยทั่วไปแล้ว PWM จะใช้เพื่อสร้างเอาต์พุตแอนะล็อกจาก MCU ใดๆ และเอาต์พุตแอนะล็อกนั้นอาจเป็นอะไรก็ได้ระหว่าง 0V ถึง 3.3V (ในกรณีของ esp32) & จาก
State Machine และ Multitasking บน Arduino ด้วย SPI Expanders: 3 ขั้นตอน
State Machine และ Multitasking บน Arduino ด้วย SPI Expanders: เมื่อสัปดาห์ที่แล้ว ฉันกำลังขอให้สร้างระบบเพื่อขับดอกไม้ไฟด้วย Arduino มันต้องการประมาณ 64 เอาต์พุตเพื่อควบคุมไฟ วิธีหนึ่งที่ทำได้คือการใช้ตัวขยาย IC มี 2 โซลูชันให้เลือก:- ตัวขยาย I2C แต่ต้องใช้อินเวอร์เตอร์เมื่อคุณ