Go Down

Topic: Cronometro y cuentavueltas (Read 1 time) previous topic - next topic

Javi89

Jun 30, 2012, 12:34 pm Last Edit: Jun 30, 2012, 12:36 pm by Javi89 Reason: 1
Hola, llevo muy poco tiempo con esto de arduino, y todo lo que se de programación ha sido viendo tutoriales y demás.
estoy intentando hacer un cronometro para una moto accionado con infrarrojos, cosa que implementare próximamente.
ahora para hacer pruebas lo estoy haciendo con un botón. mi problema es que al presionar el botón el crono sigue corriendo y no me vuelve a 00:00:00, pero el contador de vueltas si que va sumando.
os dejo el código a ver si me podéis ayudar.
Quote
#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int bot = 3;
int seg = 0;
int minut = 0;
int mil = 0;
long tiempo = 0;
long tiempo2 = 0;
int vuelta = 0;

void setup(){
lcd.begin (16,2);
pinMode (bot, INPUT);

}
void loop()  {

 tiempo = millis()-tiempo2;
  //Calculo de los tiempos a mostrar  
 minut = (tiempo/60000);
 seg = ((tiempo/1000)-(minut*60));
 mil = (tiempo-(minut*60000)-(seg*1000));


 lcd.setCursor(10,1);
 lcd.print(":");
 lcd.setCursor(13,1);
 lcd.print(":");

 lcd.setCursor (8,1);
 if (minut < 10) {
   lcd.print ("0");
 }
 lcd.print (minut);
 lcd.setCursor (11,1);
 if (seg < 10) {
   lcd.print ("0");
 }
 lcd.print (seg);
 lcd.setCursor (14,1);
 lcd.print (mil);
 lcd.setCursor (4,1);
 lcd.print(vuelta);
 lcd.setCursor (2,1);
 lcd.print("V:");
 if(digitalRead(bot)==HIGH) {
 tiempo=0;
 tiempo2=0;
 minut=0;
 seg=0;
 mil=0;
 vuelta = vuelta+ 1;
 delay(200);  

 }
}



muchas gracias

ionhs

por lo que he mirado el problema está en este comando
tiempo = millis()-tiempo2;

como está ahora tiempo2 vale 0 siempre, si lo quitases te haría lo mismo que ahora.

millis te da el valor del tiempo desde que has arrancado la placa (igual es desde que se cargo el programa, no suelo acordarme). Cuando pulses el botón si haces tiempo2=millis(); igual consigues mejores resultados pero quita el delay(200).

Salu2

Javi89

muchas gracias ionhs ese problema lo he solucionado.
ese delay lo tenia para que no rebotara el boton, que es lo que me pasa ahora. como seria para que no lo hiciera?

miniduino

#3
Jun 30, 2012, 04:49 pm Last Edit: Jun 30, 2012, 04:52 pm by miniduino Reason: 1
Antirebote por software:  http://arduino.cc/it/Tutorial/Debounce
Antirebote por hardware: http://www.forosdeelectronica.com/f23/circuito-antirebote-hardware-3524/


Go Up