Cronografo con Arduino

Ciao gente,
vorrei realizzare un cronografo che possa misurare in millisecondi utilizzando 2 LED con relativi fotodiodi, ma non ho idea di che codice usare ;D :o . Forse è un progetto troppo complicato per un newbie :-/ ?

no non credo che sia difficile.. pero' non ho capito bene: i led e i fotodiodi a cosa servono?

no non credo che sia difficile.. pero' non ho capito bene: i led e i fotodiodi a cosa servono?

credo che intenda realizzare due fotocellule, una di start e una di stop, per misurare un intervallo di tempo dell'ordine dei ms. Non ho idea se si riesca

ah capisco :slight_smile:
beh ammesso che tu riesca a fare delle specie di fotocellule (non so come siano fatte) il codice e' semplice. Poi bisogna considerare quale sia la precisione del timer interno della scheda e se per te e' sufficiente.
Per il codice, io userei la funzione millis che ritorna il numero di millisecondi passati dall'avvio della scheda. Poi immagino che i fotodiodi si usino in qualche modo come ingresso analogico, quindi basta scegliere dei valori soglia per decidere se sono attivi o non attivi..

In pseudo codice:

waitForStart();
long start = millis();
waitForStop();
long risultato = millis() - start;

Alla fine risultato conterra' il tempo in millisecondi.
le funzioni potrebbero essere:

int val = readAnalog(PIN);
while (val < SOGLIA)
{
val = readAnalog(PIN);
}

cioe' sta a ciclare sul while finche' il valore letto non e' inferiore (o superiore) a una determinata soglia.

Spero ti sia utile :slight_smile:

Grazie dell'aiuto, siete gentilissimi. L'idea era appunto di usare i fotodiodi come fotocellule, ora vedrò come fare :slight_smile:

vi farò sapere :wink:

Mi sento un pò stupido, mi sa che h fatto macello

int startPin = 1;
int analogPin =1;

void setup()
{

  Serial.begin(9600);
  Serial.println("Cronografo 1.0      ");
}

void loop ()
{


  waitForStart(); 
  long start = millis(); 
  waitForStop(); 
  long risultato = millis() - start;
  Serial.print ((long)risultato);
  
}

  Serial.print(risultato){ 
  
 }

è il caso ke impari prima a programmare un po' con cose semplici come accendere e spegnere un led.
waitForStart(); e l'altra waitForStop(); sono delle funzioni che devi scrivere tu a mano.
Qualcosa che faccia a capire all'arduino che l'oggetto è passato attraverso la prima fotocellula (e quindi il tuo segnale nel fotodiodo è sceso sotto il livello di soglia) per la prima funzione, e quella che faccia capire all'arduino che l'oggetto è arrivato alla seconda fotocellulare x stoppare il timer.