Seguidores que han visitado nuestro blog

Entradas populares

miércoles, 13 de julio de 2022

Documentación de sistema de Cisterna Parte 1

 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);

}

pila

pila
ESTRUCTURA

Archivo del blog