Мазмуну:
- Жабдуулар
- 1 -кадам: Аппараттык
- 2 -кадам: Бул кантип иштеши керектигин аныктаңыз
- 3 -кадам: Мамлекеттик машинанын интерфейси
- 4 -кадам: HMI Control
- 5 -кадам: штаттарды башкаруу
- 6 -кадам: Секундомер
- 7 -кадам: эсептегич
- 8 -кадам: Симуляция
- 9 -кадам: Мисал алыңыз
Video: Arduino HMI мамлекеттик машиналарды колдонуу: 9 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Бул Нускамада мен сизге Arduino үчүн 16x2 LCD баскычтуу калканчын колдонуу менен жөнөкөй жана кеңейтиле турган HMIди ишке ашыруу үчүн YAKINDU Statechart куралдарын кантип колдонууну көрсөтөм.
Finite State Machines (FSM) - бул татаал Human Machine Interfaces (HMI) иштеп чыгуу үчүн күчтүү дизайн үлгүсү. HMIдин функционалдуулугу жогорулашы мүмкүн болгондуктан, мамлекеттик машиналар сыяктуу дизайн үлгүсүн колдонуу пайдалуу.
Толук мисал YAKINDU Statechart Tools камтылган. Мындан тышкары, Arduino Plugin үчүн Eclipse C ++ IDE IDEде компиляциялоо жана жаркыроо үчүн колдонулган.
YAKINDU Statechart куралдарынын кыскача мазмуну
Бул куралдын жардамы менен графикалык абалдагы машиналарды түзүүгө болот. Бул колдонуучуга мамлекеттик машинадан C, C ++ же Java кодун түзүүгө мүмкүндүк берет. Бул ыкма менен модель өзгөртүлүшү же кеңейтилиши мүмкүн жана колдонуучу кодду кайра жарата алат жана жөнөкөй булак кодун жазуунун кажети жок.
Жабдуулар
Бөлүктөр:
- Ардуино (Uno, Mega)
- USB кабели
- 16x2 LCD баскыч калканы
Куралдар:
- YAKINDU Statechart Tools
- Arduino үчүн Eclipse C ++ IDE
1 -кадам: Аппараттык
ЖК клавиатура калканы жөн гана Arduino'го туташтырылышы мүмкүн. Бул 16x2 LCD дисплейи бар жана кошумча алты баскычка ээ:
- Солго
- Туура
- Өйдө
- Down
- Тандоо
- (Баштапкы абалга келтирүү)
Албетте, алардын бешөө колдонулушу мүмкүн. Ачкычтар чыңалуу бөлүштүргүчкө туташтырылган жана чыңалууга жараша пин A0 аркылуу аныкталат. Мен аларды туура табуу үчүн программалык камсыздоону колдонууну колдондум.
2 -кадам: Бул кантип иштеши керектигин аныктаңыз
Колдонмо үч нерсени аткарууга жөндөмдүү болушу керек.
- Бул жерде мен баскычтарды колдонуп, беш мамлекеттин ортосунда өтөм: Жогорку, Орто, Төмөн, Сол жана Оң
- Жөнөкөй секундомер, аны баштоого, токтотууга жана баштапкы абалга келтирүүгө болот. Ал ар бир 100 миллисекундда көбөйтүлүшү керек
- Үчүнчү бөлүк жөнөкөй өйдө/ылдый эсептегичти камтыйт. Бул оң сандарды эсептей алышы керек жана аны кайра коюу керек
Активдүү меню (же абал) 16x2 ЖКда жогорку сапта көрсөтүлөт. Колдонмо (штат, таймер же эсептегич) төмөнкү сапта көрсөтүлөт. Навигация үчүн сол жана оң баскычтарды колдонуу керек.
3 -кадам: Мамлекеттик машинанын интерфейси
Кнопкалар дебюттан чыгарылып, мамлекеттик машинага зым тартылат. Алар мамлекеттик машинада болгон окуяларда колдонулушу мүмкүн. Мындан тышкары, операциялар учурдагы менюну көрсөтүү үчүн аныкталган. Жана жок дегенде эки өзгөрмө аныкталат, бири таймер үчүн, бири эсептегич үчүн.
интерфейс:
// баскычтар окуяны киргизүү окуялары катары окуяда оң жагында окуяда калган учурда окуяны төмөн карай тандоодо // дисплейде HMI спецификалык баалуулуктарын көрсөтүү displayLCDString (маани: сап, узундук: бүтүн сан, позиция: бүтүн сан) операция дисплей LCDInteger (маани: бүтүн сан, позиция: бүтүн) операция clearLCDRow (позиция: бүтүн) ички: // сактоо үчүн өзгөрмөлөр var cnt: integer var timeCnt: integer = 0
C ++ кодун түзгөндөн кийин, окуялар дебюттан чыгарылып, интерфейске туташтырылышы керек. Бул коддун үзүндүсү муну кантип жасоону көрсөтөт.
Башында, баскычтар аныкталат:
#аныктоо ЖОК 0 #аныктоо ТАНДОО 1 #ТАНДОО СОЛ 2 2 #ТӨМӨНДӨ 3 аныктоо #ЖОГОРУ 4 аныктоо #ОҢ 5 аныктоо
Андан кийин баскычты окуу үчүн аныкталган функция бар. LCD Shield өндүрүүчүсүнө жараша баалуулуктар өзгөрүшү мүмкүн.
static int readButton () {int result = 0; натыйжа = analogRead (0); if (result <50) {return Right; } if (result <150) {return UP; } if (result <300) {return DOWN; } if (result <550) {return LEFT; } if (result <850) {return SELECT; } return NONE; }
Акырында, баскычтар дебют кылынат. Мен 80 мс менен жакшы натыйжаларга жетиштим. Бир баскыч бошотулгандан кийин, ал окуяны эске алуу менен жогорулатат.
int oldState = NONE; static void liftEvents () {int buttonPressed = readButton (); кечиктирүү (80); oldState = buttonPressed; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> lift_select (); тыныгуу; } КАЛДЫК СОЛ: {stateMachine-> lift_left (); тыныгуу; } Case DOWN: {stateMachine-> lift_down (); тыныгуу; } Case UP: {stateMachine-> lift_up (); тыныгуу; } case RIGHT: {stateMachine-> lift_right (); тыныгуу; } демейки: {break; }}}}
4 -кадам: HMI Control
Ар бир абал менюнун бир бөлүгү үчүн колдонулат. Колдонмо - мисалы, секундомер - аткарыла турган суб -штаттар бар.
Бул дизайн менен интерфейсти оңой эле кеңейтүүгө болот. Кошумча менюларды жөн эле дизайн үлгүсүн колдонуу менен кошсо болот. Сенсордун маанисин окуу жана аны менюдун төртүнчү пунктунда көрсөтүү - чоң маселе эмес.
Азырынча көзөмөл катары сол жана оң гана колдонулат. Бирок өйдө жана ылдый негизги менюда навигациянын кеңейтүүсү катары колдонулушу мүмкүн. Тандоо баскычы гана белгилүү бир меню пунктуна кирүү үчүн колдонулат.
5 -кадам: штаттарды башкаруу
Туткун штаттарынын менюсу навигациянын дагы бир мисалы катары колдонулат. Жогору, ылдый, оңго же солго колдонуу штаттардын ортосунда өтүүгө мүмкүндүк берет. Учурдагы абал дайыма LCD дисплейдин экинчи сабында басылып чыгат.
6 -кадам: Секундомер
Секундомер абдан жөнөкөй. Башында таймердин мааниси баштапкы абалга келтирилет. Таймерди сол баскычты колдонуп, солго жана оңго которууга болот. Өйдө же ылдый колдонуу таймерди баштапкы абалга келтирет. Таймерди тандоо баскычын эки жолу менен нөлгө коюуга болот - менюдан чыгып, дагы бир жолу кирүү, анткени таймер алгач секундомерге кирүү менен нөлгө коюлат.
7 -кадам: эсептегич
Жок дегенде, ишке ашырылган эсептегич бар. Каршы абалга кирүү менен эсептегич баштапкы абалга келтирилет. Бул тандоо баскычын кошпогондо, каалаган баскычты колдонуу менен башталышы мүмкүн. Бул жөнөкөй өйдө/ылдый эсептегич катары ишке ашырылат, анын мааниси 0дөн кем болбошу керек.
8 -кадам: Симуляция
9 -кадам: Мисал алыңыз
IDEди бул жерден жүктөп алсаңыз болот: YAKINDU Statechart Tools
IDEди жүктөп алгандан кийин, мисалды File -> N ew -> Example аркылуу табасыз
Бул хоббистер үчүн акысыз, бирок сиз 30 күндүк сыноону колдоно аласыз.
Сунушталууда:
MSP430дагы акыркы мамлекеттик машина: 6 кадам
MSP430дагы Чектүү Мамлекеттик Машина: Мен сизге MSP430G2 Иштетүү панелин ТҮКТҮК Техас Инструменттери Композиторлор Студиясында YAKINDU Statechart Tools жардамы менен Чектүү Мамлекеттик Машиналар (FSM) менен кантип программалоону көрсөтөм. Бул окуу куралы алты кадамды камтыйт: YAKINDU Statechart куралдарын төмөнкүдөй орнотуу
Мамлекеттик машина Arduino - жөө светофор: 6 кадам (сүрөттөр менен)
Ардуинодогу мамлекеттик машина - жөө светофор: Эй, мен сага Arduino үчүн C ++ тилинде жөө светофорду чектүү мамлекеттик машина менен YAKINDU Statechart Tools аркылуу кантип программалоону көрсөтөм. Бул мамлекеттик машиналардын күчүн көрсөтөт жана мындан аркы план катары колдонулушу мүмкүн
Мамлекеттик машина жана SPU кеңейтүүчүлөрү менен Arduino боюнча көп тапшырмалар: 3 кадам
Мамлекеттик машина жана SPU кеңейтүүчүлөрү менен Arduino боюнча көп тапшырма: Өткөн жумада мен ардуино менен фейерверктерди сыноо системасын түзүүнү сурандым. Өрттү көзөмөлдөө үчүн болжол менен 64 жыйынтык керек болчу. Мунун бир жолу - IC кеңейтүүчүлөрдү колдонуу. Ошентип, 2 чечим бар:- I2C экспансери, бирок ал качан инверторго муктаж
Vibration жана Thingspeak аркылуу айлануучу машиналарды алдын ала тейлөө: 8 кадам
Vibration and Thingspeak аркылуу айлануучу машиналарды алдын ала тейлөө: шамал турбиналары, гидротурбиналар, асинхроникалык моторлор сыяктуу айлануучу машиналар ар кандай эскирүү жана эскирүү менен беттешет. Бул кемчиликтер жана эскирүүнүн көбү аппараттагы анормалдуу термелүүлөрдөн келип чыккан. Бул машиналар көбүнчө оор шарттарда иштейт
Arduino PLC 32 I/O+Мамлекеттик машина+SCADA же HMI: 8 кадам
Arduino PLC 32 I/O+Мамлекеттик машина+SCADA же HMI: arduino менен өнөр жай системасын программалоонун, башкаруунун жана көзөмөлдөөнүн көптөгөн жолдору