Suche Home Einstellungen Anmelden Hilfe  

Zur Ordnungswirkung fundamentaler Ideen der Informatik am Beispiel der theoretischen Schulinformatik

Beispiel 1: Ampelkreuzung mit "Straßenbahn"


Eckart Modrow

Max-Planck-Gymnasium
Theaterplatz 10
37073 Göttingen
emodrow@astro.physik.uni-goettingen.de

 

 

Teilgruppe Strassenbahnbau

Die Gruppe verfügt über zwei LEGO-Roboter sowie Computer mit der Mindstorms-Software Version 2.0.


(verplant wurden Doppelstunden)
 
Stunde
Inhalt
Kommentar
4
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.
5
„Schienen“ aus Leisten mit Begrenzungen an den Enden bauen, Lämpchen einbauen
Roboter an Schienen anpassen, Lichtsensor einbauen, Bohrung für Lampe, Lampe einbauen
6-7
Programmierung der Roboter 
Jetzt arbeitet die andere Gruppe selbstständig, der/die Unterrichtende ist für diese Gruppe frei!

zur 4. Doppelstunde:

zur 5. Doppelstunde:




zur 6./7. Doppelstunde: Roboter programmieren








 
 






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:

Erweiterungen/Differenzierungsmöglichkeiten:

Anhang:

unit uDigital;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
 

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.

Benutzer: Gast • Besitzer: schwill • Last modified: