Hola queria saber como hacer un cronometro corrido. Por ejemplo lo que quiero hacer es que un led este prendido y cuando este prendido el tiempo corra.. cuando este led se apague a traves de un sensor IR quiero que me guarde el tiempo y el cronometro siga hasta que el led se apague de nuevo. Tambien me gustaria que estos datos sean exportados a un txt o excel. Aqui adjunto el codigo que tengo y lo que me sale en el monitor serial.
const int analogInPin = A1; // Pin analogico 1 para la lectura del Fototransistor
const int OutPin = 13; // Pin para el led indicador
int sensorValue = 0; // Inicializamos el valor del sensor
unsigned long start, finished, elapsed;
void setup() {
// Inicializamos la comunicacion serial a 9600 bps:
Serial.begin(9600);
pinMode(OutPin, OUTPUT);
}
void displayResult()
{
float h,m,s,ms;
unsigned long over;
elapsed=finished-start;
h=int(elapsed/3600000);
over=elapsed%3600000;
m=int(over/60000);
over=over%60000;
s=int(over/1000);
ms=over%1000;
Serial.print("Raw elapsed time: ");
Serial.println(elapsed);
Serial.print("Elapsed time: ");
Serial.print(h,0);
Serial.print("h ");
Serial.print(m,0);
Serial.print("m ");
Serial.print(s,0);
Serial.print("s ");
Serial.print(ms,0);
Serial.println("ms");
Serial.println();
}
void loop() {
// leemos el pin para y asignamos el valor a la variable.
sensorValue = analogRead(analogInPin);
// Si el valor obtenido es mayor a 900 se activa el LED
if(sensorValue < 300)
{
digitalWrite(OutPin, HIGH);
}
else
{
digitalWrite(OutPin, LOW);
}
// Imprimimos el valor en el monitor.
Serial.print("sensor = " );
Serial.println(sensorValue);
if (digitalRead(13)==LOW)
{
start=millis();
Serial.println("Started...");
}
if (digitalRead(13)==HIGH)
{
finished=millis();
displayResult();
}
delay(100);
}
Monitor Serial:
sensor = 242
Raw elapsed time: 9775
Elapsed time: 0h 0m 9s 775ms
sensor = 298
Raw elapsed time: 9880
Elapsed time: 0h 0m 9s 880ms
sensor = 377
Started...
sensor = 416
Started...
sensor = 425
Started...
Espero sugerencias!