if ( val != 0)
{
// Si el pulsador no esta oprimido, flanco de bajada
if ( val==0 )
{
val=val++; //Incrementa el contador Serial.println(val); //Imprime el valor por consola
digitalWrite(13,HIGH);
delay (100); // Retardo
digitalWrite(13,LOW);
delay (100);
}
}
}
El problema que tengo es que al poner el monitor del puerto serie, no me aparece nada...
void loop() {
int sensorValue = analogRead(sensorPin);
if (sensorValue < 100) { //corto el haz ir
counter++; //se incrementa el contador Serial.print("Contador : "); Serial.println(counter);
digitalWrite(13, HIGH); // Enciendo el led nº1
delay(1000); // Espero 1000 ms
digitalWrite(13, LOW); // Apago el led nº1
boolean low = true;
while (low) { //esperar hasta el final del corto
sensorValue = analogRead(sensorPin);
if (sensorValue > 400) {
low = false;
}
}
}
}
El resultado es prometedor, aunque quisiera depurarlo colocando un contador de tiempo entre gap y gap y que ocupara una linea el contador... a ver que consigo.
He colocado el contador de tiempo, me hace una cosa rara,es como si repitiera el mismo tiempo entre gap y gap, y lo que hace es repetir el retorno de carro hasta el siguiente gap, lo que lo hace muy desagradable, lo suyo seria ocupar una linea diciendo vuelta n x tiempo por vuelta y milisegundos...
int sensorPin = 1;
int counter = 0;
int start;
int finished;
int elapsed;
void loop() {
int sensorValue = analogRead(sensorPin);
if (sensorValue < 100) { //corto el haz ir
counter++; //se incrementa el contador
start=millis();
Serial.print("Contador : ");
Serial.println(counter);
digitalWrite(13, HIGH); // Enciendo el led nº1
delay(1000); // Espero 1000 ms
digitalWrite(13, LOW); // Apago el led nº1
boolean low = true;
while (low) { //esperar hasta el final del corto
sensorValue = analogRead(sensorPin);
if (sensorValue > 400) {
low = false;
finished=millis();
}
}
}
elapsed=finished-start;
Serial.print(elapsed);
Serial.println(" milisegundos por vuelta");
uff porque estoy de vacaciones que sino durante las clases ando super liado llevo un curso de traca. Le hecho un vistazo y te comento cosa que se pueden mejorar aunque tal vez no encuentre el problema.
Te recomiendo que cuando abras las llaves { primero le des al intro y luego abras las llaves de esa manera la apertura de llave y el cierre de llaves quedarán a la misma altura y se ve mucho más claro donde empieza un bucle y donde acaba.
Usas una variable llamada "low" supongo que eso no sera pero la palabra low es una palabra reservada y es mejor no usar palabras que tengan significado para arduino como variables.
No entiendo completamente el problema pero tener un delay de 1 segundo te imposibilita hacer lecturas de menos de 1 segundo. Si el parpadeo de led no es muy importante quitarlo y puedes sustituirlo por un mensaje en el serial monitor. Sino esto no te va a dar más que problemas
Para conseguir que en una linea te salga numero de vueltas y velocidad, no uses Serial.println(" milisegundos por vuelta");
en su lugar pon Serial.print(" milisegundos por vuelta"); y Serial.print(" ");
Haber si con eso se te arreglan los problemas, me acabo de dar cuenta que a mis alumnos les he mandado un ejercicio muy parecido. saludos