Buenas noches gente, tengo varios problemas, les voy a pasar el codigo junto con el esquema de conexion del proyecto. El proyecto que estoy haciendo, se llama "control de nivel de tanque de agua" y quice implementar Arduino en él.
#include <LiquidCrystal.h> // Se incluye la libreria LiquidCrystal
LiquidCrystal lcd(12,11,5,4,3,2); // Crea un Objeto LC. Parametros: (rs, enable, d4, d5, d6, d7).
int echo = 9;
int trigger = 8;
float distancia,tiempo; //Declaramos variable flotante "distancia y tiempo".
void setup()
{
Serial.begin(9600);
lcd.begin(16,2); //Determina sus dimensiones (ancho y alto) del display.
lcd.setCursor(2,0); //Colocamos el cursor en la Columna Columna 3, fila 0.
lcd.print("Proyecto S.C.");
lcd.setCursor(6,1); //Colocamos el numero "2019" en la columna 6, fila 1
lcd.print ("2018");
delay (3000);
lcd.clear();
lcd.setCursor(5,0); //Colocamos el cursor en la Columna Columna 3, fila 0.
lcd.print("Mauro");
lcd.setCursor(3,1);
lcd.print ("Montenegro");
delay (3000);
lcd.clear();
lcd.setCursor(2,0); //Colocamos el cursor en la columna 2, fila 0
lcd.print("Iniciando!..");
lcd.setCursor(6,1);
lcd.print ("3");
delay (1000); // delay de 1 segundo
lcd.setCursor(6,1);
lcd.print ("2");
delay (1000);
lcd.setCursor(6,1);
lcd.print ("1");
delay (1000);
lcd.clear();
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
}
void loop()
{
digitalWrite(trigger,LOW); //Escritura digital, ponemos a 0 el pin Trigger
delayMicroseconds(4); //Para tener un disparo limpio o el vio de una onda sonica limpia
digitalWrite(trigger,HIGH);
delayMicroseconds(10);
digitalWrite(trigger,LOW);
tiempo=pulseIn(echo,HIGH);
distancia=(tiempo/2)/29.2;
Serial.print(distancia); // Imprimimos la distancia en cm
Serial.print("cm");
Serial.println();
delay(400);
lcd.setCursor(0,1); //Colocamos el cursor en linea 0, columna 1
lcd.print(" ");
lcd.print(distancia);
if (distancia>=40 && distancia <=400){ //Que se encienda el LED verde si el sensor
analogWrite (13,200); //toma una distancia que se considera estable
analogWrite (6,0); //entre 40cm y 400cm
analogWrite (7,0);
lcd.setCursor(0,0);
lcd.print ("Distancia normal");
}
if (distancia>=20 && distancia <=40){ //Que se encienda el LED amarillo si el sensor
analogWrite (6,200); //toma una distancia que considera anormal
analogWrite (7,0); //entre 20 y 40 cm
analogWrite (13,0);
lcd.setCursor(0,0);
lcd.print ("Distancia dudosa");
}
if (distancia>=5 && distancia <=20){ // Que se encienda el LED rojo si el sensor
analogWrite (7,200); // toma una distancia que se considera en alerta entre 5cm y 20cm
analogWrite (10,255); //Cuando el LED rojo detecte la distancia del agua muy cerca
delay (100); // que se active el buzzer
analogWrite(10,0);
delay (100);
analogWrite (6,0);
analogWrite(13,0);
lcd.setCursor(3,0);
lcd.print ("ALERTA!!!");
}
}
La foto de nombre "error1" me pasa cuando tengo un tiempo prolongado conectado al arduino a 5v de la notebook o cuando lo tengo conectado a 9v con una bateria.. Tengo que darle al boton reset para que se normalice todo..
La segunda foto me pasa que como son 3 niveles que yo les puse que en 40 cm y 400 cm me prenda el led verde y diga en el display "Distancia normal".. el segundo led amarillo me prenda en una distancia de entre 20 cm y 40 cm y diga "distancia dudosa", y aca es el problema, el led rojo de entre 5cm y 20cm al decir "Alerta!" se me superpone con la palabra "Distancia dudosa", como puedo hacer para que no pase eso?