Բովանդակություն:
- Պարագաներ
- Քայլ 1: Սարքավորումը
- Քայլ 2: Սահմանեք, թե ինչպես պետք է այն աշխատի
- Քայլ 3. Պետական մեքենայի միացում
- Քայլ 4: HMI վերահսկում
- Քայլ 5: Կառավարեք պետությունները
- Քայլ 6: Վայրկյանաչափ
- Քայլ 7: Հակահարված
- Քայլ 8: Սիմուլյացիա
- Քայլ 9: Ստացեք օրինակը
Video: Arduino HMI օգտագործելով պետական մեքենաներ. 9 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:47
Այս Ուղեցույցում ես ձեզ ցույց կտամ, թե ինչպես օգտագործել YAKINDU Statechart Tools- ը ՝ պարզ և ընդարձակվող HMI իրականացնելու համար ՝ օգտագործելով Arduino- ի համար 16x2 LCD ստեղնաշարի վահան:
Վերջնական վիճակի մեքենաները (FSM) հզոր դիզայնի մոդել են `մշակելու համար մարդկային մեքենաների բարդ միջերեսներ (HMI): Քանի որ HMI- ի ֆունկցիոնալությունը կարող է աճել, օգտակար է օգտագործել պետական մեքենաների նման դիզայնի օրինակ:
Ամբողջական օրինակը ներդրված է YAKINDU Statechart Tools- ում: Բացի այդ, Eclipse C ++ IDE- ն Arduino Plugin- ի համար օգտագործվել է IDE- ում կազմելու և լուսավորելու համար:
YAKINDU Statechart Tools- ի համառոտ ակնարկ
Այս գործիքի միջոցով հնարավոր է ստեղծել գրաֆիկական վիճակի մեքենաներ: Այն թույլ է տալիս օգտվողին գեներացնել C, C ++ կամ Java ծածկագիր պետական մեքենայից: Այս մոտեցմամբ մոդելը կարող է փոխվել կամ ընդլայնվել, և օգտվողը կարող է պարզապես վերստեղծել ծածկագիրը և պարտադիր չէ գրել պարզ աղբյուր:
Պարագաներ
Մասեր:
- Արդուինո (Ունո, Մեգա)
- USB մալուխ
- 16x2 LCD ստեղնաշարի վահան
Գործիքներ:
- YAKINDU Statechart գործիքներ
- Eclipse C ++ IDE Arduino- ի համար
Քայլ 1: Սարքավորումը
LCD ստեղնաշարի վահանը պարզապես կարելի է միացնել Arduino- ին: Այն ունի 16x2 LCD էկրան և լրացուցիչ ստացել է վեց սեղմիչ:
- Ձախ
- Ճիշտ
- Վերև
- Ներքև
- Ընտրել
- (Վերակայել)
Ակնհայտ է, որ դրանցից հինգը կարող են օգտագործվել: Բանալիները միացված են լարման բաժանարարին և հայտնաբերվում են Pin A0- ի միջոցով `կախված լարումից: Ես օգտագործել եմ ծրագրակազմի ապամոնտաժումը `դրանք ճիշտ հայտնաբերելու համար:
Քայլ 2: Սահմանեք, թե ինչպես պետք է այն աշխատի
Դիմումը պետք է կարողանա անել երեք բան.
- Այստեղ ես ուզում եմ օգտագործել կոճակները ՝ նավարկելու հինգ վիճակների միջև ՝ վերև, միջին, ներքև, ձախ և աջ
- Stopամացույցաչափ Մի պարզ վայրկյանաչափ, որը կարելի է սկսել, կանգնեցնել և վերակայել: Այն պետք է ավելացվի յուրաքանչյուր 100 միլիվայրկյանում
- Երրորդ մասը պարունակում է պարզ վեր/վար հաշվիչ: Այն պետք է կարողանա հաշվել դրական թվեր, և այն պետք է վերակայվի
Ակտիվ ընտրացանկը (կամ վիճակը) կցուցադրվի 16x2 LCD- ի վերին տողում: Դիմումը (վիճակ, ժամաչափ կամ հաշվիչ) կցուցադրվի ներքևի տողում: Նավիգացիայի համար պետք է օգտագործել ձախ և աջ կոճակը:
Քայլ 3. Պետական մեքենայի միացում
Կոճակները կհեռացվեն և կմիացվեն պետական մեքենային: Նրանք կարող են օգտագործվել ինչպես պետական մեքենայի միջոցառումներում: Բացի այդ, գործողությունները սահմանվում են ընթացիկ ընտրացանկը ցուցադրելու համար: Եվ սահմանվում է առնվազն երկու փոփոխական `մեկը ժամանակաչափի համար և մեկը հաշվիչի համար:
ինտերֆեյս:
// կոճակներ ՝ որպես իրադարձության իրադարձության աջ իրադարձության դեպքում իրադարձության ձախ դեպքում իրադարձության ներքևում ընտրեք // ցուցադրեք HMI- ի հատուկ արժեքների գործողություն displayLCDString (արժեքը ՝ տող, երկարություն.: ամբողջական) գործողություն clearLCDRow (դիրքը `ամբողջական) ներքին: // փոփոխման համար փոփոխականներ cnt: ամբողջ թիվ var ժամանակ Cnt: ամբողջական = 0
C ++ ծածկագիրը գեներացնելուց հետո իրադարձությունները պետք է անջատվեն և միացվեն ինտերֆեյսին: Այս կոդի հատվածը ցույց է տալիս, թե ինչպես դա անել:
Սկզբում կոճակները կսահմանվեն.
#սահմանել ՈՉ ՄԻ 0 #սահմանել ԸՆՏՐԵԼ 1 #սահմանել ՁԱՅՆ 2 #սահմանել ԻՆՔՆ 3 #սահմանել ՄԻՆՉԵՎ 4 #սահմանել IGHԻՇՏ 5
Այնուհետև կա գործառույթ, որը սահմանված է կոճակը կարդալու համար: Արժեքները կարող են տարբեր լինել `կախված LCD Shield արտադրողի կողմից:
static int readButton () {int արդյունք = 0; արդյունք = analogRead (0); եթե (արդյունք <50) {վերադարձ ԱIGHԻՆ; } if (արդյունք <150) {վերադարձնել վեր; } if (արդյունք <300) {վերադարձ ներքև; } if (արդյունք <550) {return LEFT; } if (արդյունք <850) {վերադարձ SELECT; } վերադարձնել NONE; }
Վերջում կոճակները կհանվեն: Ես լավ արդյունքներ եմ գրանցել 80 ms- ով: Երբ կոճակը կթողարկվի, այն կբարձրացնի համապատասխան դեպքում:
int oldState = ՈՉ ՄԻ; static void raiseEvents () {int buttonPressed = readButton (); ուշացում (80); oldState = buttonPressed; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); ընդմիջում; } դեպք ՁԱՅՆ ՝ {stateMachine-> raise_left (); ընդմիջում; } case ներքևում ՝ {stateMachine-> raise_down (); ընդմիջում; } գործ UP: {stateMachine-> raise_up (); ընդմիջում; } դեպքում RԻՇՏ. {stateMachine-> raise_right (); ընդմիջում; } կանխադրված ՝ {ընդմիջում; }}}}
Քայլ 4: HMI վերահսկում
Յուրաքանչյուր վիճակ օգտագործվում է ճաշացանկի մի մասի համար: Կան ենթատիրություններ, որտեղ կիրառումը, օրինակ ՝ վայրկյանաչափը, կկատարվի:
Այս դիզայնով ինտերֆեյսը կարող է հեշտությամբ ընդլայնվել: Լրացուցիչ ընտրացանկերը կարող են պարզապես ավելացվել ՝ օգտագործելով նույն դիզայնի օրինակը: Սենսորի արժեքը կարդալը և այն ցուցադրել ընտրացանկի չորրորդ տարրում, մեծ խնդիր չէ:
Առայժմ միայն ձախ և աջ են օգտագործվում որպես վերահսկիչ: Բայց վեր ու վար կարող է օգտագործվել նաև որպես հիմնական ընտրացանկում նավարկության ընդլայնում: Միայն ընտրելու կոճակը կօգտագործվի ընտրացանկի որոշակի տարր մուտքագրելու համար:
Քայլ 5: Կառավարեք պետությունները
Բռնակի վիճակի ընտրացանկը օգտագործվում է միայն որպես նավարկության լրացուցիչ օրինակ: Վերև, ներքև, աջ կամ ձախ օգտագործումը թույլ է տալիս անցում կատարել նահանգների միջև: Ընթացիկ վիճակը միշտ տպվելու է LCD էկրանին երկրորդ տողի վրա:
Քայլ 6: Վայրկյանաչափ
Վայրկյանաչափը բավականին պարզ է: Սկզբում ժմչփի արժեքը կվերակայվի: Timամաչափը կարող է գործարկվել `օգտագործելով ձախ կոճակը և միացնել` օգտագործելով ձախ և աջ: Վերև կամ ներքև օգտագործելը վերականգնում է ժամաչափը: Timամաչափը կարող է նաև զրոյի դրվել `ընտրելու կոճակը երկու անգամ օգտագործելով` դուրս գալով ընտրացանկից և մեկ անգամ ևս մուտքագրելով այն, քանի որ ժամաչափը զրոյի է դրվելու `սկզբնական վայրկյանաչափ մուտքագրելով:
Քայլ 7: Հակահարված
Համենայն դեպս, կա հաշվիչ, որն իրականացվել է: Հաշվիչի պետություն մտնելը վերականգնում է հաշվիչը: Այն կարող է սկսվել ՝ օգտագործելով ցանկացած կոճակ, բացառությամբ ընտրելու կոճակի: Այն իրականացվում է որպես պարզ վեր/վար հաշվիչ, որի արժեքը չի կարող փոքր լինել 0 -ից:
Քայլ 8: Սիմուլյացիա
Քայլ 9: Ստացեք օրինակը
IDE- ն կարող եք ներբեռնել այստեղ ՝ YAKINDU Statechart Tools
IDE- ն ներբեռնելուց հետո օրինակը գտնում եք File -> N ew -> Օրինակով
Այն անվճար է օգտագործել հոբբիստների համար, բայց կարող եք նաև օգտագործել 30 օր փորձաշրջան:
Խորհուրդ ենք տալիս:
Raspberry Pi DIY խելացի դռան զանգ, որը կարող է հայտնաբերել մարդկանց, մեքենաներ և այլն: 5 քայլ
Raspberry Pi DIY խելացի դռան զանգ, որը կարող է հայտնաբերել մարդկանց, մեքենաներ և այլն: Այս steampunk թեմայով դիզայնը ինտեգրվում է տնային օգնականի և մեր բազմ սենյակի աուդիո համակարգի հետ ՝ մեր DIY խելացի տան մնացածի հետ հաղորդակցվելու համար: Ավելի շուտ, քան Ring Doorbell (կամ Nest, կամ մյուս մրցակիցներից մեկը) Ես կառուցեցի մեր սեփական խելացի դռան դուռը
Arduino Otto ռոբոտը պետական մեքենայով. 4 քայլ
Arduino Otto ռոբոտը պետական մեքենայով. Նախագծի ակնարկ Այս նախագծում ես ուզում եմ ձեզ ցույց տալ Otto Robot- ի ծրագրավորման մի եղանակ, որը Arduino- ի վրա հիմնված DIY ռոբոտ է: Օգտագործելով YAKINDU Statechart Tools (անվճար ոչ առևտրային) մենք կարող ենք հեշտությամբ օգտագործել պետական մեքենաներ ՝ վարքագծի գրաֆիկական մոդելավորման համար
Պետական մեքենա Arduino- ում - հետիոտնային լուսացույց. 6 քայլ (նկարներով)
Պետական մեքենա Arduino- ում - Հետիոտնային լուսացույց. Բարև ձեզ: Ես ձեզ ցույց կտամ, թե ինչպես ծրագրավորել Arduino- ի հետիոտնային լուսացույց C ++ - ում `վերջնական վիճակի մեքենայով` օգտագործելով YAKINDU Statechart Tools- ը: Սա ցույց կտա պետական մեքենաների հզորությունը և կարող է օգտագործվել որպես նախագիծ հետագա
Շարժիչային մեքենաներ. 10 քայլ (նկարներով)
Շարժիչային մեքենաներ. Շարժիչային մեքենաները շարժուն, մեխանիզմների և ռոբոտաշինության խաղային ներածություն են տալիս: Կոմպլեկտները կազմված են լազերային նրբատախտակի մարմնից և զանգվածային պարզ մասերից, ինչպիսիք են դանդաղ շարժվող շարժիչներ, մարտկոցների պլաստիկ փաթեթներ և սլայդ անջատիչներ: Սովորողները կարող են փորձեր կատարել
Arduino PLC 32 I/O+պետական մեքենա+SCADA կամ HMI ՝ 8 քայլ
Arduino PLC 32 I/O+State Machine+SCADA կամ HMI. Արդուինոյով արդյունաբերական համակարգի ծրագրավորման, վերահսկման և վերահսկման բազմաթիվ եղանակներ