Buenos días y disculpen la banalidad de la pregunta, pero estoy aprendiendo.
sensors.requestTemperatures();
Sensor_Agua = sensors.getTempCByIndex(0);
lcd.setCursor(3, 0);
lcd.print("-AGUA MACERADO-");
lcd.setCursor(15, 1);
lcd.print(Sensor_Agua);
//// CONDICION: AGUA DE MACERADO ES A x°////
if ( Sensor_Agua < 30) {
lcd.setCursor( 5, 3);
lcd.print("CAL");
}
else if ( Sensor_Agua > 30, 5 ) {
digitalWrite (led1_Agua_Macerado_y_Lavado, HIGH);
lcd.setCursor(8, 3);
lcd.print("OK");
}
Por qué cuando el sensor está en <30 con lcd.print("CAL") y el sensor actualiza a 31 agrega OK pero no borra el "CAL".
En realidad la explicación la entiendo, porque es como que lo estoy llamando para que me avise pero no para que me deje de avisar. Entonces la pregunta sería cómo expresar eso.
Porque lo debes borrar "manualmente".
"CAL" se imprime en las posiciones 5, 6 y 7 en cambio "OK" en 8 y 9, entonces el programa hace exactamente lo que le has pedido.
Cambia las cadenas a "CAL.." y "...OK" (los puntos representan espacios) e imprime ambas en la posición 5, así una sobreescribe (y borra) a la otra.
Cuando está a menos de 30 tiene que decir CAL y cuando sube a 31 tiene que decir OK y si por alguna razón , estando a 32 vuelve a bajar a 29 tiene que desaparecer OK y volver a decir CAL
Gatul tu respuesta ha sido la solución y estoy muy agradecido. Pero debo reconocer que me sorprende, que dada la complejidad de Arduino, no se pueda borrar un aviso (una palabra) sino es sobreescribiendo.
Muchas gracias, nuevamente.
Es que lo escribes en posiciones diferentes.
Piensa la situación contraria, que quisieras imprimir en lugares distintos (como ahora) y el display no te lo permitiese porque te borrase lo ya impreso.
Qué tiene que ver la complejidad de arduino con borrar un aviso? Nada!
Justamente los códigos son flexibles a todo lo que se nos pueda ocurrir hacer.
Es básicamente nuestra responsabilidad que las cosas salgan bien o mal.
Cuando pones cosas usando setCursor hay que ser muy cuidadoso.
En lo personal me gusta usar sprintf y un buffer y escribir toda la longitud de la línea.
COn eso evisto tener que borrarla y resolver qué hacer con caracteres anteriores.
Pero solo con buscar sprintf en la lupa encontrarás de qué te hablo.
Como andan, hace unos días que vengo complicado con este tema y creo que encontré el problema. Me doy cuenta pero no como resolverlo.
Es un proceso de cocción que consta de 5 Bloques independientes una de las otras, con tecla "1" entramos al Bloque 1 con tecla "2" entramos al Bloque 2 , con tecla "3" al Bloque 3 y así sucesivamente .
El bloque 2 se subdivide en 2 partes (en dos proceso al mismo tiempo: Parte A y Parte B)
La Parte A anda bien, el sensor varia entre CAL y OK en función de la temperatura estipulada if ( Sensor_Agua <= 29) {
La Parte B es prácticamente lo mismo, pero con la condición que en parte se inicia cuando se apreta una tecla del teclado matricial. Y ahí es donde no anda.
Cuando se presiona "B" del teclado el sensor hace una primer lectura y determina si es CAL o OK y queda fijo en ese valor y necesito que varíe en función de la temperatura como en la Parte A
El problema está en que solo va a funcionar en la medida que aprete "B". Apreto B hace una primer lectura, el if determina si es CAL o OK y el bucle cuando vuelve se encuentra con que B ya no está apretado.
Y acá viene la pregunta ¿ Cómo hago para que cuando apreto B ya quede habilitado, y el sensor se actualice constantemente?
Creo que entiendo cual es el error pero no me doy cuenta como resolverlo
@nandozu No abras varios hilos para un mismo tema (ya hemos tratado parte de esto) y encima con un fragmento de código. Si no vemos el resto es difícil ayudarte. ¿O esperas que vayamos a ver el código al otro tema?
Lo correcto es que sigas consultando en tu tema primario.