Subject:
|
Re: domanda per esperti nqc
|
Newsgroups:
|
lugnet.loc.it
|
Date:
|
Tue, 11 Jan 2000 01:54:05 GMT
|
Viewed:
|
432 times
|
| |
| |
Marco Beri wrote:
>
> La domanda non e` banale, anzi. Credo che dovremo accontentarci di
> decimi di secondo. Il manuale dice: "The RCX contains four timers
> which measure time in increments of a tenth of a second (100ms). To
> read the value of a timer, use the Timer(n) expression where n is a
> constant between 0 and 3 and specifies which timer to read.".
Forse con un piccolo trucchetto e' possibile fare di meglio.
Basta usare tutti e quattro i timer e sfasarli di 3 centesimi
di secondo l'uno dall'altro. Questo si puo' fare usando la funzione
Wait() che, stando al manuale, dovrebbe avere una precisione pari a
un centesimo di secondo.
Il codice potrebbe essere qualcosa del tipo:
[ start ]
ClearTimer(0);
Wait(3);
ClearTimer(1);
Wait(3);
ClearTimer(2);
Wait(3);
ClearTimer(3);
[ stop ]
t0 = Timer(0);
t1 = Timer(1);
t2 = Timer(2);
t3 = Timer(3);
A questo punto, se T e' il "tempo vero" della gara, si avra' che
per il timer 0 e' trascorso il tempo T
per il timer 1 e' trascorso il tempo T-0.03s
per il timer 2 e' trascorso il tempo T-0.06s
per il timer 3 e' trascorso il tempo T-0.09s
Poiche' la precisione dei timer e' di 0.1s, la prima variabile che
assume valore diverso da t0 indichera' quale correzione va fatta
(tra 3, 6 e 9 centesimi di secondo).
Mmm, rileggendo quello che ho scritto mi rendo conto che non e'
molto chiaro... Forse e' meglio fare un esempio ;)
Supponiamo che siano passati 23.78s
per il timer 0 sono passati 23.78s, quindi t0 = 237
per il timer 1 sono passati 23.75s, quindi t1 = 237
per il timer 2 sono passati 23.72s, quindi t2 = 237
per il timer 3 sono passati 23.69s, quindi t3 = 236
Siccome t2 = t1 = t0 mentre t3 < t0, posso dire che la misura
segnata da t0 deve essere aumentata di una quantita' compresa tra
i 6 e i 9 centesimi di secondo. (Personalmente prenderei l'estremo
inferiore.)
Quindi la routine di cronometraggio potrebbe finire con qualcosa
del tipo:
if( t1 < t0 )
t0 *= 10;
else if( t2 < t0 )
t0 = t0 * 10 + 3;
else if( t3 < t0 )
t0 = t0 * 10 + 6;
else
t0 = t0 * 10 + 9;
In questo modo in t0 si avra' il cronometraggio della prestazione
espresso in centesimi di secondo.
Spero che l'ora tarda non mi abbia fatto scrivere fesserie troppo
grosse! ;))
Ciao,
Antonio
|
|
Message has 2 Replies: | | Re: domanda per esperti nqc
|
| "iant" <iant@libero.it> wrote in message news:387A8D3D.D2D392...bero.it... (...) Sei stato chiarissimo. E' lo stesso principio con cui si misurano i ventesimi di millimetro su un calibro...... Mmm, 1 decimo, 4 timers, 1 centesimo di risoluzione.... (...) (25 years ago, 11-Jan-00, to lugnet.loc.it)
| | | Re: domanda per esperti nqc
|
| (...) Grande! Mi piace. Veramente un'ottima idea. Ciao. Marco. P.S. E` venuto in mente anche a me il calibro ma vedo che Carlo mi ha tolto il commento... (25 years ago, 11-Jan-00, to lugnet.loc.it)
|
Message is in Reply To:
| | Re: domanda per esperti nqc
|
| (...) La domanda non e` banale, anzi. Credo che dovremo accontentarci di decimi di secondo. Il manuale dice: "The RCX contains four timers which measure time in increments of a tenth of a second (100ms). To read the value of a timer, use the (...) (25 years ago, 10-Jan-00, to lugnet.loc.it)
|
13 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
This Message and its Replies on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|