Satura rādītājs:

Valsts mašīna uz Arduino - gājēju luksofors: 6 soļi (ar attēliem)
Valsts mašīna uz Arduino - gājēju luksofors: 6 soļi (ar attēliem)

Video: Valsts mašīna uz Arduino - gājēju luksofors: 6 soļi (ar attēliem)

Video: Valsts mašīna uz Arduino - gājēju luksofors: 6 soļi (ar attēliem)
Video: Топ 5 самоделок на ардуино 2024, Jūlijs
Anonim
Valsts mašīna uz Arduino - gājēju luksofors
Valsts mašīna uz Arduino - gājēju luksofors

Sveiki! Es jums parādīšu, kā programmēt gājēju luksoforu Arduino programmā C ++ ar ierobežota stāvokļa mašīnu, izmantojot YAKINDU Statechart Tools. Tas parādīs valsts mašīnu spēku un to var izmantot kā plānu turpmākajiem projektiem.

Piegādes

Jums ir nepieciešams tikai Arduino, dažas pogas, gaismas diodes, džemperis un rezistori.

Aparatūra

  • 2x spiedpoga
  • 2x luksofori vai varat izmantot gaismas diodes ar 220 omu rezistoriem
  • 2x 10k Ohm rezistori
  • Maizes dēlis
  • Džemperis
  • Arduino Uno/Mega (vai jebkura cita, kurai ir vismaz 8 GPIO)

Programmatūra

  • YAKINDU stāvokļa diagrammas rīki
  • Eclipse C ++ IDE Arduino

1. darbība: definējiet, kā tas darbojas: gājēju luksofors

Sākumā mums jāprecizē, kā jādarbojas gājēju luksoforam. Esmu mēģinājis apkopot aizzīmes:

  • Tiek izmantoti divi luksofori - viens automašīnām, otrs - gājējiem
  • Luksoforu var ieslēgt, izmantojot pogu
  • Gājējs var pieprasīt šķērsot ielu, nospiežot pogu
  • Par izslēgtu luksoforu norāda mirgojošas abas dzeltenās gaismas diodes
  • Pēc ieslēgšanas luksofors drošajā režīmā gaida 10 sekundes
  • Pēc drošā režīma automašīnām vienmēr ir zaļā fāze, līdz gājējs sāk pieprasījumu
  • Gājēju pieprasījumu šķērsot norāda dzeltenā gaismas diode

Turklāt ir daži laika notikumi atkarībā no luksofora darbības veida.

2. solis: izveidojiet ķēdi

Izveidojiet ķēdi
Izveidojiet ķēdi

Sāksim iestatīt ķēdi. Manā piemērā, kā redzat priekšskatījuma attēlā, esmu izmantojis Arduino Mega 2560, bet visiem pārējiem Arduino ar vismaz astoņiem GPIO vajadzētu būt kārtībā. Turklāt Amazon esmu nopircis dažus 5V luksoforus. Vienkārši meklējiet luksoforu Arduino. Pretējā gadījumā varat vienkārši izmantot sešas dažādas gaismas diodes. Turklāt jums ir nepieciešamas divas spiedpogas un divi 10 kΩ rezistori.

Trīs kreisās gaismas diodes tiek izmantotas automašīnu satiksmei, bet trīs labās gaismas diodes - gājējiem, kur dzeltenais var norādīt pieprasījumu.

3. darbība: valsts iekārtas izveide

Valsts mašīnas izveide
Valsts mašīnas izveide

Tātad, kā redzat, ir divi galvenie stāvokļi ar saliktiem dalībniekiem - stāvoklis ieslēgts un izslēgts. Jūs varat pārslēgties starp abiem stāvokļiem, izmantojot notikumu onOff, kas ir pieslēgts ON/OFF pogai. Sākotnējā stāvoklī, izslēgts, abas dzeltenās gaismas diodes sāk mirgot katru sekundi. Kad luksofors ir ieslēgts, tas sākas drošākajā stāvoklī. Pēc 10 sekundēm tiks apstrādāta luksoforu raksturīgā uzvedība. Sarkanā un dzeltenā gaismas diode tiks ieslēgta StreetPrepare stāvoklī, un luksofors iedegsies zaļā krāsā vēl pēc 2 sekundēm. Turpmāk štata mašīna gaida notikumu footrianRequest, kas ir pieslēgts otrajai pogai. Pēc notikuma nosūtīšanas pieprasījums tiks norādīts, katru sekundi PedWating stāvoklī pārslēdzot dzelteno gaismas diodi. Pēc 7 sekundēm luksofors vispirms tiks pārslēgts uz dzeltenu un pēc tam uz sarkanu, līdz gājēji saņems signālu, lai dotos ceļā Gājējs zaļš. Pēc tam tiek aktivizēts PedestrianRed un cikls atkārtojas. To var pārtraukt, tikai vēlreiz izslēdzot luksoforu.

4. darbība. Piemēra palaišana

5. darbība: ģenerēts C ++ kods

Ģenerētais C ++ kods ir klasisks slēdža korpuss, lai apstrādātu stāvokļa mašīnas loģiku. Šis ir tikai koda fragments, kā tas izskatās:

void TrafficLightCtrl:: runCycle () {clearOutEvents (); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {slēdzis (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_reen_re; pārtraukums; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); pārtraukums; } noklusējums: pārtraukums; } clearInEvents (); }

6. darbība: iegūstiet piemēru

Viss piemērs ir gatavs apkopošanai un palaišanai. Tas ir aprīkots ar YAKINDU Statechart Tools, kas ir bezmaksas nekomerciālai lietošanai. Pēc lejupielādes piemēru varat importēt tieši rīkā:

Fails -> Jauns -> Piemērs -> YAKINDU valsts diagrammas piemēri -> Tālāk -> Luksofors (C ++) Arduino

> ŠEIT varat lejupielādēt YAKINDU Statechart Tools <<

Jūs varat sākt ar 30 dienu izmēģinājumu. Pēc tam jums ir jāsaņem licence, kas ir bezmaksas nekomerciālai lietošanai!

Ieteicams: