To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.loc.itOpen lugnet.loc.it in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 Local / Italia / 876
875  |  877
Subject: 
Re: domanda per esperti nqc
Newsgroups: 
lugnet.loc.it
Date: 
Tue, 11 Jan 2000 01:54:05 GMT
Viewed: 
402 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
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR