Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: @synthesize en 31 Mayo 2010, 02:34 am



Título: Arduino: Cronómetro
Publicado por: @synthesize en 31 Mayo 2010, 02:34 am
Código
  1. int seg =0;
  2. int mix =0;
  3. int hor =0;
  4. int b;
  5.  
  6. void setup()
  7. {
  8.  Serial.begin(115200);
  9.  
  10.  hor =17;  // Actual
  11.  mix =58;
  12.  seg =45;
  13.  b=1000;
  14. }
  15.  
  16. void loop()
  17. {
  18.  
  19.  int a =millis();
  20.  
  21.  if (a==b)
  22.  {
  23.    b+=1000;
  24.    seg++;
  25.  
  26.  
  27.    if (seg==60)
  28.    {
  29.      seg =0;
  30.      mix++;
  31.    }
  32.  
  33.    if (mix==60)
  34.    {
  35.      mix =0;
  36.      hor++;
  37.    }
  38.  
  39.    if (hor==23)
  40.    {
  41.      hor =0;
  42.      mix =0;
  43.      seg =0;
  44.    }
  45.    Serial.flush();
  46.    mostrar(hor, mix, seg);
  47.  }
  48. }
  49.  
  50. void mostrar (int hox, int mixx, int sex)
  51. {
  52.  Serial.print(hox);
  53.  Serial.print(";");
  54.  Serial.print(mixx);
  55.  Serial.print(";");
  56.  Serial.print(sex);
  57.  Serial.print("\n");
  58. }

¿Alguien me ayuda a mejorarlo? XD


Título: Re: Arduino: Cronómetro
Publicado por: Silici0 en 31 Mayo 2010, 02:54 am
Que tal, por si te ayuda encontré un proyecto de cronómetro en:
http://sites.google.com/site/lsdiosarduino/Proyectos-Arduino/cronometro01

El usa la función millis() una segunda vez para ver el retardo del bucle y hacer una rectificación para hacerlo mas preciso.

Código:
 time2 = millis();            //comprueba el tiempo al final del loop
  time2=time2 - time1;       //calcula la diferencia
  if (time2 >=90 ){
    time2=50;
  }
  clock=90-time2;            //hace la rectificacion con delay
  delay(clock);
 
  printtime();                 //Imrpime el tiempo en el LCD