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 !