Taster Ampelanlage mit Mikrocontroller BASCOM?
Stellt euch eine ganz normal funktionierende Ampelkreuzung , es gibt 2 Taster für Fußgängerampel an der Nebenstraße, wo sich die Ampeln B befinden. Genau das muss ich irgendwie programmieren. Ich dachte es wäre einfach, aber man braucht vielleicht etwas mehr zu denken. Dabei müsste Fußgängerampel grün leuchten, wenn die eine entsprechende Ampel A an der Hauptstraße anfängt Grün zu werden ist, nicht während die Ampel A Grün ist und es darf leuchten wenn Ampel B rot ist. Ich hätte gedacht, wenn Taster betätigt wird, führt es folgende Programm aus:
Do
if AmpelA.grün = 1 then
FußAmpel.grün = 1
(FußAmpel.rot = 0)
elseif AmpelA.rot = 1 then
wait 'halt solange bis AmpelA.grün =1
keine Ahnung wie man das ausdrückt
FußAmpel.grün = 1
Vielleicht gibt es Fehler oder sowas. Habt ihr eine bessere Programmstruktur für mich? Danke im Voraus
1 Antwort
Mach dir erst mal eine Skizze, was in welcher Reihenfolge passieren soll. Am einfachsten geht das wenn du einzelne Kreise zeichnest in denen Die einzelnen Stati der Ampelanlage stehen und dazwischen Pfeile, an du du schreibst unter welcher Bedingung die Anlagen von dem einen in den anderen Status übergeht. In jeden Kreis schreibst du rein, welche Lampen leuchten sollen
https://www.lucidchart.com/pages/uml-state-machine-diagram
https://www.sciencedirect.com/topics/computer-science/state-machine-diagram
Dann nummerierst du die Stati durch und deklarierst eine Statusvariable als integer.
Die Programmierung ist dann ganz einfach:
Wenn Status = 1 dann alle Lampen wie im Kreis geschrieben ein- oder ausschalten.
usw. für alle anderen Stati
Dann kommt der Übergang
Wenn Status = 1 UND die Bedingung am Pfeil ist erfüllt, dann Status = 2
usw.
Das Ganze in einer Endlosschleife und fertig.
Da du in den einzelnen Stati jeweils ALLE Lampe als an oder aus bezeichnest, kann es auch bei Programmfehlern oder Glitches niemals dazu kommen, dass ungewollte Kombinationen (ein 'Grün' zu viel) auftreten können.