Turinys:
- Prekės
- 1 žingsnis: apibrėžkite, kaip tai veikia: pėsčiųjų šviesoforas
- 2 žingsnis: sukurkite grandinę
- 3 žingsnis: sukurkite būsenos mašiną
- 4 žingsnis: vykdykite pavyzdį
- 5 veiksmas: sugeneruotas C ++ kodas
- 6 žingsnis: Gaukite pavyzdį
Video: Valstybinė mašina „Arduino“- pėsčiųjų šviesoforas: 6 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
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ę
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ą
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:
Triukšmo šviesoforas - „pasidaryk pats“3D spausdintas: 8 žingsniai (su nuotraukomis)
Triukšmo šviesoforas - „pasidaryk pats“3D spausdintas: visi žmonės nori dirbti tyliai, todėl svarbu turėti gerą darbo aplinką. Tyla lemia efektyvų darbą. Mes atlikome šį projektą, kad pasiektume šį pasiūlymą. Triukšmingą šviesoforą sudaro „šviesoforas“, valdantis dB
„Arduino Otto“robotas su valstybine mašina: 4 žingsniai
Šiame projekte noriu parodyti jums būdą programuoti „Otto Robot“, kuris yra „Arduino“sukurtas „pasidaryk pats“robotas. Naudodami „YAKINDU Statechart Tools“(nemokami nekomerciniams tikslams) galime lengvai naudoti būsenos mašinas, kad grafiškai modeliuotume elgesį
„Arduino“šviesoforas: 3 žingsniai (su nuotraukomis)
„Arduino“šviesoforas: šis nurodymas yra kilęs iš: „Arduino-Traffic-Light-Simulator“Aš padariau šiuos pakeitimus: skylės šviesos diodams yra mažesnės, 5 mm šviesos diodams (vietoj 10 mm šviesos diodų)
Valstybinė mašina ir daugiafunkcinis darbas „Arduino“su SPI plėtikliais: 3 žingsniai
Valstybinė mašina ir daugiafunkcinis darbas „Arduino“naudojant „SPI Expanders“: praėjusią savaitę aš prašiau sukurti fejerverkų bandymo sistemą su arduino. Gaisrams valdyti reikėjo apie 64 išėjimų. Vienas iš būdų tai padaryti yra naudoti IC plėtiklius. Taigi galimi 2 sprendimai:- I2C plėtiklis, tačiau kai reikia
„Arduino“šviesoforas: 8 žingsniai (su nuotraukomis)
„Arduino“šviesoforas: Šis projektas buvo sukurtas naudojant 5 mm šviesos diodus ir „Led“tvirtinimo įrangą „T1-3/4 Clear Standard“, kad būtų geriau vizualizuojama, taigi naudojant 3 šviesos diodus, skirtus atskirai parodyti raudonas, geltonas ir amp; Žalia atitinkamai