Turinys:

Valstybinė mašina „Arduino“- pėsčiųjų šviesoforas: 6 žingsniai (su nuotraukomis)
Valstybinė mašina „Arduino“- pėsčiųjų šviesoforas: 6 žingsniai (su nuotraukomis)

Video: Valstybinė mašina „Arduino“- pėsčiųjų šviesoforas: 6 žingsniai (su nuotraukomis)

Video: Valstybinė mašina „Arduino“- pėsčiųjų šviesoforas: 6 žingsniai (su nuotraukomis)
Video: „IT+“: dažniausi internetinio sukčiavimo būdai Lietuvoje 2024, Lapkritis
Anonim
Valstybinė mašina „Arduino“- pėsčiųjų šviesoforas
Valstybinė mašina „Arduino“- pėsčiųjų šviesoforas

Sveiki! Aš jums parodysiu, kaip naudojant „YAKINDU Statechart Tools“programuoti pėsčiųjų šviesoforą „Arduino“programai C ++ naudojant ribotą būseną. Tai parodys valstybinių mašinų galią ir gali būti naudojama kaip tolesnių projektų planas.

Prekės

Jums reikia tik „Arduino“, kai kurių mygtukų, šviesos diodų, trumpiklio ir rezistorių.

Techninė įranga

  • 2x mygtukas
  • 2x šviesoforai arba galite naudoti šviesos diodus su 220 omų rezistoriais
  • 2x 10k omų rezistoriai
  • Bandomoji Lenta
  • Megztinis
  • „Arduino Uno“/„Mega“(ar bet kuris kitas, turintis mažiausiai 8 GPIO)

Programinė įranga

  • „YAKINDU Statechart Tools“
  • „Eclipse C ++ IDE“, skirtas „Arduino“

1 žingsnis: apibrėžkite, kaip tai veikia: pėsčiųjų šviesoforas

Iš pradžių turime nurodyti, kaip turėtų veikti pėsčiųjų šviesoforas. Aš bandžiau apibendrinti taškus:

  • Naudojami du šviesoforai - vienas automobiliams, kitas - pėstiesiems
  • Šviesoforą galima įjungti mygtuku
  • Pėstysis gali paprašyti kirsti gatvę paspausdamas mygtuką
  • Išjungtą šviesoforo signalą rodo mirksi abu geltoni šviesos diodai
  • Po įjungimo šviesoforas saugiuoju režimu laukia 10 sekundžių
  • Po saugaus režimo automobiliai visada turi žalią fazę, kol pėsčiasis nepradės užklausos
  • Pėsčiųjų prašymą kirsti nurodo perjungiamas geltonas šviesos diodas

Be to, yra tam tikrų laiko įvykių, priklausomai nuo to, kaip veikia šviesoforas.

2 žingsnis: sukurkite grandinę

Sukurkite grandinę
Sukurkite grandinę

Pradėkime kurti grandinę. Mano pavyzdyje, kaip matote peržiūros paveikslėlyje, naudojau „Arduino Mega 2560“, tačiau kiekvienas kitas „Arduino“su mažiausiai aštuoniais GPIO turėtų būti tinkamas. Be to, „Amazon“nusipirkau 5 V šviesoforus. Tiesiog ieškokite šviesoforo „Arduino“. Priešingu atveju galite tiesiog naudoti šešis skirtingus šviesos diodus. Be to, jums reikia dviejų mygtukų ir dviejų 10 kΩ rezistorių.

Trys kairieji šviesos diodai naudojami automobilių eismui, o trys dešiniai - pėstiesiems, kur geltonas gali nurodyti užklausą.

3 žingsnis: sukurkite būsenos mašiną

Valstybės mašinos kūrimas
Valstybės mašinos kūrimas

Taigi, kaip matote, yra dvi pagrindinės būsenos su sudėtiniais nariais - būsena įjungta ir išjungta. Galite perjungti abi būsenas naudodami įvykį onOff, kuris yra prijungtas prie ON/OFF mygtuko. Pradinėje būsenoje, išjungtoje būsenoje, abu geltoni šviesos diodai pradeda mirksėti kiekvieną sekundę. Įjungus šviesoforą, jis prasideda saugiausioje vietoje. Po 10 sekundžių bus sutvarkytas tipiškas šviesoforo elgesys. Raudonas ir geltonas šviesos diodas bus įjungtas „StreetPrepare“būsenoje, o šviesoforas užsidegs žaliai dar po 2 sekundžių. Nuo šiol būsenos mašina laukia įvykio „pėstysis“, kuris prijungtas prie antrojo mygtuko. Išsiuntus įvykį, užklausa bus rodoma perjungiant geltoną šviesos diodą kas sekundę „PedWating“būsenoje. Po 7 sekundžių šviesoforas pirmiausia bus perjungtas į geltoną, o paskui į raudoną, kol pėstieji gaus signalą, kad reikia eiti į „Pėsčiųjų žalią“būseną. Po to įjungiamas „PedestrianRed“ir ciklas kartojasi. Tai galima nutraukti tik vėl išjungus šviesoforą.

4 žingsnis: vykdykite pavyzdį

5 veiksmas: sugeneruotas C ++ kodas

Sukurtas C ++ kodas yra klasikinis jungiklio dėklas, skirtas valdyti būsenos mašinos logiką. Tai tik kodo fragmentas, kaip jis atrodo:

void TrafficLightCtrl:: runCycle () {clearOutEvents (); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {jungiklis (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_re1_Street pertrauka; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (tiesa); pertrauka; } numatytasis: break; } clearInEvents (); }

6 žingsnis: Gaukite pavyzdį

Visas pavyzdys paruoštas kompiliuoti ir paleisti. Komplekte yra „YAKINDU Statechart Tools“, kuris yra nemokamas nekomerciniam naudojimui. Atsisiuntę pavyzdį galite importuoti tiesiai į įrankį:

Failas -> Naujas -> Pavyzdys -> YAKINDU būsenos diagramos pavyzdžiai -> Kitas -> „Arduino“šviesoforas (C ++)

> ČIA galite atsisiųsti „YAKINDU Statechart Tools“<<

Galite pradėti nuo 30 dienų bandomojo laikotarpio. Vėliau turite gauti licenciją, kuri yra nemokama nekomerciniam naudojimui!

Rekomenduojamas: