Мазмуну:

Arduino HMI мамлекеттик машиналарды колдонуу: 9 кадам
Arduino HMI мамлекеттик машиналарды колдонуу: 9 кадам

Video: Arduino HMI мамлекеттик машиналарды колдонуу: 9 кадам

Video: Arduino HMI мамлекеттик машиналарды колдонуу: 9 кадам
Video: HMI Dashboard Arduino Project 2024, Ноябрь
Anonim
Arduino HMI мамлекеттик машиналарды колдонуу
Arduino HMI мамлекеттик машиналарды колдонуу

Бул Нускамада мен сизге 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 -кадам: Аппараттык

Image
Image

ЖК клавиатура калканы жөн гана Arduino'го туташтырылышы мүмкүн. Бул 16x2 LCD дисплейи бар жана кошумча алты баскычка ээ:

  • Солго
  • Туура
  • Өйдө
  • Down
  • Тандоо
  • (Баштапкы абалга келтирүү)

Албетте, алардын бешөө колдонулушу мүмкүн. Ачкычтар чыңалуу бөлүштүргүчкө туташтырылган жана чыңалууга жараша пин A0 аркылуу аныкталат. Мен аларды туура табуу үчүн программалык камсыздоону колдонууну колдондум.

2 -кадам: Бул кантип иштеши керектигин аныктаңыз

HMI Control
HMI Control

Колдонмо үч нерсени аткарууга жөндөмдүү болушу керек.

  1. Бул жерде мен баскычтарды колдонуп, беш мамлекеттин ортосунда өтөм: Жогорку, Орто, Төмөн, Сол жана Оң
  2. Жөнөкөй секундомер, аны баштоого, токтотууга жана баштапкы абалга келтирүүгө болот. Ал ар бир 100 миллисекундда көбөйтүлүшү керек
  3. Үчүнчү бөлүк жөнөкөй өйдө/ылдый эсептегичти камтыйт. Бул оң сандарды эсептей алышы керек жана аны кайра коюу керек

Активдүү меню (же абал) 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 -кадам: эсептегич

Counter
Counter

Жок дегенде, ишке ашырылган эсептегич бар. Каршы абалга кирүү менен эсептегич баштапкы абалга келтирилет. Бул тандоо баскычын кошпогондо, каалаган баскычты колдонуу менен башталышы мүмкүн. Бул жөнөкөй өйдө/ылдый эсептегич катары ишке ашырылат, анын мааниси 0дөн кем болбошу керек.

8 -кадам: Симуляция

9 -кадам: Мисал алыңыз

IDEди бул жерден жүктөп алсаңыз болот: YAKINDU Statechart Tools

IDEди жүктөп алгандан кийин, мисалды File -> N ew -> Example аркылуу табасыз

Бул хоббистер үчүн акысыз, бирок сиз 30 күндүк сыноону колдоно аласыз.

Сунушталууда: