Zdravím a dík za odpověď, ale pochopil bych to kdyby to bylo při nejrychlejším cyklu, ale skoková změna se mění po 16. Vždy když přejdu a násobkem je 16 dojde ke změně. Ještě zkusím změřit čítačem frekvence při vyšším času. Vložil jsem soubor ale musí se přejmenovat na EXE.
Příspěvky odeslané z IP adresy 90.179.8.–
Zdravím všechny, potřeboval bych poradit. Bude to asi triviální, ale nějak jsem se zasekl.
Jedná se o to, že když změnšuji hodnotu Timeru (času), tak se cykl mění jen v hodnotách 16, 32, 48, pak už asi plynule. Potřebuji zkrátit (zrychlit) cykl , ale když ho zmenším pod 16, tak už se světlo běží stejně. Udělal jsem prográmek, který mě ukazuje cykl (bězící světlo) a je to i vidět že se již nezrychluje.
------------------------------
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Spin, ComCtrls;
type
TForm1 = class(TForm)
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
Timer1: TTimer;
Button1: TButton;
Label1: TLabel;
Shape5: TShape;
Button2: TButton;
Button3: TButton;
Label2: TLabel;
Timer2: TTimer;
UpDown1: TUpDown;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
Stav:integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var t:Integer;
begin
Stav:=0;
t:=UpDown1.Position;
Label1.Caption:= IntToStr(t);
end;
//------------ chod vpřed -----------------
procedure TForm1.Timer1Timer(Sender: TObject);
var t:Integer;
begin
//t:=spinedit1.value;
t:=UpDown1.Position;
Label1.Caption:= IntToStr(t);
case Stav of
0:begin
//Label1.Caption:=IntToStr (1);
val:=1;
Shape5.Brush.Color:=clBlack;
Shape2.Brush.Color:=clYellow;
Timer1.Interval:=t;
end;
1:begin
//Label1.Caption:=IntToStr(2);
val:=3;
Shape2.Brush.Color:=clBlack;
Shape3.Brush.Color:=clYellow;
Timer1.Interval:=t;
end;
2:begin
//Label1.Caption:=IntToStr(3);
val:=6;
Shape3.Brush.Color:=clBlack;
Shape4.Brush.Color:=clYellow;
Timer1.Interval:=t;
end;
3:begin
//Label1.Caption:=IntToStr(4);
val:=12;
Shape4.Brush.Color:=clBlack;
Shape5.Brush.Color:=clYellow;
Timer1.Interval:=t;
end;
end;
// asm
//mov dx,$378
//mov al,val
//out dx,al
// end;
Stav:=(Stav+1) mod 4;
end;
//------------ Tlačítko Vpřed ----------
procedure TForm1.Button1Click(Sender: TObject);
var a:Integer;
begin
Timer1.Enabled:=true;
Timer2.Enabled:=false;
end;
//------------ Tlačítko Stop ---------------
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=false;
Timer2.Enabled:=false;
Shape2.Brush.Color:=clBlack;
Shape3.Brush.Color:=clBlack;
Shape4.Brush.Color:=clBlack;
Shape5.Brush.Color:=clBlack;
Stav:=0;
end;
//------------ Tlačítko Vzad -------------------
procedure TForm1.Button3Click(Sender: TObject);
begin
Timer1.Enabled:=false;
Timer2.Enabled:=true;
end;
//------------ chod vzad -----------------
procedure TForm1.Timer2Timer(Sender: TObject);
var t:Integer;
begin
t:=UpDown1.Position;
case Stav of
0:begin
Label2.Caption:=IntToStr (1);
Shape2.Brush.Color:=clBlack;
Shape5.Brush.Color:=clYellow;
Timer2.Interval:=t;
end;
1:begin
Label2.Caption:=IntToStr(2);
Shape5.Brush.Color:=clBlack;
Shape4.Brush.Color:=clYellow;
Timer2.Interval:=t;
end;
2:begin
Label2.Caption:=IntToStr(3);
Shape4.Brush.Color:=clBlack;
Shape3.Brush.Color:=clYellow;
Timer2.Interval:=t;
end;
3:begin
Label2.Caption:=IntToStr(4);
Shape3.Brush.Color:=clBlack;
Shape2.Brush.Color:=clYellow;
Timer2.Interval:=t;
end;
end;
Stav:=(Stav+1) mod 4;
end;
end.
---------------------------------------------
Label1.Caption:= IntToStr(t); ----- tady zobrazuji hodnotu času abych věděl kolik je nastaneno
t:= spinedit1.value ----- byl původní záměr, ale ani toto nefungovalo podle představ
Label2.Caption:=IntToStr (1); ----- to abych věděl kde se nachází smyčka
t:=UpDown1.Position; ----- ovládání času timeru
Prodblém přetrvává i když jsem zakázal ovládání portu.
-------------------------------------------
Můžete na to prosím kouknout nebo vymyslet fungující řešení?? Pokud toto slustím je vidět markantní rozdíl v rychlosti(32-31, další skok je 16-15 ---- když měním hodnotu "t").
Dík za pomoc .