|
Eckart Modrow
Max-Planck-Gymnasium
Theaterplatz 10
37073 Göttingen
emodrow@astro.physik.uni-goettingen.de
sowie eine Unit, die für
die Digitalausgänge dieser Karte die folgenden Befehle bereitstellt:
procedure an(n: integer); | schaltet den Digitalausgang n ein (1<n<8) |
procedure aus(n: integer); | schaltet den Digitalausgang n aus (1<n<8) |
procedure warte(sec: single) | lässt das Programm sec Sekunden pausieren, aber weiter auf Ereignisse reagieren |
procedure verbinde(n: integer; a: tApplication); | Damit beim Warten die Anwendung nicht blockiert wird, muss einmal diese Methode aufgerufen werden. Sie verbindet die USB-Karte Nr. n mit der laufenden Application. |
Im Anhang sind die erforderlichen Delphi-Units angegeben.
(verplant wurden Doppelstunden)
Stunde | Inhalt | Kommentar |
|
Nutzung
der USB-Karte unter Delphi
(Die
eingebauten LEDs vor den Digitalausgängen werden als Ampelersatz benutzt)
|
(Die
Robotergruppe arbeitet selbstständig!)
System
erklären, Delphi starten, einen Button einfügen, Ereignisbehandlung
mit UNIT-Befehlen (an, aus, ...)
|
|
Schaltverhalten der Ampeln auf der Kreuzung programmieren | zwei Ampeln einführen, Schaltverhalten den Zeitliniendiagrammen entnehmen, Ausgänge festlegen, ggf. Sonderphasen für Straßenbahnen, ... |
|
Bau der Ampeln und Verdrahtung | Ampeln bauen, Leitungen zusammenlöten und verlegen, Steuerung testen, Absprachen mit der Robotergruppe über Signale für die Straßenbahnen, ... |
uses USB_Experimentierplatine;
{$R *.DFM}
procedure
TForm1.FormCreate(Sender: TObject);
begin verbinde(0,Application) end;
procedure
TForm1.bAnClick(Sender: TObject);
begin an(1) end;
end.
begin
an(1);
warte(1);
aus(1)
end;
begin an(1) end;
procedure TForm1.bAusClick(Sender: TObject);
begin aus(1) end;
begin
an(1); warte(3); //drei Sekunden
rot
an(2); warte(1); //eine Sekunde
rotgelb
aus(1);
aus(2);
an(3); warte(3); //drei Sekunden
grün
aus(3);
an(2); warte(1); //eine Sekunde
gelb
aus(2);
end;
begin
while true do //die Ampel läuft
"ewig"
begin
an(1); warte(3);
an(2); warte(1);
aus(1);
aus(2);
an(3); warte(3);
aus(3);
an(2); warte(1);
aus(2);
end
end;
procedure TForm1.bAusClick(Sender: TObject);
begin
ampelLaeuft := false
end;
procedure TForm1.bAnClick(Sender: TObject);
begin
ampelLaeuft := true;
while ampelLaeuft do //die Ampel kann
geschaltet werden
begin
an(1); warte(3);
an(2); warte(1);
aus(1);
aus(2);
an(3); warte(3);
aus(3);
an(2); warte(1);
aus(2);
end
end;
|