INHOUDSOPGAWE:

Staatsmasjien op Arduino - verkeerslig vir voetgangers: 6 stappe (met foto's)
Staatsmasjien op Arduino - verkeerslig vir voetgangers: 6 stappe (met foto's)

Video: Staatsmasjien op Arduino - verkeerslig vir voetgangers: 6 stappe (met foto's)

Video: Staatsmasjien op Arduino - verkeerslig vir voetgangers: 6 stappe (met foto's)
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Junie
Anonim
Staatsmasjien op Arduino - 'n voetgangerlig
Staatsmasjien op Arduino - 'n voetgangerlig

Hallo, ek gaan jou wys hoe om 'n voetgangerslig vir Arduino in C ++ te programmeer met 'n eindige staatsmasjien deur YAKINDU Statechart Tools te gebruik. Dit toon die krag van staatsmasjiene en kan as 'n bloudruk vir verdere projekte gebruik word.

Voorrade

U benodig slegs 'n Arduino, 'n paar drukknoppies, LED's, trui en weerstande.

Hardeware

  • 2x drukknop
  • 2x verkeersligte, of u kan LED's met 220 Ohm -weerstande gebruik
  • 2x 10k Ohm weerstande
  • Broodbord
  • Trui
  • Arduino Uno/Mega (of enige ander met ten minste 8 GPIO's)

Sagteware

  • YAKINDU Statechart Tools
  • Eclipse C ++ IDE vir Arduino

Stap 1: Definieer hoe dit werk: Verkeerslig vir voetgangers

Eers moet ons spesifiseer hoe die verkeerslig vir voetgangers moet werk. Ek het probeer om die opsommingspunte op te som:

  • Twee verkeersligte word gebruik - een vir die motors, die ander vir die voetgangers
  • Verkeerslig kan met 'n knoppie aangeskakel word
  • Voetgangers kan die straat oorsteek deur op 'n knoppie te druk
  • Verkeerslig wat afgeskakel word, word aangedui deur albei geel LED's te flikker
  • Nadat dit aangeskakel is, wag die verkeerslig 10 sekondes in die veilige modus
  • Na die veilige modus het motors altyd 'n groen fase totdat 'n voetganger met 'n versoek begin
  • Voetgangersversoek vir kruising word aangedui deur 'n wisselende geel LED

Daarbenewens is daar 'n paar tydsgebeurtenisse, afhangende van die manier waarop 'n verkeerslig werk.

Stap 2: Bou die stroombaan

Bou die stroombaan
Bou die stroombaan

Kom ons begin met die opstel van die kring. In my voorbeeld, soos u op die voorskoubeeld kan sien, het ek 'n Arduino Mega 2560 gebruik, maar elke ander Arduino met ten minste agt GPIO's behoort goed te wees. Boonop het ek 'n paar 5V verkeersligte by Amazon gekoop. Soek net vir Traffic Light Arduino. Andersins kan u eenvoudig ses verskillende LED's gebruik. Verder benodig u twee drukknoppies en twee 10k Ohm -weerstande.

Die drie linker -LED's word gebruik vir die motorverkeer en die drie regter -LED's vir die voetgangers, waar die geel 'n versoek kan aandui.

Stap 3: Skep die staatsmasjien

Die skep van die staatsmasjien
Die skep van die staatsmasjien

Soos u kan sien, is daar twee hooftoestande met saamgestelde lede - staat aan en af. U kan tussen beide state wissel deur die gebeurtenis onOff te gebruik, wat aan die AAN/UIT -knoppie gekoppel is. In die aanvanklike toestand, die af -toestand, begin albei geel LED's elke sekonde flikker. Sodra die verkeerslig aangeskakel is, begin dit in die veilige stad. Na 10 sekondes word die tipiese gedrag van die verkeersligte hanteer. Die rooi en geel LED sal in die StreetPrepare -toestand aangeskakel word en die verkeerslig word na nog 2 sekondes groen. Van nou af wag die staatsmasjien op die voetgangeraanvraag -geleentheid, wat aan die tweede knoppie gekoppel is. Nadat die geleentheid gestuur is, word die versoek aangedui deur die geel LED elke sekonde in die PedWating -toestand te skakel. 7 sekondes later word die verkeerslig eers na geel oorgeskakel en dan na rooi totdat die voetgangers die sein kry om in die voetgangergroen toestand te gaan. Hierna word die Voetgangerrooi geaktiveer en die siklus word herhaal. Dit kan slegs onderbreek word deur die verkeerslig weer af te skakel.

Stap 4: Gebruik die voorbeeld

Stap 5: Gegenereerde C ++ - kode

Die gegenereerde C ++-kode is 'n klassieke skakelaar om die logika van die staatsmasjien te hanteer. Dit is slegs 'n kodefragment van hoe dit lyk:

ongeldig TrafficLightCtrl:: runCycle () {clearOutEvents (); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_r1_StreetGreen_rea (breek; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (waar); breek; } verstek: breek; } clearInEvents (); }

Stap 6: Kry die voorbeeld

Die hele voorbeeld is gereed om saam te stel en uit te voer. Dit kom met YAKINDU Statechart Tools, wat gratis is vir nie-kommersiële gebruik. Nadat u dit afgelaai het, kan u die voorbeeld direk in die instrument invoer:

Lêer -> Nuut -> Voorbeeld -> Voorbeelde van YAKINDU Statechart -> Volgende -> Verkeerslig (C ++) vir Arduino

> HIER kan u YAKINDU Statechart Tools << aflaai

U kan begin met 'n proeftydperk van 30 dae. Daarna moet u 'n lisensie kry, wat gratis is vir nie-kommersiële gebruik!

Aanbeveel: