#include <Wire.
h>
#include <LiquidCrystal_I2C.h> //Crear el objeto lcd dirección 0x3F y 16 columnas x 2 filas
LiquidCrystal_I2C lcd(0x27, 16, 2); //
const int Trigger = 2; //Pin digital 2 para el Trigger del sensor
const int Echo = 3; //Pin digital 3 para el echo del sensor
const int sensorPin = 8;
int Bomb = 10 ; int boton = 9;
bool estado = false;
bool estado_anterior = true;
int led = 5;
bool on = false;
bool off = true;
int m = 0;
int mm = 0;
bool flag = 0;
void setup() {
Serial.begin(9600); //iniciar puerto serie
pinMode(sensorPin , INPUT); //definir pin como entrada
// Inicializar el LCD
lcd.init();
//Encender la luz de fondo.
lcd.backlight();
// Escribimos el Mensaje en el LCD.
lcd.print("Iniciando...");
Serial.begin(9600);//iniciailzamos la comunicación
pinMode(Trigger, OUTPUT); //pin como salida
pinMode(Echo, INPUT); //pin como entrada
digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(7, OUTPUT);
pinMode(9, INPUT_PULLUP);
pinMode(10, OUTPUT);
pinMode(5, OUTPUT);
void loop() {
long t; //timepo que demora en llegar el eco
long d; //distancia en centimetros
digitalWrite(Trigger, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger, LOW);
t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso
d = t / 59; //escalamos el tiempo a una distancia en cm
m = d * 10;
mm = 240 - m;
Serial.print("Distancia: ");
Serial.print(d); //Enviamos serialmente el valor de la distancia
Serial.print("cm");
Serial.println();
if (d == 25) {
digitalWrite(11, HIGH);
flag = 1;
if (d > 25) {
digitalWrite(11, LOW);
}
if (d == 15) {
digitalWrite(12, HIGH);
flag = 1;
if (d > 15) {
digitalWrite(12, LOW);
if (d == 5) {
digitalWrite(13, HIGH);
flag = 1;
if (d > 5) {
digitalWrite(13, LOW);
if (flag){
digitalWrite(5, HIGH);
delay(2000);
flag = 0;
digitalWrite(5, LOW);
// Ubicamos el cursor en la primera posición(columna:0) de la segunda línea(fila:1)
lcd.clear();
if ((d <= 5) && (d >= 0) ) {
lcd.setCursor(0, 0);
lcd.print("Tanque al: 75%");
if ((d <= 15) && (d >= 6)) {
lcd.setCursor(0, 0);
lcd.print("Tanque al: 50%");
if ((d <= 25) && (d >= 16)) {
lcd.setCursor(0, 0);
lcd.print("Tanque al: 25%");
lcd.setCursor(0, 0);
lcd.print("Tanque al: ");
lcd.setCursor(0, 1);
lcd.print(mm);
delay(100);
estado = digitalRead(boton);
if (estado != estado_anterior) //hay cambio : Han pulsado o soltado
if (estado == LOW) //Al pulsar botón cambiar LED, pero no al soltar
digitalWrite(Bomb, !digitalRead(Bomb));
estado_anterior = estado ; // Para recordar el ultimo valor
if ((d <= 5) && (d >= 0)) {
digitalWrite(Bomb, LOW);
int value = 0;
value = digitalRead(sensorPin ); //lectura digital de pin
if (value == LOW) {
digitalWrite(7, HIGH);
if (d >= 25) {
digitalWrite(7, LOW);