|
Eckart Modrow
Max-Planck-Gymnasium
Theaterplatz 10
37073 Göttingen
emodrow@astro.physik.uni-goettingen.de
(verplant wurden Doppelstunden)
Stunde
|
Inhalt
|
Kommentar
|
|
Roboter nach LEGO-Anleitung
zusammenbauen, erste Programmierversuche nach Anleitung
|
(Der/die Unterrichtende
ist mit der anderen Gruppe beschäftigt!) Eingesetzt werden die Videos
des Mindstorms-Systems.
|
|
„Schienen“ aus Leisten
mit Begrenzungen an den Enden bauen, Lämpchen einbauen
|
Roboter an Schienen anpassen,
Lichtsensor einbauen, Bohrung für Lampe, Lampe einbauen
|
|
Programmierung der Roboter
|
Jetzt arbeitet die andere
Gruppe selbstständig, der/die Unterrichtende ist für diese Gruppe
frei!
|
Der Lichtsensor sollte allerdings nur dann reagieren, wenn der Roboter
an einer Startposition hält. Damit sollte er vom ZUSTAND des Roboters
abhängen. Wir speichern den aktuellen Zustand der Motoren in einer
VARIABLEN Leistung mit den Werten
0: Roboter steht
1: Roboter fährt
Diese wird von den Sensoren je nach Zustand des Roboters eingestellt.
Nach dieser Unterrichtsphase sollen die Schülerinnen und Schüler dieser Teilgruppe mindestens Kenntnisse zu folgenden Themen besitzen:
type
TForm1 = class(TForm)
bStart: TButton;
bStop: TButton;
procedure FormCreate(Sender:
TObject);
procedure bStartClick(Sender:
TObject);
procedure bStopClick(Sender:
TObject);
end;
var Form1: TForm1;
implementation
uses USB_Experimentierplatine;
{$R *.DFM}
var
amLaufen: boolean;
procedure
TForm1.FormCreate(Sender: TObject);
begin Verbinde(0,Application)
end;
procedure
TForm1.bStartClick(Sender: TObject);
begin
amLaufen := true;
while amLaufen do
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.bStopClick(Sender:
TObject);
begin
amLaufen := false;
end;
end.
unit USB_Experimentierplatine;
interface
uses Dialogs,SysUtils,Forms;
procedure
verbinde(n: integer; a: tApplication);
procedure an(n: integer);
procedure aus(n: integer);
procedure warte(sec: single);
implementation
var
Application: tApplication;
function
OpenDevice(CardAddress: Longint): Longint; stdcall; external 'K8055d.dll';
procedure CloseDevice; stdcall;
external 'K8055d.dll';
procedure ClearDigitalChannel(Channel:
Longint); stdcall; external 'K8055d.dll';
procedure ClearAllDigital; stdcall;
external 'K8055d.dll';
procedure SetDigitalChannel(Channel:
Longint); stdcall; external 'K8055d.dll';
procedure verbinde(n: integer; A: tApplication);
var
h: integer;
begin
h := openDevice(n);
Application := A;
case h of
0..3: showMessage('Plantine
' + inttostr(h)+' verbunden!');
-1: showMessage('Karte
nicht vorhanden!');
end;
end;
procedure an(n: integer);
begin SetDigitalChannel(n) end;
procedure aus(n: integer);
begin ClearDigitalChannel(n)
end;
procedure warte(sec: single);
var h,zeit,jetzt: longint;
begin
zeit := round(1000*sec);
jetzt := DateTimeToTimeStamp(getTime).time;
repeat
Application.processMessages
until DateTimeToTimeStamp(getTime).time-jetzt>zeit
end;
initialization
finalization
clearAllDigital;
CloseDevice;
end.
|