Pages: [1]   Go Down
Author Topic: Cronometro y cuentavueltas  (Read 1696 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: June 30, 2012, 05:36:47 am by Javi89 » Logged

Donostia
Offline Offline
God Member
*****
Karma: 3
Posts: 744
elektronikadonbosco
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 174
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Antirebote por software:  http://arduino.cc/it/Tutorial/Debounce
Antirebote por hardware: http://www.forosdeelectronica.com/f23/circuito-antirebote-hardware-3524/

« Last Edit: June 30, 2012, 09:52:58 am by miniduino » Logged


Pages: [1]   Go Up
Jump to: