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
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
Grazie dell'aiuto, siete gentilissimi. L'idea era appunto di usare i fotodiodi come fotocellule, ora vedrò come fare
vi farò sapere
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.