Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Ampelfunktion in nur in while schleife programmieren? (https://www.delphipraxis.net/71906-ampelfunktion-nur-while-schleife-programmieren.html)

Magier1 22. Jun 2006 11:36


Ampelfunktion in nur in while schleife programmieren?
 
Hi leute ich brauche mal eure hilfe, ich habe ein ampelprojekt das ich nur mit der while funktion programmieren muss d Beschreibung unten



1. die Ampel soll durch Drücken eines Buttons in die nächste Phase schalten

2. es darf kein Timer verwendet werden

3. ich muss das ganze in einer Warteschleife schreiben.



Das bedeutet: 1. Innere Schleife mit "Delay"

2. Phasen - Schleife

3. Repeat "Taste"

also insgesamt 3 Schleifen. die ineinander geschachtelt sind.

Ich musste am Anfang mit einem fertig bearbeitetem Programm rausfinden, bei welcher Bit Nr. die Ampel in die entsprechenden farben umschalten kann.

Das Schema schreibe ich euch kurz einmal auf:

Es soll in 8 Phasen ablaufen. Ich habe eine Platte mit einem Ampelsystem an den PC angeschlossen darauf ist auch ein Knopf.

Die Ampel ist am Anfang aus. Sobald ich auf den Knopf (von der Platte) drücke wird die Ampel des Fußgängers rot und die Autoampel grün. dies soll 5 sek. dauern. Danach ist die Fußgängerampel immer noch rot und die Autoampel gelb. Nach 2 Sek. wird dann die Autoampel auf rot umgeschalten und die Fußg.ampel ist immer noch auf rot. Nach 5 sek. wird dann die Fußgängerampel grün,dies dauert 10 sek. Danach schaltet die ampel wieder auf rot, dabei stehen 2 sekunden lang alle ampeln auf rot. Bis dann die Autoampel auf gelb umschaltet, dies dauert ebenfalls 2 sek. Darauf wird dann die Autoampel wieder grün. Dabei ist die Fußgängerampel natürlich auf rot. Nach der ganzen Sache fängt das ganze wieder von vorne an

Die Muhkuh 22. Jun 2006 12:18

Re: Ampelfunktion in nur in while schleife programmieren?
 
Hmm,

erwartest du jetzt von uns, dass wir das für dich machen?

Hast du schon mit etwas angefangen (Code)?

DP-Maintenance 22. Jun 2006 12:31

DP-Maintenance
 
Dieses Thema wurde von "JasonDX" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
CodeLib-Sparte? :gruebel: Na ja, knapp daneben ist auch vorbei, naechstes mal bitte etwas besser zielen :zwinker:

Magier1 22. Jun 2006 12:47

Re: Ampelfunktion in nur in while schleife programmieren?
 
ich weis net wie ich das machen soll das ist problem null plan brauch ehilfe

Die Muhkuh 22. Jun 2006 12:48

Re: Ampelfunktion in nur in while schleife programmieren?
 
Hi,

wie gesagt, werden wir nicht dein Programm schreiben bzw. deine Hausaufgabe erledigen.

Wenn du uns sagst, wo genau du nicht weiterkommst und Eigeninitiative zeigst, lässt sich dir viel besser helfen.

Magier1 22. Jun 2006 12:52

Re: Ampelfunktion in nur in while schleife programmieren?
 
ich weis nicht wie ich das in der while schleife machen muss mit den ampeln wäre gut wenn ihrm mir helfen könntet

freak4fun 22. Jun 2006 12:53

Re: Ampelfunktion in nur in while schleife programmieren?
 
Darf man Fragen warum ohne Timer?

Du könntest dir einen Timestamp holen und dann in der While-Schleife prüfen, ob die Zeit (2, 5 Sekunden) um ist und dann den Status der Ampeln abfragen, um zu sehen, welche Phase als nächstes kommt. Finde ich allerdings unschön.

MfG
freak

Magier1 22. Jun 2006 12:54

Re: Ampelfunktion in nur in while schleife programmieren?
 
oben hab ich ja mein problem schon geschildert das programm geht ja weiter das ich danach weioter programmieren werde aber dafür bvrauche ich diese funktion die oben beschrieben ist

Magier1 22. Jun 2006 12:55

Re: Ampelfunktion in nur in while schleife programmieren?
 
ich darf keinen timer verwenden alles soll mit while funktion erledigt werden

Magier1 22. Jun 2006 12:55

Re: Ampelfunktion in nur in while schleife programmieren?
 
heheh die lehrer halt ( ihr dürft keinen timer verwenden )

Die Muhkuh 22. Jun 2006 12:57

Re: Ampelfunktion in nur in while schleife programmieren?
 
Und wie schon gesagt, werden wir dir nicht diese Funktion schreiben, dass es deine (Haus-)Aufgabe ist und diese auch von dir gemacht werden muss.
Wir helfen dir, wenn wir sehen, dass du dich darum bemühst (sprich Eigeninitiative zeigst). Wenn du dir ein paar Überlegungen machst (wohin mit der Schleife, wie muss die Schleife aussehen, usw.) und du ein paar konkrete Fragen hast, dann lässt sich viel besser helfen.

Kurze Frage: Haben sie euch in der Schule keine Satzzeichen begebracht? :roll:

JWeis 22. Jun 2006 12:57

Re: Ampelfunktion in nur in while schleife programmieren?
 
Oder einfach alles nacheinander in der schleife abbarbeiten
quasi

Delphi-Quellcode:
 while {was weiß ich} do
begin
  delay(2500);
  ampel := Rot ;
  delay (2500);
  ampel := gelb
  delay(2500);
  ampel:= grün
end;

freak4fun 22. Jun 2006 13:00

Re: Ampelfunktion in nur in while schleife programmieren?
 
Zitat:

Zitat von Spider
Und wie schon gesagt, werden wir dir nicht diese Funktion schreiben, dass es deine (Haus-)Aufgabe ist und diese auch von dir gemacht werden muss.
Wir helfen dir, wenn wir sehen, dass du dich darum bemühst (sprich Eigeninitiative zeigst). Wenn du dir ein paar Überlegungen machst (wohin mit der Schleife, wie muss die Schleife aussehen, usw.) und du ein paar konkrete Fragen hast, dann lässt sich viel besser helfen.

Kurze Frage: Haben sie euch in der Schule keine Satzzeichen begebracht? :roll:

Jetzt bist in deinem Element. :stupid: Aber mach ruhig, ich ignorier dich einfach. :zwinker: Wenn ich das so sehen würde wie du, würde ich ihn einfach ignorieren.

@Magier: Ok, Lehrer sagt schon alles. :mrgreen: Hast du denn überhapt ne Vorstellung von dem Problem?

MfG
freak

sakura 22. Jun 2006 13:03

Re: Ampelfunktion in nur in while schleife programmieren?
 
@Magier1: In Zukunft, wenn Du zusätzliche Informationen hast, bevor jemand antwortet, nutze bitte den http://www.delphipraxis.net/template.../icon_edit.gif Button am ersten Post. Das liest sich für alle leichter und ist hier auch so üblich.

Danke,
...:cat:...

marabu 22. Jun 2006 13:12

Re: Ampelfunktion in nur in while schleife programmieren?
 
Hallo Magier1,

zuerst solltest du dein Problem genau analysieren. Welche Zustände kann jede Ampel einnehmen?

Code:
KfzAmpelZustaende = (kfzAus, kfzGruen, kfzGelb, kfzRot, kfzRotGelb);
FussgaengerAmpelZustaende = (fussAus, fussGruen, fussRot);
Acht Phasen kann ich nicht erkennen, sondern eher sechs:

Code:
Phase 1: 5s, kfzGruen, fussRot
Phase 2: 2s, kfzGelb, fussRot
Phase 3: 5s, kfzRot, fussRot
Phase 4: 10s, kfzRot, fussGruen
Phase 5: 2s, kfzRot, fussRot
Phase 6: 2s, kfzRotGelb, fussRot
Der Rest ist dann nur noch Einschalten, Ausschalten und eine Schleife:

Code:
Solange Eingeschaltet() do
begin
  Phase := NächstePhase(Phase);
  SchalteFahrzeugAmpel(Phase);
  SchalteFussgaengerAmpel(Phase);
  Warte(Dauer(Phase));
end;
Jetzt aber ran an die Hausaufgaben.

Grüße vom marabu

Magier1 22. Jun 2006 13:14

Re: Ampelfunktion in nur in while schleife programmieren?
 
mom ich hab hier etwas erstellt


Ampelleute Fussgängerampel Autoampel Dauer der Ampelleute

rot grün leer rot gelb grün

Phase 0 1 2 3 4 5 6 7

0 X unendlich $01
1 X X 5 sek $81
2 X X 2 sek $41
3 X X 5 sek $21
4 X X 10 sek
$22
5 X X 2 sek $21
6 X X 2 sek $21
7 X X 30 sek $01


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz