Բովանդակություն:

Arduino HMI օգտագործելով պետական մեքենաներ. 9 քայլ
Arduino HMI օգտագործելով պետական մեքենաներ. 9 քայլ

Video: Arduino HMI օգտագործելով պետական մեքենաներ. 9 քայլ

Video: Arduino HMI օգտագործելով պետական մեքենաներ. 9 քայլ
Video: #14 OP320 HMI Modbus Communication | Outseal Arduino PLC 2024, Նոյեմբեր
Anonim
Arduino HMI օգտագործելով պետական մեքենաներ
Arduino HMI օգտագործելով պետական մեքենաներ

Այս Ուղեցույցում ես ձեզ ցույց կտամ, թե ինչպես օգտագործել 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: Սարքավորումը

Image
Image

LCD ստեղնաշարի վահանը պարզապես կարելի է միացնել Arduino- ին: Այն ունի 16x2 LCD էկրան և լրացուցիչ ստացել է վեց սեղմիչ:

  • Ձախ
  • Ճիշտ
  • Վերև
  • Ներքև
  • Ընտրել
  • (Վերակայել)

Ակնհայտ է, որ դրանցից հինգը կարող են օգտագործվել: Բանալիները միացված են լարման բաժանարարին և հայտնաբերվում են Pin A0- ի միջոցով `կախված լարումից: Ես օգտագործել եմ ծրագրակազմի ապամոնտաժումը `դրանք ճիշտ հայտնաբերելու համար:

Քայլ 2: Սահմանեք, թե ինչպես պետք է այն աշխատի

HMI Control
HMI Control

Դիմումը պետք է կարողանա անել երեք բան.

  1. Այստեղ ես ուզում եմ օգտագործել կոճակները ՝ նավարկելու հինգ վիճակների միջև ՝ վերև, միջին, ներքև, ձախ և աջ
  2. Stopամացույցաչափ Մի պարզ վայրկյանաչափ, որը կարելի է սկսել, կանգնեցնել և վերակայել: Այն պետք է ավելացվի յուրաքանչյուր 100 միլիվայրկյանում
  3. Երրորդ մասը պարունակում է պարզ վեր/վար հաշվիչ: Այն պետք է կարողանա հաշվել դրական թվեր, և այն պետք է վերակայվի

Ակտիվ ընտրացանկը (կամ վիճակը) կցուցադրվի 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 օր փորձաշրջան:

Խորհուրդ ենք տալիս: