Tak sobie testuję to, co lubię najbardziej - diodki. Napisałem prostu skrypt odpalający po kolei 4 diodki, jedną po drugiej. Wykorzystałem moduł timer. Skrypt taki prostacki trochę, ale nie chciało mi się kombinować tylko szybko efekt uzyskać - na wydajności mi nie zależało.
Ale pojawiła się ciekawa rzecz. Timer odlicza do 4, po czym go wyłączam ustawiam na 0 i odpalam od nowa. I ciekawe, że czasem skrypt może w kółko banglać 40 minut (testowane! - aż sam go wyłączę), a czasem odliczy kilka razy i się zatrzymuje. Przy czym skrypt nie wyłącza się chyba prawidłowo, bo nie jest zamykany moduł simOUt - ostatnia zapalona dioda - świeci się. Od czego to może zależeć?
oto skrypcik:
// skrypt główny
script "diodki_latajki"
{
variable $led_025_035
{
module = "simOUT";
id = "led_025_035";
type = bool;
direct = out;
}
variable $led_025_036
{
module = "simOUT";
id = "led_025_036";
type = bool;
direct = out;
}
variable $led_025_018
{
module = "simOUT";
id = "led_025_018";
type = bool;
direct = out;
}
variable $led_025_017
{
module = "simOUT";
id = "led_025_017";
type = bool;
direct = out;
}
variable $timer_00 { module = "Timer"; id = "timer_00"; type = int; direct = in; }
variable_changed $timer_00
{
Log( "$timer_00 = " + ToString( $timer_00 ) );
if ( $timer_00 == 1 )
{
$led_025_036 = true;
$led_025_035 = false;
$led_025_018 = false;
$led_025_017 = false;
}
if ( $timer_00 == 2 )
{
$led_025_036 = false;
$led_025_035 = true;
$led_025_018 = false;
$led_025_017 = false;
}
if ( $timer_00 == 3 )
{
$led_025_036 = false;
$led_025_035 = false;
$led_025_018 = true;
$led_025_017 = false;
}
if ( $timer_00 == 4 )
{
$led_025_036 = false;
$led_025_035 = false;
$led_025_018 = false;
$led_025_017 = true;
Timer:StopTimer( "timer_00" );
Timer:SetTimer( "timer_00", 100, 4 );
Timer:StartTimer( "timer_00" );
//$timer_00 = 0;
}
}
input_started
{
Log( "Ustawienie licznika, 10 wywołań co 500ms" );
Timer:SetTimer( "timer_00", 100, 4 );
Log( "Wystartowanie licznika" );
Timer:StartTimer( "timer_00" );
}
initialize
{
Log( "Initalize - Main" );
}
}