Hallo!!! Ich habe ein Problem mit einer Ampelsteuerung. Ich muss die Zeitschaltung mit einem Timer überarbeiten. Lasst euch bitte nicht von der Zeitschleife am Ende irritieren. Gegeben war eine Ampelsteuerung, die von einem Fußgängerübergang per Taster unterbrochen werden konnte. Die Zeit zwischen der Umschaltung der Ampel wird per Zeitschleife(s.Ende) genommen. Meine Aufgabe war, die Zeitschleife mit einem Timer zu ersetzen. Hier verfoglt mich das Problem. Ich weiß nicht genau wie ich den Timer einbauen soll. Sollte ich nach jeder Rot-Gelb-Grün Phase(jedes mal, wenn die Ampel umspringt) den Timer neu starten? Kann mir da bitte jmd helfen? Ich komm da gerade echt nicht weiter. Dankeschön!!!! mfg Manuel
ohne das ich mir bisher den gegebenen quellcode durchgelesen habe (ich kann nur die basics von avr-assembler) würde ich eine ampel so lösen: 1. Immer autos Grün 2. Wenn taste gedrückt wird Timer starten 3. Dann immer vergleichen wie groß der Zählwert vom Timer ist und im richtigen zeitlichen abstand immer die Ampeln umschalten bis die Autos wieder grün haben und dann den Timer stopen.
Also ich würde bei einem Timer0 Überlauf Interrupt ein zuvor definiert Bitvariable (z.B. Flag) setzen. Den Timer würde ich auch eine Basiszeit auf 1s einstellen (sofern das möglich ist). Als Unterprogramme würde ich meine Ampelzustände definieren. Im Hauptprogramm kann ich dann mein flag auswerten: In Worten: Wenn flag = 1 dann, incr X flag = 0 ende Mit incr kann ich beliebig Zeiten im Sekundentakt erzeugen. Wenn X einen bestimmten wert annimmt rufe ich dann einfach den entsprechenden Ampelzustand als Unterprogramm auf und springe wieder ins Hauptprogramm.
Esetze doch die komplette Ampel mit einem Zebrastreifen. Die Kreuzung am besten durch einen Kreisverkehr ersetzen. Funktioniert wartungsfrei.
@Unbekannter: Und was machst du mit den Starenkästen, die blitzen, wenn jemand 1 Sekunde nach Rot-Umschaltung über die Kreuzung fährt? Durch was ersetzt du die? Man muss schon alle Unbekannte einer Gleichung berücksichtigen ;)
Wie wärs mit echten Starenkästen, also Vogelhäuschen halt? Aber um wieder ernst zu werden: Kann zwar selbst nicht helfen, da ich keine Ahnung hab von AVRs und Assambler, aber ich denke es wäre sehr hilfreich zu wissen was für eine Ampelschaltung das ist. Nur nen Fussgängerüberweg, ne große Kreuzung, ne dumme einmündung?
Erstmal ein riesen Dankeschön, dass ihr mir antwortet und auchdankean die tollen Kommentaren, leider sit das aber ein Schulprojekt, um genauer zu werden eine GFS(wem das was sagt). Ich habe versucht, im Internet ein Bild von der Steuerung aufzutreiben, habe aber leider nichts gefunden. Ihr könnt euch die als einfache Kreuzung zweier Strassen vorsellen, an der an einer Seite einen Fußgängerüberweg läuft. Deswegen wird es schwierig werden, den Autos imer grün zu geben. Ich muss also die Ampeln nach Zeit steuern. Der Fußgängerüberweg wird mit einem Taster auf grün geschaltet, also per Interrupt. Die unterschiedlichen Phasen müsste ich dann immer mit dem Timer0 abstoppen, dann die nächste Phase laufen lassen, dann wieder den Timer0 starten und stoppen. Geht das dann so?
So würde ich es machen: Mit dem Timer bastelt man sich eine Zeitbasis, die die Grundlage für alle Ampelphasen bildet (z.B. 1s). Jetzt hat man eine Variable, die man auf die Dauer einer Ampelphase setzt (z.B. 30 für 30 Sekunden). Diese Variable wird beim Timer-Interrupt herunter gezählt. Im Hauptprogramm wird der Fußgänger-Taster und die Variable auf 0 abgefragt. Die Ampelphasen werden gezählt, und die Zeiten in einem Array "vorgehalten". Sobald eine Phase (Variable = 0) beendet ist, wird der Phasenzähler um 1 erhöht, und sofern noch nicht das Ende der Tabelle ereicht wurde die neue Phasendauer übertragen. Da die Fußgängerampel nur dann grün werden darf, wenn der Querverkehr rot hat, muß man die Kombination überprüfen und gegebenenfalls (Fußgängerbedarfsmeldung) die Phasen entsprechend ändern (Dauer, grün für Fußgänger). Bei einer simplen Kreuzung kann man sich aber die Fußgänger-Taste sparen, sofern beide Strasse gleichberechtigt sind, da dann die Fußgänger-Ampel parallel zur entsprechenden Autoampel arbeiten kann. Sind die Strassen nicht gleichberechtigt, bietet sich noch eine Induktionsschleife für die Strasse mit der geringeren Priorität an. @Starenkästen: Wenn keine Ampel vorhanden ist, werden die wohl auch kaum gebraucht. Ausserdem sind sie in der Aufgabe nicht gefordert, und wenn dann könne sie auch auf die Geschwindigkeit der Fahrzeuge reagieren...
schau mal unter Ampelmodell: http://www.goblack.de/desy/mc8051chip/uebung/index.html sehr gut gemacht und ausführlich beschrieben. Ampelsteuerungen scheinen immer noch beliebt zu sein. Damals auf dem TG haben wir das auch machen müssen
Mist falsche URL die ist richtig: http://www.goblack.de/desy/mc8051chip/uebung/modelle/ampel/ampeli45.html
@rahul: der der fußgängerüberweg bekommt erst dann grün, wenn der taster gedrückt wurde! Die Logik habe ich mir allerdings auch schon überlegt, da ich die gleiche Steuerung mit Zeitschleife bereits habe. Diese müsste ich dann nur noch mit dem Timer ersetzen. Bin mir da aber ein wenig unsicher @kai: das freut mich, dass ich nicht der einzige bin ^^ Ampelsteuerungen werden wohl auch immer wieder bearbeitet werden
@kai: da hab ich doch glatt was vergessen. Den Link hatte ich auch schon gesehen, allerdings hat meine Ampel keine Abbiegespur, also ein wenig simpler ^^
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.