Sitemap
Hinweis
GPS
Experimente mit ELEXS und Palmtop
Die Faszination alter programmierbarer Taschenrechnern
Die Entwicklungsgeschichte der programmierbaren Taschenrechner
Vorstellung: Privileg PR 56 D-NC
Vorstellung: Casio FX-602P
Über Spielautomaten und ihre Emulatoren
Age of Empires
Über den Zufall

Zurück zu:
Artikel
Experimente mit ELEXS und Palmtop
Weiter auf dieser Ebene:
VDiagram
Temperatur-Modul

1
Code
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