Мазмұны:
- Жабдықтар
- 1 -қадам: аппараттық құрал
- 2 -қадам: Бұл қалай жұмыс істейтінін анықтаңыз
- 3 -қадам: Мемлекеттік машинаның интерфейсі
- 4 -қадам: HMI басқару
- 5 -қадам: штаттарды басқару
- 6 -қадам: секундомер
- 7 -қадам: Есептегіш
- 8 -қадам: модельдеу
- 9 -қадам: Мысалды алыңыз
Бейне: Arduino HMI мемлекеттік машиналарды қолдану: 9 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Бұл нұсқаулықта мен сізге Arduino үшін 16x2 СКД пернетақтасы қалқанын пайдалану арқылы қарапайым және кеңейтілетін HMI іске асыру үшін YAKINDU Statechart құралдарын қалай қолдану керектігін көрсетемін.
Ақырлы күй машиналары (FSM) - бұл күрделі машиналық интерфейстерді (HMI) дамытудың қуатты дизайны. HMI функционалдығы арта алатындықтан, мемлекеттік машиналар сияқты дизайн үлгісін қолдану пайдалы.
Толық мысал YAKINDU Statechart Tools құралына енгізілген. Сонымен қатар, IDE -ді құрастыру және жыпылықтау үшін Arduino Plugin үшін Eclipse C ++ IDE қолданылды.
YAKINDU Statechart құралдарының қысқаша конспектісі
Бұл құралдың көмегімен графикалық күй машиналарын құруға болады. Бұл пайдаланушыға мемлекеттік машинадан C, C ++ немесе Java кодын құруға мүмкіндік береді. Мұндай тәсілмен модельді өзгертуге немесе кеңейтуге болады, ал пайдаланушы кодты қайта жасай алады және қарапайым бастапқы кодты жазудың қажеті жоқ.
Жабдықтар
Бөлшектер:
- Ардуино (Uno, Mega)
- USB кабелі
- 16x2 СКД пернетақтасы
Құралдар:
- YAKINDU Statechart құралдары
- Arduino үшін Eclipse C ++ IDE
1 -қадам: аппараттық құрал
СКД пернетақта қалқаны Arduino -ға қосылуы мүмкін. Оның 16x2 СКД дисплейі бар және қосымша алты түйме бар:
- Сол
- Дұрыс
- Жоғары
- Төмен
- Таңдаңыз
- (Қалпына келтіру)
Әлбетте, олардың бесеуін қолдануға болады. Кілттер кернеу бөлгішке қосылады және кернеуге байланысты A0 түйреуішінің көмегімен анықталады. Мен оларды дұрыс анықтау үшін бағдарламалық қамтамасыз етуді жоюды қолдандым.
2 -қадам: Бұл қалай жұмыс істейтінін анықтаңыз
Қолданба үш нәрсені орындауға қабілетті болуы керек.
- Бұл жерде мен түймелердің көмегімен бес күй арасында жылжуды қалаймын: жоғарғы, орта, төменгі, сол және оң
- Секундомер Бастауға, тоқтатуға және қалпына келтіруге болатын қарапайым секундомер. Оны әр 100 миллисекунд сайын ұлғайту керек
- Үшінші бөлімде қарапайым жоғары/төмен есептегіш бар. Ол оң сандарды санауы керек және оны қалпына келтіру керек
Белсенді мәзір (немесе күй) 16x2 СКД жоғарғы жолында көрсетіледі. Бағдарлама (күй, таймер немесе санауыш) төменгі жолда көрсетіледі. Навигация үшін сол және оң жақ батырманы пайдалану керек.
3 -қадам: Мемлекеттік машинаның интерфейсі
Түймелер шығарылады және мемлекеттік машинаға қосылады. Оларды мемлекеттік машинадағы оқиғалар сияқты қолдануға болады. Сонымен қатар, ағымдағы мәзірді көрсету үшін операциялар анықталады. Және кем дегенде екі айнымалы анықталады, біреуі таймер үшін, екіншісі есептегіш үшін.
интерфейс:
// оқиғалардағы оқиғаларды енгізу оқиғалары ретіндегі оқиғалар оқиғаның оң жағындағы оқиғаның сол жағындағы оқиғаның жоғарыдағы оқиғасының төмендегісін таңдау // HMI арнайы мәндерін көрсету операциясын көрсету DisplayLCDString (мән: жол, ұзындық: бүтін сан, позиция: бүтін сан) операциялық дисплей LCDInteger (мән: бүтін сан, позиция: integer) операциясы clearLCDRow (позиция: бүтін сан) ішкі: // сақтау үшін айнымалылар cnt: integer var timeCnt: integer = 0
C ++ кодын жасағаннан кейін, оқиғалар жойылып, интерфейске қосылуы керек. Бұл код үзіндісі мұны қалай жасау керектігін көрсетеді.
Алдымен түймелер анықталады:
#анықтаңыз NONE 0 #анықтау SELECT 1 #DEFINE LEFT 2 #DOWNE3 анықтау #UP 4 анықтау #RIGHT 5 анықтау
Содан кейін батырманы оқу үшін анықталған функция бар. LCD Shield өндірушісіне байланысты мәндер әр түрлі болуы мүмкін.
static int readButton () {int нәтижесі = 0; нәтиже = analogRead (0); if (нәтиже <50) {ОҢҒА қайту; } if (нәтиже <150) {қайтару UP; } if (нәтиже <300) {DOWN қайтару; } if (нәтиже <550) {LEFT қайтару; } if (нәтиже <850) {SELECT қайтару; } қайтару NONE; }
Соңында түймелер дебют болады. Мен 80 мс жақсы нәтиже бердім. Түйме босатылғаннан кейін, ол жағдайды көрсетеді.
int oldState = NONE; static void elevEvents () {int buttonPressed = readButton (); кешіктіру (80); oldState = түйме басылды; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> lift_select (); үзіліс; } жағдай СОЛ: {stateMachine-> lift_left (); үзіліс; } жағдай ТӨМЕН: {stateMachine-> lift_down (); үзіліс; } жағдай ЖОҒАРЫ: {stateMachine-> lift_up (); үзіліс; } жағдай ҚҰҚЫҚ: {stateMachine-> boost_right (); үзіліс; } әдепкі: {break; }}}}
4 -қадам: HMI басқару
Әр күй мәзірдің бір бөлігі үшін қолданылады. Қосымша күйлер бар, оларда қосымша - мысалы секундомер орындалады.
Бұл дизайн көмегімен интерфейсті оңай кеңейтуге болады. Қосымша мәзірлерді сол дизайн үлгісін қолдану арқылы қосуға болады. Сенсордың мәнін оқу және оны төртінші мәзір пунктінде көрсету - үлкен мәселе емес.
Әзірге басқару элементі ретінде тек сол және оң жақ пайдаланылады. Бірақ жоғары және төмен негізгі мәзірде навигация кеңейтімі ретінде де қолданыла алады. Мәзірдің белгілі бір пунктін енгізу үшін тек таңдау батырмасы қолданылады.
5 -қадам: штаттарды басқару
Тұтқаны күйлер мәзірі шарлаудың келесі мысалы ретінде ғана қолданылады. Жоғары, төмен, оңға немесе солға қолдану күйлер арасында ауысуға мүмкіндік береді. Ағымдағы күй әрқашан СКД дисплейінің екінші жолында басылады.
6 -қадам: секундомер
Секундомер өте қарапайым. Бастапқыда таймер мәні қалпына келтіріледі. Таймерді сол жақ батырманың көмегімен бастауға болады және солға және оңға ауысуға болады. Жоғары немесе төмен пайдалану таймерді қалпына келтіреді. Таңдау түймесін екі рет басу арқылы таймерді нөлге қайтаруға болады - мәзірден шығып, оны қайтадан енгізу, өйткені таймер бастапқыда секундомерді енгізу арқылы нөлге тең болады.
7 -қадам: Есептегіш
Кем дегенде, есептегіш бар. Есептегіш күйіне кіру есептегішті қалпына келтіреді. Таңдау түймесін қоспағанда, оны кез келген батырманың көмегімен бастауға болады. Ол қарапайым жоғары/төмен есептегіш ретінде енгізілген, оның мәні 0 -ден кіші болмайды.
8 -қадам: модельдеу
9 -қадам: Мысалды алыңыз
IDE -ді мына жерден жүктей аласыз: YAKINDU Statechart Tools
IDE жүктелгеннен кейін сіз мысалды File -> N ew -> Example арқылы таба аласыз
Бұл әуесқойлар үшін ақысыз, бірақ сіз 30 күндік сынақ нұсқасын пайдалана аласыз.
Ұсынылған:
Ubidots + ESP32- Болжалды машиналарды бақылау: 10 қадам
Ubidots + ESP32- Болжалды машиналық бақылау: Ubidots көмегімен google парағында пошталық оқиғалар мен дірілдің жазбасын құру арқылы машинаның дірілі мен температурасын болжауды талдау
Мемлекеттік машинасы бар Arduino Otto робот: 4 қадам
Мемлекеттік машинамен Arduino Otto робот: Жобаға шолу Бұл жобада мен сізге Arduino негізіндегі DIY роботы болып табылатын Otto Robot бағдарламалау әдісін көрсеткім келеді. YAKINDU Statechart құралдарының көмегімен (коммерциялық емес үшін ақысыз) біз мінез-құлықты графикалық модельдеу үшін мемлекеттік машиналарды оңай пайдалана аламыз
Мемлекеттік машина және SPI кеңейтушілері бар Arduino -дағы көп тапсырма: 3 қадам
Мемлекеттік машина және SPU кеңейтушілері бар Arduino -дағы көп тапсырма: Өткен аптада мен ардуино көмегімен отшашуды басқаратын жүйе құруды сұрадым. Өртті сөндіру үшін шамамен 64 шығыс қажет болды. Мұны істеудің бір әдісі - IC кеңейтушілерді қолдану. Сонымен, 2 шешім бар:- I2C кеңейткіші, бірақ ол кезде инвертор қажет
HC -SR04 VS VL53L0X - 1 -тест - роботтық машиналарды қолдану: 7 қадам
HC -SR04 VS VL53L0X - 1 -тест - автокөліктердің роботтық қосымшаларында қолдану: Бұл нұсқаулықта физикалық функциясы мүлде басқа екі кең таралған датчиктердің әсерлілігін салыстыруға арналған қарапайым (мүмкіндігінше ғылыми) эксперимент процесі ұсынылады. HC-SR04 ультрадыбысты қолданады
Arduino PLC 32 I/O+мемлекеттік машина+SCADA немесе HMI: 8 қадам
Arduino PLC 32 I/O+State Machine+SCADA немесе HMI: arduino көмегімен өнеркәсіптік жүйені бағдарламалаудың, бақылаудың және бақылаудың көптеген әдістері