Inhoudsopgave:
- Benodigdheden
- Stap 1: Definieer hoe het werkt: voetgangersverkeerslicht
- Stap 2: Bouw het circuit
- Stap 3: De staatsmachine maken
- Stap 4: Het voorbeeld uitvoeren
- Stap 5: Gegenereerde C++-code
- Stap 6: Krijg het voorbeeld
Video: State Machine op Arduino - een voetgangersverkeerslicht - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Hallo daar! Ik ga je laten zien hoe je een voetgangersverkeerslicht voor Arduino in C ++ programmeert met een eindige-toestandsmachine met behulp van YAKINDU Statechart Tools. Dit zal de kracht van staatsmachines demonstreren en kan worden gebruikt als blauwdruk voor verdere projecten.
Benodigdheden
Je hebt alleen een Arduino, enkele drukknoppen, LED's, Jumper en weerstanden nodig.
Hardware
- 2x Drukknop
- 2x Verkeerslichten of u kunt LED's gebruiken met 220 Ohm weerstanden
- 2x 10k Ohm weerstanden
- Breadboard
- Trui
- Arduino Uno/Mega (of een andere, die minstens 8 GPIO's heeft)
Software
- YAKINDU Statechart-tools
- Eclipse C++ IDE voor Arduino
Stap 1: Definieer hoe het werkt: voetgangersverkeerslicht
Eerst moeten we specificeren hoe het voetgangersverkeerslicht moet werken. Ik heb geprobeerd de punten samen te vatten:
- Er worden twee verkeerslichten gebruikt - een voor de auto's, de andere voor de voetgangers
- Verkeerslicht kan worden ingeschakeld met behulp van een knop
- Voetganger kan vragen om de straat over te steken door op een knop te drukken
- Uitgeschakeld verkeerslicht wordt aangegeven door het knipperen van beide gele LED's
- Na het inschakelen wacht het verkeerslicht 10 seconden in de veilige modus
- Na de veilige modus hebben auto's altijd een groene fase totdat een voetganger een verzoek start
- Voetgangersverzoek om over te steken wordt aangegeven door het omschakelen van gele LED
Bovendien zijn er enkele tijdgebeurtenissen, afhankelijk van de manier waarop een verkeerslicht werkt.
Stap 2: Bouw het circuit
Laten we beginnen met het opzetten van het circuit. In mijn voorbeeld, zoals je kunt zien op de voorbeeldafbeelding, heb ik een Arduino Mega 2560 gebruikt, maar elke andere Arduino met ten minste acht GPIO's zou in orde moeten zijn. Daarnaast heb ik een aantal 5V verkeerslichten gekocht bij Amazon. Zoek gewoon naar Traffic Light Arduino. Anders kunt u gewoon zes verschillende LED's gebruiken. Verder heb je twee drukknoppen en twee 10k Ohm weerstanden nodig.
De drie linker leds worden gebruikt voor het autoverkeer en de drie rechter leds voor de voetgangers, waarbij de gele een verzoek kan aangeven.
Stap 3: De staatsmachine maken
Dus, zoals je kunt zien, zijn er twee hoofdstaten met samengestelde leden - staat aan en staat uit. U kunt tussen beide statussen schakelen door de gebeurtenis aanUit te gebruiken, die is aangesloten op de AAN/UIT-knop. In de begintoestand, de uit-toestand, beginnen beide gele LED's elke seconde te knipperen. Zodra het verkeerslicht is ingeschakeld, begint het in de Safestate. Na 10 seconden wordt het typische gedrag van de verkeerslichten afgehandeld. De rode en gele LED gaan branden in de StreetPrepare-status en het stoplicht wordt na nog 2 seconden groen. Vanaf nu wacht de statusmachine op de gebeurtenis voetgangersRequest, die is aangesloten op de tweede knop. Na het verzenden van de gebeurtenis wordt het verzoek aangegeven door elke seconde de gele LED in de PedWating-status te schakelen. 7 seconden later wordt het verkeerslicht eerst op geel en vervolgens op rood geschakeld totdat de voetgangers het signaal krijgen om in de voetgangersgroene staat te gaan. Hierna wordt PedestrianRed geactiveerd en herhaalt de cyclus zich. Dit kan alleen worden onderbroken door het verkeerslicht weer uit te schakelen.
Stap 4: Het voorbeeld uitvoeren
Stap 5: Gegenereerde C++-code
De gegenereerde C++-code is een klassieke schakelkast om de logica van de toestandsmachine aan te kunnen. Dit is slechts een codefragment van hoe het eruit ziet:
void TrafficLightCtrl::runCycle(){ clearOutEvents(); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition++) {switch (stateConfVector[stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_r1_StreetGreen_react (true); pauze; } case main_region_on_r1_PedWaiting_r1_waitOn: { main_region_on_r1_PedWaiting_r1_waitOn_react (true); pauze; } standaard: breken; } clearInEvents(); }
Stap 6: Krijg het voorbeeld
Het hele voorbeeld is klaar om te compileren en uit te voeren. Het wordt geleverd met YAKINDU Statechart Tools, dat gratis is voor niet-commercieel gebruik. Na het downloaden kunt u het voorbeeld direct in de tool importeren:
Bestand -> Nieuw -> Voorbeeld -> YAKINDU Statechart-voorbeelden -> Volgende -> Verkeerslicht (C++) voor Arduino
> HIER kunt u YAKINDU Statechart Tools downloaden <<
U kunt beginnen met een proefperiode van 30 dagen. Daarna moet u een licentie krijgen, die gratis is voor niet-commercieel gebruik!
Aanbevolen:
Ubidots + ESP32- Predictive Machine Monitoring: 10 stappen
Ubidots + ESP32- Voorspellende machinebewaking: voorspellende analyse van machinetrillingen en -temperaturen door e-mailgebeurtenissen en een record van trillingen in Google-blad te maken met behulp van Ubidots. Voorspellend onderhoud en bewaking van machinegezondheid De opkomst van nieuwe technologie, d.w.z. het internet der dingen, zware ind
Maak je eigen solid-state relais: 4 stappen (met afbeeldingen)
Maak je eigen solid-state relais: in dit project zullen we kijken naar solid-state relais, ontdekken hoe ze werken en wanneer ze te gebruiken en uiteindelijk onze eigen DIY Solid State Relay maken. Laten we beginnen
Arduino Noise Machine: 4 stappen
Arduino Noise Machine: ik vond een kleine luidspreker tijdens het afbreken van een oude pc. voor recycling en dacht dat ik zou zien hoe het klonk met de Arduino Tone () -functie. Ik begon met een 10Ω potentiometer om de toonhoogte te regelen en begon wat lawaai te maken. De Tone()-functie
Solid State Tesla-spoelen en hoe ze werken: 9 stappen
Solid State Tesla-spoelen en hoe ze werken: Hoogspanningselektriciteit kan GEVAARLIJK zijn, neem te allen tijde de juiste veiligheidsmaatregelen wanneer u met Tesla-spoelen of een ander hoogspanningsapparaat werkt, dus speel op veilig of speel niet. Tesla-spoelen zijn een transformator die werkt op zelfresonerende oscillato
De taak die de Arduino-machine geeft (ook bekend als: je eigen Bop-it maken!): 5 stappen
The Task Giving Arduino Machine (aka: Making Your Own Bop-it!): Voor de studie die ik momenteel volg kreeg ik de opdracht om iets te maken met een Arduino. Ik had voor mezelf een standaarduitrusting van materialen van de school gekregen en iets bedacht dat daar omheen zou werken, met minimale buitenmat