Experimente mit ELEXS und Palmtop
Tacho
Hier ist mein Versuch mit Hilfe eines Reed-Kontaks und dem Palmtop einen Tacho zu programmieren. Er basiert auf einem MTB-Reifen mit 2080 mm Umfang. Jedesmal wenn der Reed-Kontakt geschlossen wird, ist der Reifen einmal komplett abgerollt.
Code
program Tacho;
uses RS232, CRT, Dos;
procedure Beep;
begin
sound (4000);
delay (20);
nosound;
sound (6000);
delay (20);
nosound;
sound (4000);
delay (20);
nosound;
end;
procedure TachoTest;
var
Counter : LongInt;
OldHours : Word;
OldMinutes : Word;
OldSeconds : Word;
OldSecs100 : Word;
Hours : Word;
Minutes : Word;
Seconds : Word;
Secs100 : Word;
Speed : Real;
Speed2 : Real;
Speed3 : Real;
Time : Real;
OldTime : Real;
begin
ClrScr;
SetPIN (DTR);
ClearPIN (RTS);
Counter := 0;
Speed2 := 0.001;
Speed3 := 0.001;
GetTime (OldHours, OldMinutes, OldSeconds, OldSecs100);
repeat
if GetPIN (DSR) then begin
GetTime (Hours, Minutes, Seconds, Secs100);
inc (Counter);
SetPIN (RTS);
while GetPIN (DSR) do;
Time := Hours*360000 + Minutes*6000 + Seconds*100 + Secs100;
OldTime := OldHours*360000 + OldMinutes*6000 + OldSeconds*100 + OldSecs100;
Speed := 360000/(Time - OldTime + 0.001)*0.002080;
Speed3 := Speed2;
Speed2 := Speed;
OldHours := Hours;
OldMinutes := Minutes;
OldSeconds := Seconds;
OldSecs100 := Secs100;
gotoxy (1, 1);
writeln ('Zähler : ', Counter:4);
gotoxy (1, 2);
writeln ('Geschw. : ', (Speed + Speed2 + Speed3)/3:5:2, ' km/h');
end;
ClearPIN (RTS);
until Keypressed;
end;
procedure TachoMain;
var
OldHours : Word;
OldMinutes : Word;
OldSeconds : Word;
OldSecs100 : Word;
Hours : Word;
Minutes : Word;
Seconds : Word;
Secs100 : Word;
Speed : Real;
Speed2 : Real;
Speed3 : Real;
Time : Real;
OldTime : Real;
begin
ClrScr;
SetPIN (DTR);
ClearPIN (RTS);
Speed2 := 0.001;
Speed3 := 0.001;
GetTime (OldHours, OldMinutes, OldSeconds, OldSecs100);
repeat
if GetPIN (DSR) then begin
GetTime (Hours, Minutes, Seconds, Secs100);
SetPIN (RTS);
while GetPIN (DSR) do;
Time := Hours*360000+Minutes*6000+Seconds*100+Secs100;
OldTime := OldHours*360000+OldMinutes*6000+OldSeconds*100+OldSecs100;
Speed := 360000/(Time - OldTime + 0.001)*0.002080;
Speed3 := Speed2;
Speed2 := Speed;
OldHours := Hours;
OldMinutes := Minutes;
OldSeconds := Seconds;
OldSecs100 := Secs100;
gotoxy (1, 1);
writeln ('Geschw. : ', (Speed + Speed2 + Speed3)/3:8:2, ' km/h');
end;
ClearPIN (RTS);
until Keypressed;
end;
begin
TachoTest;
end.
Diese Seite wurde mit BrainStorm
generiert
Copyright ©
1991 - 2013 by Thomas Ell
|