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

Պետական մեքենա Arduino- ում - հետիոտնային լուսացույց. 6 քայլ (նկարներով)
Պետական մեքենա Arduino- ում - հետիոտնային լուսացույց. 6 քայլ (նկարներով)

Video: Պետական մեքենա Arduino- ում - հետիոտնային լուսացույց. 6 քայլ (նկարներով)

Video: Պետական մեքենա Arduino- ում - հետիոտնային լուսացույց. 6 քայլ (նկարներով)
Video: ՀՀ-ում մի բացառիկ վիճակ է, երբ պետական մեքենան կարող է ուղղակի ջարդվել. Տեր-Պետրոսյան. ILur.am 2024, Հուլիսի
Anonim
State Machine on Arduino - հետիոտնային լուսացույց
State Machine on Arduino - հետիոտնային լուսացույց

Բարև ձեզ: Ես ձեզ ցույց կտամ, թե ինչպես կարելի է ծրագրավորել Arduino- ի հետիոտնային լուսացույց C ++ - ում `վերջնական վիճակի մեքենայով` օգտագործելով YAKINDU Statechart Tools- ը: Սա ցույց կտա պետական մեքենաների հզորությունը և կարող է օգտագործվել որպես նախագիծ հետագա նախագծերի համար:

Պարագաներ

Ձեզ անհրաժեշտ է միայն Arduino, մի քանի կոճակ, LED- ներ, Jumper և դիմադրիչներ:

Սարքավորումներ

  • 2 անգամ սեղմիչ կոճակ
  • 2x լուսացույցներ կամ կարող եք օգտագործել LEDs ՝ 220 Օմ դիմադրիչներով
  • 2x 10k Օմ դիմադրիչներ
  • Breadboard
  • Ցատկող
  • Arduino Uno/Mega (կամ որևէ այլ, որը ստացել է առնվազն 8 GPIO)

Ծրագրային ապահովում

  • YAKINDU Statechart գործիքներ
  • Eclipse C ++ IDE Arduino- ի համար

Քայլ 1. Սահմանեք, թե ինչպես է այն աշխատում. Հետիոտնային լուսացույց

Սկզբում մենք պետք է նշենք, թե ինչպես պետք է աշխատի հետիոտնի լուսացույցը: Փորձեցի ամփոփել հիմնական կետերը.

  • Օգտագործվում է երկու լուսացույց ՝ մեկը մեքենաների համար, մյուսը ՝ հետիոտների համար
  • Լուսացույցը կարելի է միացնել ՝ օգտագործելով կոճակը
  • Հետիոտնը կարող է պահանջել հատել փողոցը ՝ սեղմելով կոճակը
  • Անջատված լուսացույցը նշվում է երկու դեղին LED- ները թարթելով
  • Միացնելուց հետո լուսաֆորը սպասում է 10 վայրկյան անվտանգ ռեժիմում
  • Անվտանգ ռեժիմից հետո մեքենաները միշտ ունենում են կանաչ փուլ, մինչև հետիոտնը խնդրանք չսկսի
  • Անցման համար հետիոտների խնդրանքը նշվում է դեղին LED լուսադիոդի միացման միջոցով

Բացի այդ, կան որոշ ժամանակային իրադարձություններ ՝ կախված լուսացույցի աշխատանքի եղանակից:

Քայլ 2: Կառուցեք շրջանը

Կառուցեք շրջանագիծը
Կառուցեք շրջանագիծը

Եկեք սկսենք սխեմայի կարգավորումը: Իմ օրինակում, ինչպես տեսնում եք նախադիտման պատկերի վրա, ես օգտագործել եմ Arduino Mega 2560 -ը, բայց առնվազն ութ GPIO- ով ամեն մյուս Arduino- ն պետք է լավ լինի: Բացի այդ, ես գնել եմ 5V լուսացույցներ Amazon- ում: Պարզապես որոնեք լուսացույց Arduino- ն: Հակառակ դեպքում, դուք կարող եք պարզապես օգտագործել վեց տարբեր LED: Բացի այդ, ձեզ հարկավոր է երկու կոճակ և երկու 10k Ohm ռեզիստոր:

Երեք ձախ լուսադիոդներն օգտագործվում են մեքենայի երթևեկի համար, իսկ երեք աջը ՝ հետիոտների համար, որտեղ դեղինը կարող է ցույց տալ խնդրանքը:

Քայլ 3. Պետական մեքենայի ստեղծում

Ստեղծելով պետական մեքենա
Ստեղծելով պետական մեքենա

Այսպիսով, ինչպես տեսնում եք, կան երկու հիմնական պետություններ `կազմված անդամներով` միացված և անջատված վիճակ: Դուք կարող եք անցնել երկու վիճակների ՝ օգտագործելով իրադարձությունը onOff, որը միացված է ON/OFF կոճակին: Նախնական վիճակում ՝ անջատված վիճակում, երկու դեղին LED- ները սկսում են թարթել ամեն վայրկյան: Լուսացույցը միացնելուց հետո այն սկսվում է Safestate- ում: 10 վայրկյան հետո լուսացույցների բնորոշ վարքագիծը կկարգավորվի: StreetPrepare նահանգում կարմիր և դեղին լուսադիոդային լույսը կմիացվի, և լուսացույցը կանաչ կդառնա ևս 2 վայրկյանից հետո: Այսուհետ պետական մեքենան սպասում է հետիոտնային պահանջի միջոցառմանը, որը միացված է երկրորդ կոճակին: Միջոցառումը ուղարկելուց հետո հարցումը նշվելու է ՝ PedWating վիճակում ամեն վայրկյան դեղին LED- ն միացնելով: 7 վայրկյան անց լուսացույցը նախ կփոխվի դեղին, այնուհետև կարմիրի, մինչև հետիոտները կստանան ազդանշան ՝ հետիոտնային կանաչ վիճակի անցնելու համար: Դրանից հետո PedestrianRed- ը ակտիվանում է, և ցիկլը կրկնվում է: Սա կարող է ընդհատվել միայն լուսացույցը կրկին անջատելով:

Քայլ 4: Գործարկեք օրինակը

Քայլ 5. Ստեղծված C ++ ծածկագիր

Ստեղծված C ++ ծածկագիրը դասական անջատիչ գործ է `պետական մեքենայի տրամաբանությունը կարգավորելու համար: Սա պարզապես կոդի հատված է, թե ինչպես է այն թվում.

անվավեր TrafficLightCtrl:: runCycle () {clearOutEvents (); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition])) {case main_region_on_r1_StreetGreen: {main_region_on_r1_rere_rere_rere_rere_rere_rere_rere_gre1_re1_Street_rre_RE1_Street_rre_re1_Street_RERE_Gre1_Street_Street_REnt_RERE_Gre1_Street_RERE_Gre1_Street_Street_Rre_Gre1_Street_Street_RERE_Gre1_Street_RERE_Gre1_Street_Street_Street_StreetGreen: ընդմիջում; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (ճշմարիտ); ընդմիջում; } կանխադրված ՝ ընդմիջում; } clearInEvents (); }

Քայլ 6: Ստացեք օրինակը

Ամբողջ օրինակը պատրաստ է հավաքել և գործարկել: Այն գալիս է YAKINDU Statechart Tools- ով, որն անվճար է ոչ առևտրային օգտագործման համար: Ներբեռնելուց հետո կարող եք օրինակը ներմուծել անմիջապես գործիքի մեջ.

Ֆայլ -> Նոր -> Օրինակ -> YAKINDU Statechart Օրինակներ -> Հաջորդ -> Լուսացույց (C ++) Arduino- ի համար

> ԱՅՍՏԵ կարող եք ներբեռնել YAKINDU Statechart Tools <<

Դուք կարող եք սկսել 30 օր փորձաշրջանով: Դրանից հետո դուք պետք է լիցենզիա ստանաք, որն անվճար է ոչ առևտրային օգտագործման համար:

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