/*
El siguiente proyecto tiene como finalidad sensar el nivel del agua utilizando un sensor
de proximidad de ultrasonido junto con un indicador de LEDS.
*/
#include <TimerOne.h>
volatile bool FLAG = false;
int TRIG = 10;
int ECO = 9;
int LED_1 = 2;
int LED_2 = 3;
int LED_3 = 4;
int LED_4 = 5;
int LED_5 = 6;
int BUZZER = 8;
long DURACION;
int DISTANCIA;
void estado();
void setup() {
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECO, INPUT);
pinMode(LED_1, OUTPUT);
pinMode(LED_2, OUTPUT);
pinMode(LED_3, OUTPUT);
pinMode(LED_4, OUTPUT);
pinMode(LED_5, OUTPUT);
pinMode(BUZZER, OUTPUT);
Timer1.initialize(10000);
Timer1.attachInterrupt(estado);
}
void loop() {
digitalWrite(TRIG, HIGH);
delay(1);
digitalWrite(TRIG, LOW);
DURACION = pulseIn(ECO, HIGH);
DISTANCIA = DURACION / 58,2;
delay(200);
if(DISTANCIA <= 250 && FLAG == true) // Encender el primer LED.
{
digitalWrite(BUZZER, HIGH);
delay(DISTANCIA);
tone(8,262,250);
digitalWrite(BUZZER, LOW);
FLAG = false;
}
if(DISTANCIA <= 250) // Encender el primer LED.
{
digitalWrite(LED_1, HIGH);
}
if(DISTANCIA > 250)
{
digitalWrite(LED_1, LOW);
}
if(DISTANCIA <= 140) // Encender el segundo LED.
{
digitalWrite(LED_2, HIGH);
}
if(DISTANCIA > 140)
{
digitalWrite(LED_2, LOW);
}
if(DISTANCIA <= 80) // Encender el tercer LED.
{
digitalWrite(LED_3, HIGH);
}
if(DISTANCIA > 80)
{
digitalWrite(LED_3, LOW);
}
if(DISTANCIA <= 50) // Encender el cuarto LED.
{
digitalWrite(LED_4, HIGH);
}
if(DISTANCIA > 50)
{
digitalWrite(LED_4, LOW);
}
if(DISTANCIA <= 20) // Encender el quinto LED.
{
digitalWrite(LED_5, HIGH);
}
if(DISTANCIA > 20)
{
digitalWrite(LED_5, LOW);
}
}
void estado()
{
FLAG = true;
}