Hola:Les comparto el code de cisterna ...
/*Prof Lúpoli 10 de junio de 2022, proyecto de llenado de tanque de agua con seis variables */
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Pines utilizados
LiquidCrystal_I2C lcd(0x27,16,2);
#define LEDVERDE 5
#define LEDROJO 4
#define bomba 3
#define TRIGGER 9
#define ECHO 10
#define BUZZER 11
// Constantes
const float sonido = 34300.0; // Velocidad del sonido en cm/s
const float umbral1 = 40.0;
const float umbral2 = 15.0;
void setup() {
// Iniciamos el monitor serie
Serial.begin(9600);
// Modo entrada/salida de los pines
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Falta vincular"); // Mensaje a desplegar
lcd.setCursor(0,1);
lcd.print("la DISTANCIA "); // Mensaje 2 a desplegar
delay(3000); // espera 3 segundos con el mensaje estatic
pinMode(LEDVERDE, OUTPUT);
pinMode(LEDROJO, OUTPUT);
pinMode(bomba, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(TRIGGER, OUTPUT);
pinMode(BUZZER, OUTPUT);
// Apagamos todos los LEDs
apagarLEDs();
}
void loop() {
// Preparamos el sensor de ultrasonidos
iniciarTrigger();
// Obtenemos la distancia
float distancia = calcularDistancia();
// Apagamos todos los LEDs
apagarLEDs();
// Lanzamos alerta si estamos dentro del rango de peligro IMPORTANTE ESTA DIST.
if (distancia > umbral1)
{
// Lanzamos alertas AL LED
alertas(distancia);
digitalWrite(bomba, HIGH);
digitalWrite(LEDROJO, HIGH);
digitalWrite(LEDVERDE, LOW);
tone(BUZZER, 2000, 200);
}
}
// Apaga todos los LEDs
void apagarLEDs()
{
// Apagamos todos los LEDs
digitalWrite(LEDROJO, LOW);
digitalWrite(bomba, LOW);
digitalWrite(BUZZER, LOW);
digitalWrite(LEDVERDE, HIGH);
}
// Función que comprueba si hay que lanzar alguna alerta visual o sonora
void alertas(float distancia)
{
if (distancia > umbral1 && distancia < umbral2)
{
digitalWrite(LEDVERDE, HIGH);
}
}
// Método que calcula la distancia a la que se encuentra un objeto.
// Devuelve una variable tipo float que contiene la distancia
float calcularDistancia()
{
// La función pulseIn obtiene el tiempo que tarda en cambiar entre estados, en este caso a HIGH
unsigned long tiempo = pulseIn(ECHO, HIGH);
// Obtenemos la distancia en cm, hay que convertir el tiempo en seguNdos ya que está en microsegundos
// por eso se multiplica por 0.000001
float distancia = tiempo * 0.000001 * sonido / 2.0;
Serial.print(distancia);
Serial.print("cm");
Serial.println();
delay(500);
return distancia;
}
// Método que inicia la secuencia del Trigger para comenzar a medir
void iniciarTrigger()
{
// Ponemos el Triiger en estado bajo y esperamos 2 ms
digitalWrite(TRIGGER, LOW);
delayMicroseconds(2);
// Ponemos el pin Trigger a estado alto y esperamos 10 ms
digitalWrite(TRIGGER, HIGH);
delayMicroseconds(10);
// Comenzamos poniendo el pin Trigger en estado bajo
digitalWrite(TRIGGER, LOW);
}