Thema: Delphi Ampelkreuzung

Einzelnen Beitrag anzeigen

oldmax

Registriert seit: 27. Apr 2006
Ort: Gieboldehausen
167 Beiträge
 
#15

Re: Ampelkreuzung

  Alt 10. Apr 2008, 08:36
Hi
Für die Ampelsteuerung brauchst du exakt 1 Timer. Ja nach Ampel ( Kreuzung mit/Ohne Abbieger, Fußgänger) hast du feste Schritte
Z. einfache Kreuzung
1.Ausgang Quer Grün, Kreuz Rot
2. Quer Gelb, Kreuz Rot
3. Quer Rot, Kreuz Rot
4. Quer Rot, Kreuz Rot-Gelb
5. Quer Rot, Kreuz Grün
6. Quer Rot, Kreuz Gelb
7. Quer Rot, Kreuz Rot
8. Quer Rot-Gelb, Kreuz Rot
9.=1.
Im Ampel-Timer incrementierst du einen Schrittzähler. Wenn du nun hinter die Schritte deine Schrittzeit einträgst, kannst du in deiner Auswertung dem Timerintervall diese Zeit zuweisen und er wird diese Zeit bis zum nächsten Schritt ruhe geben
Am einfachsten baust du für jede Ampelphase eine eigene Procedure. Im Timerevent rufst du diese dann aus einer Case - Anweisung heraus auf
im Timer
Case Schritt of 1: Gruen_Rot; dann die Procedure
Delphi-Quellcode:
Procedure TMyForm.GruenRot;
Begin
  Timer.Intervall:=2000; // 2 Sek z.B. ist nächste Pause
  Ampel_1_QuerRot.Brush.Color:=ClBlack; // bedenke, Die Lampen in der Ampel
  Ampel_1_QuerGelb.Brush.Color:=ClBlack; // gehen aus, sie ändern nicht die Farbe
  Ampel_1_QuerGruen.Brush.Color:=ClLime;
  Ampel_2_QuerRot.Brush.Color:=ClBlack; // 2. Ampel , gleiche Richtung
  Ampel_2_QuerGelb.Brush.Color:=ClBlack;
  Ampel_2_QuerGruen.Brush.Color:=ClLime;
  Ampel_1_KreuzRot.Brush.Color:=ClRed; // 1. Ampel Kreuzverkehr
  Ampel_1_KreuzGelb.Brush.Color:=ClBlack;
  Ampel_1_KreuzGruen.Brush.Color:=ClBlack;
  Ampel_2_KreuzRot.Brush.Color:=ClRed; // 2. Ampel Kreuzverkehr
  Ampel_2_KreuzGelb.Brush.Color:=ClBlack;
  Ampel_2_KreuzGruen.Brush.Color:=ClBlack;
end;
So kanst du die einzelnen Schritte besser übesehen.
Mit Timern für Fußgaänger und 2 für Fahrzeuge ( langsam und schnell sowie ein bischen Mathematik ) bist du schon auf 5 Timer geschrumpft und dürftest eine relativ dynamische Ansicht erreichen.
Gruß oldmax
Noch ist mein Rechner mir zu Diensten.... ansonsten habe ich die Macht ihn zu vernichten !
  Mit Zitat antworten Zitat