Sensor de Nivel de Agua en Arduino

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 4

// configuramos los pines del sensor Trigger y Echo

const int PinTrig = 7;


const int PinEcho = 6;

// constante velocidad sonido en cm/s


const float VelSon = 34000.0;
float distancia;

// PROGRAMANDO EL SKETCH PARA CALCULAR EL NIVEL

//NUMERO DE MUESTRAS
const int mnumLecturas = 100;

// DISTANCIA a los 100 ml y vacio


const float distancia100 = 2.15;
const float distancia Vacio =11.41;

float Lecturas[numLecturas];//ARRAY PARA ALMACENAR LECTURAS


int lecturaActual = 0; //lectura por la que vamos
float total = 0; //Total de las que llevamos
float media =0; //MEDIA DE LAS MEDIDAS
bool primeraMedia = false; //Para saber que ya hemos calculado por lo
menos una

void setup ()
{
//INICIAMOS EL MONITOR SERIE PARA MOSTRAR EL RESULTADO
Serial.begin(9600);
//PONEMOS EL PIN TRING en modo salida
pinMode(PinTring, OUTPUT);
//Ponemos el pin Echo en modo entrada
pinMode(PinEcho, INPUT);
//INICIAMOS EL ARRAY
for (int=0; i<numLecturas; i++)
{
lecturas [i] = 0;}
}
}
//Incluimos la libreria externa para poder utilizarla
#include <LiquidCrystal.h> //entre los simbolos <> buscara en la carpeta
de librerias configurada

//los primero es inicializa la libreria indicando los pins de la iterfaz


LiquidCrystal lcd(12, 11, 5, 4, 3,2);
//DEFINIMOS LAS CONSTATES
# define COLS 16 // columnas del lcd
# define ROWS 2 // FILAS DEL LCD
void setup()
{
//configuramos las filas y las columnas del LCD en este caso 16
columnas y 2 filas
Lcd.begin((COLS, ROWS))
}

void loop()
{
//eliminamos la ultima medida
total = total - lecturas[lecturaA];
iniciarTrigger();

//la funcion pulseIn obtiene el tiempo que tardaen cambiar entre estados
en ese caso HIGH
unsigned long tiempo = PulseIn (PinEcho, HIGH);

//obtenemos la distancia en cm, ha que convertir el tiempo en segundos ya


que estan en microsegundos

//por eso se multiplica por 0.000001


}
float distancia =tiemp * 0.000001 *Velson/2;
//ALMACENAMOS LA DISTANCIA EN EL ARRAY
Lecturas [LecturaActual]= distancia;
//Añadimos la lectura al total
total = total + lecturas[lecturaActual];
//Avanzamos a la siguiente posicion del array
LecturaActual = lecturaActual +1;
//comprobamos si hemos llegado al final del array
if (lecturaActual >= numLecturas)
{
primeraMedia= true;
lecturaActual= 0;
}
//CALCULANDO LA MEDIA
media =total /numLecturas;
//Solo mostramos si hemos calculado por lo menos una media
if(primeraMedia)
{
float distanciaLleno= distanciaVacio - media;
float cantidadLiquido = distanciaLleno *100 / distancia 100;
int porcentaje = (int)(distanciaLleno * 100 / distanciaVacio);

//MOSTRAMOS EN LA PANTALLA LCD


lcd.clear();
//CANTIDAD DE LIQUIDO
Lcd.Setcursor(0,0)
Lcd.print(string(cantidadLiquido)+ "ml");
//PORCENTAJE
lcd.setCursor(0,1);
lcd.Print(string(porcentaje)+"%")
serial.print(media);
serial.println("cm")

serial.print(cantidadLiquido);
serial.println("ml");
{
else
}
lcd.SetCursor(0,0);
lcd.print("Calculando:"+ string(lecturaActual));
}
delay(500);
}
//METODO que inicia la secuencia del -trigger para comezar a medir
void iniciarTriger()
{
//PONEMOS EL TRIIGER EN ESTADO BAJO Y ESPERANDOS 2MS
digitalWrite(pinTrig, HIGH);
delayMicroseconds(2);
//PONEMOS EL PING TRIGGER EN ESTADO ALTO Y ESPERAMOS 10MS
digitalWrite(PingTrig,HIGH);
delayMicroseconds(10);
//Comenzamos poniendo el pin Trigger en estado bajo
digitalWrite(PinTrig, LOW);

}
}
}

Serial.print(media);}
Serial.println("cm");
Serial.print(cantidadLiquido);
Serial.println("ml");
}
delay(500);
}
//Metodo que inicia la secuencia del Trigger para comenzar a medir
void iniciarTrigger()
{
//ponemos al Trigger en estadi bajo y esperamos 2ms}
digitalWrite(PinTrig, LOW);
delayMicrosecond(2):
//Ponemos el pin Trigger a estado alto y esperamos 10 ms
digitalWrite(pinTrig, HIGH);
delMicrosecond(10);
//comenzamos poniendo el pinTrigger en estado bajo
digitalwrite(PinTrig, LOW);
}

{
lcd.setCursor(0,0);
lcd.print("hola Mundo!!!!!");
lcd.setCursor(0,1);
lcd.print("Probando el LCD");
}
// Ponemos el Ping -Trigger a estado alto y esperamos 10 ms
digitalWrite(PinTring, HIGH);
delayMicroseconds(10);
//COMENZAMOS PONIENDO EL pin Trigger en estado bajo
digitalWrite(PingTring, LOW);
}

También podría gustarte