He conectado un lcd keypad shield y un ds1820 a arduino, y estoy tratando de hacer un termometro.
Hasta ahora la cosa va bien, lee la temperatura y la muestra en pantalla en la primera linea. Ahora quiero completarlo haciendo que muestre en la segunda linea la temperatura maxima total en el tiempo de medicion, y tambien la minima. Pero estoy un poco liado, me he trabado, y no se bien como hacerlo. He echo esto, pero no funciona, continuamente se iguala a temp... :
void loop ()
{
byte direccion [8];
float temp;
float maxi;
float mini;
buscasensor (direccion);
temp = leeTemp (direccion); // Se hace la llamada a la funcion que lee la temperatura del sensor
if(temp>maxi){
maxi=temp;
}
if(temp<mini){
mini=temp;
}
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(6, 0);
// print the number of seconds since reset:
lcd.print(temp);
lcd.write(0);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print(maxi);
lcd.setCursor(7, 1);
lcd.print(mini);
}
prueba iniciando las variables maxi y mini con un numero bajo y alto respectivamente para asegurarte de que cuando haga la comparación esta funcione.
añade algun serial print para ver que esta pasando
float temp;
float maxi = 0;
float mini = 999;
void setup(){
Serial.begin(9600);
}
void loop ()
{
byte direccion [8];
buscasensor (direccion);
temp = leeTemp (direccion); // Se hace la llamada a la funcion que lee la temperatura del sensor
if(temp>maxi){
Serial.println("nueva temperatura maxima");
maxi=temp;
}
if(temp<mini){
Serial.println("nueva temperatura minima");
mini=temp;
}
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(6, 0);
// print the number of seconds since reset:
lcd.print(temp);
lcd.write(0);
lcd.print("C");
aunque creo que tu problema es que al definir las variables en el bucle loop, cada vez que se inicia las vuelve a crear y esto elimina el valor que tenias guardado. por eso lo he sacado fuera del loop
Si, como digo en el anterior mensaje era eso, las saque fuera y funciona de maravilla. Tambien hice lo que comentas, de inicializarlas con un numero alto y bajo.