Anonymní profil BundasCZ – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil BundasCZ – Programujte.comAnonymní profil BundasCZ – Programujte.com

 

Příspěvky odeslané z IP adresy 90.179.8.–

BundasCZ
Delphi › Problém "běžící světlo&…
5. 10. 2009   #116756

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.

BundasCZ
Delphi › Problém "běžící světlo&…
2. 10. 2009   #116644

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 .

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý