Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-23 12:52
Hallo! Ich zeige Ihnen, wie Sie mit YAKINDU Statechart Tools eine Fußgängerampel für Arduino in C++ mit einer endlichen Zustandsmaschine programmieren. Dies wird die Leistungsfähigkeit von State Machines demonstrieren und kann als Blaupause für weitere Projekte verwendet werden.
Lieferungen
Sie benötigen nur einen Arduino, einige Taster, LEDs, Jumper und Widerstände.
Hardware
- 2x Taster
- 2x Ampeln oder Sie können LEDs mit 220 Ohm Widerständen verwenden
- 2x 10k Ohm Widerstände
- Steckbrett
- Jumper
- Arduino Uno/Mega (oder ein anderes, das mindestens 8 GPIOs hat)
Software
- YAKINDU Statechart-Tools
- Eclipse C++ IDE für Arduino
Schritt 1: Definieren Sie, wie es funktioniert: Fußgängerampel
Zunächst müssen wir festlegen, wie die Fußgängerampel funktionieren soll. Ich habe versucht, die Stichpunkte zusammenzufassen:
- Zwei Ampeln werden verwendet - eine für die Autos, die andere für die Fußgänger
- Ampel kann per Taster eingeschaltet werden
- Fußgänger können per Knopfdruck das Überqueren der Straße anfordern
- Eine ausgeschaltete Ampel wird durch Blinken der beiden gelben LEDs angezeigt
- Nach dem Einschalten wartet die Ampel 10 Sekunden im abgesicherten Modus
- Nach dem abgesicherten Modus haben Autos immer eine Grünphase, bis ein Fußgänger eine Anfrage startet
- Fußgängerüberfahrtsaufforderung wird durch Umschalten der gelben LED angezeigt
Darüber hinaus gibt es einige Zeitereignisse, die von der Funktionsweise einer Ampel abhängen.
Schritt 2: Bauen Sie die Schaltung auf
Beginnen wir mit dem Aufbau der Schaltung. In meinem Beispiel habe ich, wie Sie auf dem Vorschaubild sehen können, einen Arduino Mega 2560 verwendet, aber jeder andere Arduino mit mindestens acht GPIOs sollte in Ordnung sein. Außerdem habe ich bei Amazon einige 5V-Ampeln gekauft. Suchen Sie einfach nach Ampel Arduino. Ansonsten können Sie einfach sechs verschiedene LEDs verwenden. Außerdem benötigen Sie zwei Taster und zwei 10k Ohm Widerstände.
Die drei linken LEDs werden für den Autoverkehr verwendet und die drei rechten LEDs für die Fußgänger, wobei die gelbe eine Aufforderung anzeigen kann.
Schritt 3: Erstellen der Zustandsmaschine
Wie Sie sehen können, gibt es also zwei Hauptzustände mit zusammengesetzten Elementen - Zustand ein und Zustand aus. Sie können zwischen beiden Zuständen umschalten, indem Sie das Ereignis onOff verwenden, das mit der ON/OFF-Taste verdrahtet ist. Im Ausgangszustand, dem Aus-Zustand, beginnen beide gelben LEDs im Sekundentakt zu blinken. Nach dem Einschalten der Ampel startet sie im Safestate. Nach 10 Sekunden wird das typische Verhalten der Ampel gehandhabt. Die rote und gelbe LED leuchten im StreetPrepare-Zustand und die Ampel wird nach weiteren 2 Sekunden grün. Von nun an wartet der Zustandsautomat auf das Ereignis FußgängerRequest, das mit dem zweiten Button verbunden ist. Nach dem Senden des Ereignisses wird die Anfrage angezeigt, indem im PedWating-Zustand jede Sekunde die gelbe LED umgeschaltet wird. 7 Sekunden später wird die Ampel zuerst auf Gelb und dann auf Rot geschaltet, bis die Fußgänger im Zustand FußgängerGrün das Signal bekommen. Danach wird das PedestrianRed aktiviert und der Zyklus wiederholt sich. Dieser kann nur unterbrochen werden, indem die Ampel wieder ausgeschaltet wird.
Schritt 4: Ausführen des Beispiels
Schritt 5: Generierter C++-Code
Der generierte C++-Code ist ein klassischer Switch-Case, um die Logik der Zustandsmaschine zu handhaben. Dies ist nur ein Code-Snippet, wie es aussieht:
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); brechen; } case main_region_on_r1_PedWaiting_r1_waitOn: { main_region_on_r1_PedWaiting_r1_waitOn_react(true); brechen; } Standard: Pause; } clearInEvents(); }
Schritt 6: Holen Sie sich das Beispiel
Das gesamte Beispiel ist bereit zum Kompilieren und Ausführen. Es wird mit YAKINDU Statechart Tools geliefert, die für die nicht-kommerzielle Nutzung kostenlos sind. Nach dem Download können Sie das Beispiel direkt in das Tool importieren:
Datei -> Neu -> Beispiel -> YAKINDU Statechart Beispiele -> Weiter -> Ampel (C++) für Arduino
> HIER können Sie die YAKINDU Statechart Tools herunterladen <<
Sie können mit einer 30-tägigen Testversion beginnen. Danach müssen Sie eine Lizenz erwerben, die für die nicht-kommerzielle Nutzung kostenlos ist!
Empfohlen:
So installieren Sie ein Solid-State-Boot-Laufwerk: 9 Schritte
So installieren Sie ein Solid-State-Boot-Laufwerk: Mit dem Fortschritt der Technologie verlagert sich jetzt alles in den Bereich der Computer und digitalen Medien. Mit dieser Verschiebung sehen wir, dass immer mehr Menschen in Bildungsbereiche zu diesen Themen wie Informatik oder
Arduino Game Controller mit Lichtern, die auf Ihr Unity-Spiel reagieren
Arduino Game Controller mit Lichtern, die auf Ihr Unity-Spiel reagieren:: Zuerst habe ich dieses Ding in Wort geschrieben. Dies ist das erste Mal, dass ich instructable verwende, also wenn ich sage: Schreiben Sie Code wie so wissen, dass ich mich auf das Bild oben in diesem Schritt beziehe. In diesem Projekt verwende ich 2 Arduinos, um 2 separate Bits auszuführen
Wir stellen vor: 'Deodorino' - das Infrarot-gesteuerte Arduino in einem leeren Deodorant-Stick. Klicken Sie auf das 1. Foto: 7 Schritte
Wir stellen vor: 'Deodorino' - das Infrarot-gesteuerte Arduino in einem leeren Deodorant-Stick. Klicken Sie auf das 1. Foto: Jetzt zum Detail
Wie zeichne ich einen Computerbildschirm auf einem Mac auf?: 7 Schritte
Wie zeichne ich den Computerbildschirm auf dem Mac auf?: Wie zeichne ich den Bildschirm auf dem Mac auf? Wollten Sie schon immer etwas aufzeichnen, was auf Ihrem Computer oder Telefon passiert? Vielleicht sehen Sie sich ein Video an und möchten einen Clip aufnehmen; Vielleicht versuchst du jemandem zu zeigen, wie man etwas macht, und ein Video würde es schaffen
Stativ-Kopf auf Einbeinstativ-Kopf Adapter auf 43 Cent. Wörtlich.: 6 Schritte
Stativ-Kopf auf Einbeinstativ-Kopf Adapter auf 43 Cent. Wörtlich.: Kurze Version meiner Geschichte: Ich habe eine Kamera gekauft, sie kam mit einem Bündel an Zubehör, darunter ein Samsonite 1100 Stativ. Ich habe ein Einbeinstativ. Ich möchte sehr bald Fotos mit einem Schwenkkopf auf dem Einbeinstativ machen und hatte keine 40 $, um ein L