Sisällysluettelo:

Osavaltion kone Arduinolla - jalankulkijoiden liikennevalo: 6 vaihetta (kuvilla)
Osavaltion kone Arduinolla - jalankulkijoiden liikennevalo: 6 vaihetta (kuvilla)

Video: Osavaltion kone Arduinolla - jalankulkijoiden liikennevalo: 6 vaihetta (kuvilla)

Video: Osavaltion kone Arduinolla - jalankulkijoiden liikennevalo: 6 vaihetta (kuvilla)
Video: Всего Одна Маленькая Деталь Помогла Раскрыть Дело 2024, Marraskuu
Anonim
Valtion kone Arduinolla - jalankulkijoiden liikennevalo
Valtion kone Arduinolla - jalankulkijoiden liikennevalo

Hei! Aion näyttää sinulle, kuinka ohjelmoida jalankulkijoiden liikennevalot Arduinolle C ++: ssa äärellisellä tilakoneella käyttämällä YAKINDU Statechart Tools -työkalua. Tämä osoittaa valtion koneiden voiman ja sitä voidaan käyttää suunnitelmana tuleville projekteille.

Tarvikkeet

Tarvitset vain Arduinon, joitain painikkeita, LED -valoja, jumpperia ja vastuksia.

Laitteisto

  • 2x painike
  • 2x liikennevalot tai voit käyttää 220 ohmin vastuksen LED -valoja
  • 2x 10 k ohmin vastukset
  • Leipälauta
  • Jumpperi
  • Arduino Uno/Mega (tai mikä tahansa muu, joka sai vähintään 8 GPIO: ta)

Ohjelmisto

  • YAKINDU Statechart Tools
  • Eclipse C ++ IDE Arduinolle

Vaihe 1: Määritä, miten se toimii: Jalankulkijoiden liikennevalot

Aluksi meidän on määriteltävä, miten jalankulkijoiden liikennevalojen pitäisi toimia. Yritin tiivistää luetelmakohdat:

  • Käytössä on kaksi liikennevaloa - toinen autoille, toinen jalankulkijoille
  • Liikennevalot voidaan kytkeä päälle painikkeella
  • Jalankulkija voi pyytää kadun ylittämistä painamalla painiketta
  • Liikennevalojen sammuttaminen ilmaistaan, kun molemmat keltaiset LED -valot vilkkuvat
  • Sytyttämisen jälkeen liikennevalo odottaa 10 sekuntia vikasietotilassa
  • Turvatilan jälkeen autoissa on aina vihreä vaihe, kunnes jalankulkija käynnistää pyynnön
  • Jalankulkijoiden ylityspyyntö näkyy keltaisella LED -valolla

Lisäksi liikennevalojen toiminnasta riippuen on joitakin aikatapahtumia.

Vaihe 2: Rakenna piiri

Rakenna piiri
Rakenna piiri

Aloitetaan piirin asettaminen. Esimerkissäni, kuten voit nähdä esikatselukuvassa, olen käyttänyt Arduino Mega 2560: ta, mutta jokaisen muun Arduinon, jossa on vähintään kahdeksan GPIO: ta, pitäisi olla kunnossa. Lisäksi olen ostanut joitain 5V liikennevaloja Amazonista. Etsi vain liikennevalot Arduino. Muussa tapauksessa voit käyttää kuutta eri LEDiä. Lisäksi tarvitset kaksi painonappia ja kaksi 10 k ohmin vastusta.

Kolme vasenta LEDiä käytetään autoliikenteeseen ja kolme oikeaa LED -valoa jalankulkijoihin, joissa keltainen voi ilmaista pyynnön.

Vaihe 3: Tilakoneen luominen

Tilakoneen luominen
Tilakoneen luominen

Joten, kuten näette, on kaksi päätilaa, joissa on yhdistettyjä jäseniä - tila päällä ja tila pois. Voit vaihtaa molempien tilojen välillä käyttämällä ONOff -tapahtumaa, joka on kytketty ON/OFF -painikkeeseen. Alkutilassa, pois päältä, molemmat keltaiset LED -valot alkavat vilkkua joka sekunti. Kun liikennevalo on kytketty päälle, se alkaa turvallisessa tilassa. 10 sekunnin kuluttua liikennevalojen tyypillinen käyttäytyminen käsitellään. Punainen ja keltainen LED -valo syttyy StreetPrepare -tilassa ja liikennevalo muuttuu vihreäksi vielä 2 sekunnin kuluttua. Tästä lähtien tilakone odottaa jalankulkijan pyynnön tapahtumaa, joka on kytketty toiseen painikkeeseen. Tapahtuman lähettämisen jälkeen pyyntö ilmaistaan vaihtamalla keltaista LEDiä joka sekunti PedWating -tilassa. 7 sekuntia myöhemmin liikennevalot muuttuvat ensin keltaisiksi ja sitten punaisiksi, kunnes jalankulkijat saavat signaalin mennä jalankulkijoiden vihreä -tilaan. Tämän jälkeen PedestrianRed aktivoituu ja sykli toistuu. Tämä voidaan keskeyttää vain sammuttamalla liikennevalo uudelleen.

Vaihe 4: Esimerkin suorittaminen

Vaihe 5: Luotu C ++ -koodi

Luotu C ++ -koodi on klassinen kytkinkotelo tilakoneen logiikan käsittelemiseksi. Tämä on vain koodinpätkä miltä se näyttää:

mitätön TrafficLightCtrl:: runCycle () {clearOutEvents (); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {kytkin (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_reen_reach tauko; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (tosi); tauko; } oletus: break; } clearInEvents (); }

Vaihe 6: Hae esimerkki

Koko esimerkki on valmis koottavaksi ja suoritettavaksi. Sen mukana tulee YAKINDU Statechart Tools, joka on ilmainen ei-kaupalliseen käyttöön. Lataamisen jälkeen voit tuoda esimerkin suoraan työkaluun:

Tiedosto -> Uusi -> Esimerkki -> YAKINDU Statechart Esimerkit -> Seuraava -> Liikennevalot (C ++) Arduinolle

> TÄSTÄ voit ladata YAKINDU Statechart Tools <<

Voit aloittaa 30 päivän kokeilujaksolla. Jälkeenpäin sinun on hankittava lisenssi, joka on ilmainen ei-kaupalliseen käyttöön!

Suositeltava: