Мазмуну:

Мамлекеттик машина Arduino - жөө светофор: 6 кадам (сүрөттөр менен)
Мамлекеттик машина Arduino - жөө светофор: 6 кадам (сүрөттөр менен)

Video: Мамлекеттик машина Arduino - жөө светофор: 6 кадам (сүрөттөр менен)

Video: Мамлекеттик машина Arduino - жөө светофор: 6 кадам (сүрөттөр менен)
Video: КАК СДЕЛАТЬ ARDUINO РОБОТ МАШИНКУ КОТОРЫЙ ОБХОДИТ ПРЕПЯТСТВИЯ 2024, Ноябрь
Anonim
Ардуино боюнча мамлекеттик машина - жөө светофор
Ардуино боюнча мамлекеттик машина - жөө светофор

Саламатсызбы! Мен сизге YAKINDU Statechart Tools аркылуу Arduino үчүн C ++ тилинде светофорду чектүү мамлекеттик машина менен кантип программалоону көрсөтөм. Бул мамлекеттик машиналардын күчүн көрсөтөт жана кийинки долбоорлор үчүн план катары колдонулушу мүмкүн.

Жабдуулар

Сизге Arduino, кээ бир баскычтар, LED, Jumper жана резисторлор гана керек.

Аппараттык

  • 2x баскыч
  • 2x светофорлор же 220 Ом резисторлору бар светодиоддорду колдонсоңуз болот
  • 2x 10k Ohm резисторлору
  • Breadboard
  • Jumper
  • Arduino Uno/Mega (же жок дегенде 8 GPIOго ээ болгон башка)

Программалык камсыздоо

  • YAKINDU Statechart Tools
  • Arduino үчүн Eclipse C ++ IDE

1 -кадам: Анын кантип иштээрин аныктаңыз: жөө светофор

Алгач жөө адамдар үчүн светофор кандай иштеши керек экенин такташ керек. Мен пункттарды жалпылоого аракет кылдым:

  • Эки жол чырак колдонулат - бири унаалар үчүн, экинчиси жөө адамдар үчүн
  • Светофор баскычтын жардамы менен күйгүзүлүшү мүмкүн
  • Жөө адам баскычты басуу менен көчөдөн өтүүнү сурана алат
  • Өчүрүлгөн светофор эки сары светодиоддун тең жануусу менен көрсөтүлөт
  • Светофор күйгүзүлгөндөн кийин коопсуз режимде 10 секунд күтөт
  • Коопсуз режимден кийин, жөө адам өтүнүчтү билдиргенге чейин, унаалар дайыма жашыл фазага ээ
  • Жөө жүргүнчүлөрдүн өтмөктөн өтүү өтүнүчү сары LEDди алмаштыруу менен көрсөтүлөт

Кошумчалай кетсек, жол чырактын иштөө ыкмасына жараша кээ бир убакыт окуялары бар.

2 -кадам: Районду куруу

Circuit куруу
Circuit куруу

Келгиле, схеманы орнотууну баштайлы. Менин мисалымда, алдын ала көрүү сүрөтүндө көрүнүп тургандай, мен Arduino Mega 2560 колдондум, бирок ар бир башка Arduino кеминде сегиз GPIO менен жакшы болушу керек. Кошумча катары, мен Амазонкадан 5В светофор сатып алдым. Жөн эле Traffic Light Arduino издеңиз. Болбосо, сиз жөн эле алты түрдүү LED колдоно аласыз. Мындан тышкары, сизге эки баскыч жана эки 10k Ohm резистору керек.

Үч сол светодиод автоунаа кыймылы үчүн жана жөө жүргүнчүлөр үчүн үч оң LED колдонулат, мында сары суранычты билдире алат.

3 -кадам: Мамлекеттик машинаны түзүү

Мамлекеттик машинаны түзүү
Мамлекеттик машинаны түзүү

Демек, сиз көрүп тургандай, курамдык мүчөлөрү бар эки негизги мамлекет бар - штат күйүк жана өчүк. ON/OFF баскычына туташкан onOff окуясын колдонуу менен эки абалдын ортосунда которула аласыз. Баштапкы абалда, өчүрүү абалында, эки сары LED тең секунд сайын жарк этип баштайт. Светофор күйгүзүлгөндөн кийин ал коопсуз жайдан башталат. 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_StreetGreen_react (тыныгуу; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); тыныгуу; } демейки: break; } clearInEvents (); }

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

Бардык мисал түзүүгө жана иштетүүгө даяр. Бул коммерциялык эмес колдонуу үчүн акысыз YAKINDU Statechart Tools менен келет. Жүктөп алгандан кийин, мисалды түздөн -түз куралдан импорттой аласыз:

Файл -> Жаңы -> Мисал -> YAKINDU Statechart мисалдары -> Кийинки -> Светофор (C ++) Arduino үчүн

> БУЛ жерден сиз YAKINDU Statechart Tools << жүктөп алсаңыз болот

Сиз 30 күндүк сыноо менен баштасаңыз болот. Андан кийин, сиз коммерциялык эмес колдонуу үчүн бекер болгон лицензияны алышыңыз керек!

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