Go Down

Topic: No se puede iniciar un cronometro y valor de un sensor en un LCD a la vez (Read 930 times) previous topic - next topic

FernandoAP

Saludos ,quisiera que me ayuden , tengo un problema , ya hize el codigo de un cronometro para que se muestre en la fila "0" de mi LCD, ahora,tambien el codigo para que en la fila "1" ,salga el valor de mi sensor de temperatura (LM335) en ºC , pero cuando cuando conecto a la alimentacion via USB/PC .
El cronometro no aparece (el valor sensado si) y sale despues de un indeterminado tiempo ( 15 segundos creo) , yo quisiera que ambas salgan a la vez ,desde el primer momento de su conexion , les adjunto el codigo .. corriganme si esta mal,porfavor .. muchas gracias.

PD: ya probe cada codigo por separado (osea el del cronometro y el del sensor es sketch's separados ), y si funcionan,pero quiero que funciones ambos a la vez... ayudaaaa

Code: [Select]
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int horas = 0;
int minutos = 0;
int segundos = 0;
int decimas = 0;
long milisegundos = 0;
float temp ;
int tempPin=0;

void setup()
{
  lcd.begin(16,2);
}
void loop()
{
// CODIGO PARA EL CRONOMETRO

  milisegundos = millis();
  if(milisegundos % 100 == 0)
  { //Only enter if it has passed tenth of a second
    decimas++;
    if(decimas == 10)
    { //When it has passed 10 tenths of a second it count one second
      decimas = 0;
      segundos++;
    }
    if(segundos == 60)
    { //When it has passed 60 seconds it count one minute
      segundos = 0;
      minutos++;
    }
    if(minutos == 60)
    { //When it has passed 60 minutes it count one hour
      minutos = 0;
      horas++;
    }
    //Print Time
    lcd.setCursor(0,0);
    if(horas < 10)
    {
      lcd.print("0");
    }
    lcd.print(horas);
    lcd.print(":");
    lcd.setCursor(3,0);
    if(minutos < 10){
      lcd.print("0");
    }
    lcd.print(minutos);
    lcd.print(":");
    lcd.setCursor(6,0);
    if(segundos < 10)
    {
      lcd.print("0");
    }
    lcd.print(segundos);
    lcd.print(":");
    lcd.setCursor(9,0);
    lcd.print(decimas);
  }

//CODIGO PARA EL SENSOR

  temp=analogRead(tempPin);
  temp=(((5000.0*temp)/1024.0)/10.0)-273.8;
  lcd.setCursor(4,1);
  lcd.print(temp);
  lcd.print((char(223)));
  lcd.println("C         ");
delay(1000);

}

UndercoverNerd

Hola.
Ahora no puedo mirar en profundidad el código, pero te digo unas indicaciones:
Yo estoy también con un cronómetro y estoy usando una clase que va muy bien y la veo mucho más cómoda y sencilla:
http://playground.arduino.cc/Code/StopWatchClass a lo mejor te aclaras más con ella.

Una cosa que he visto ha sido el lcd.println (en vez de lcd.print), que supongo que se te habrá colado porque antes lo imprimias por Serial, mira de quitarlo, que a mí me daba problemas.

Y por último, yo lo que haría es probar que vaya con un contador normal, decimal. Si eso va bien, luego ya me pondría a hacer la separación de minutos, segundos, etc.

Lo dicho, igual está bien, pero no puedo ahora mirar el código, en cuanto tenga un hueco te lo miro a ver.


velon

Amigo  FernandoAP
Para empezar, el código parece estar bien estructurado, sin entrar a valorarlo, pero como dice UndercoverNerd, trata de quitar el:    lcd.println("C         ");
Al hacer lcd.println, lo que haces es saltar a la otra línea y sólo tienes 2 (0 y 1), así que, si estás en la linea 1 y saltas a la siguiente, te encuentras en la 0 (primera). Y otra cosa, para que quieres los espacios detrás del C en ("C         "), yo pondría (" C"), con esto separo los números de la letra Centígrados.
Mira en el setup (), deberías inicializar el LCD con:   lcd.begin(16, 2);
Espero que te sirva.
Saludos.

Go Up