Hola, estoy modificando un codigo que sirve para controlar el llenado de un tanque por medio de otro tanque de reserva, tiene dos sensores ultrasonicos que dicen el porcentaje en cada tanque. Mis problemas son basicamente dos. Uno es que el display se "borra" por unos segundos, para despues aparecer de nuevo los datos y el segundo problema, es que no quiero que aparezcan decimales en el porcentaje de los tanques, alguna sugerencia por favor? dejo el codigo:
#include <LiquidCrystal_I2C.h>
#define triggertank 4
#define echotank 5
//tank
#define triggersump 2
#define echosump 3
//sump
LiquidCrystal_I2C lcd(0x38,20,4);
float time1=0, distance1=0, time2=0,
distance2=0, tankp=0;
float low=3;
const int MOTOR = 8;
String buf;
void setup ()
{
pinMode (triggertank, OUTPUT) ;
pinMode (triggersump, OUTPUT) ;
pinMode (echosump,INPUT) ;
pinMode (echotank,INPUT) ;
pinMode (MOTOR, OUTPUT) ;
lcd.init () ;
lcd.backlight () ;
lcd.setCursor (0,0) ;
lcd.print ("Control automatico") ;
lcd.setCursor (0,1) ;
delay (100) ;
lcd.print (" de agua ") ;
delay (100) ;
}
void loop ()
{
lcd.clear () ;
digitalWrite (triggersump,LOW) ;
delayMicroseconds (2) ;
digitalWrite (triggersump,HIGH) ;
delayMicroseconds (10) ;
digitalWrite (triggersump,LOW) ;
delayMicroseconds (2) ;
time1=pulseIn (echosump,HIGH) ;
distance1=time1*0.034/2;
//SUMPSTUFF
digitalWrite(triggertank,LOW) ;
delayMicroseconds(2) ;
digitalWrite(triggertank,HIGH) ;
delayMicroseconds(10) ;
digitalWrite(triggertank,LOW) ;
delayMicroseconds(2) ;
time2=pulseIn(echotank,HIGH) ;
distance2=time2*0.034/2;
//TANKSTUFF
if(distance1>=23)
{
digitalWrite(MOTOR, HIGH) ;
lcd.setCursor (1,0) ;
lcd.print ("SUMP : EMPTY") ;
lcd.setCursor (1,1) ;
lcd.print ("PUMP : OFF") ;
delay (500) ;
}//00_01
else if (distance1<23)
{
lcd.setCursor (1,0) ;
lcd.print ("SUMP : NOT EMPTY") ;
if(distance2<low)
{
digitalWrite (MOTOR, HIGH) ;
lcd.setCursor (1,1);
lcd.print ("PUMP : OFF") ;
low=15.00;
delay (100) ;
}//11
else if (distance2>=low)
{
digitalWrite (MOTOR, LOW) ;
lcd.setCursor (1,1) ;
lcd.print ("PUMP : ON") ;
delay (100) ;
}//10
}
tankp=(1-distance1/9.52)*100 ;
buf = String (tankp, 2) ;
lcd.setCursor (1,3) ;
lcd.print ("SUMP LEVEL: ") ;
lcd.print(buf) ;
lcd.print("%") ;
tankp=(1-distance2/9.52)*100 ;
buf = String (tankp, 2) ;
lcd.setCursor (1,2) ;
lcd.print ("TANK LEVEL: ") ;
lcd.print(buf) ;
lcd.print("%") ;
delay (1200) ;
}//ENDOFPROGRAM