#define SOUND_SPEED 0.034
int trigPin = 5;
int echoPin = 18;
int VE = 2; //VE valvula de entrada
int VS = 4; // valvula de saida
int SNMA = 14; // sensor de nivel minimo
int SNMI = 12 ; //sensor de nivel maximo
int varSNMA = 0;
int varSNMI = 0;
int lednormal = 13; // led de funcionamento normal (verde)
int alarme = 27; // led alarme (vermelho)
float nivel; //nivel dado pelo sensor ultrassonico
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(SNMA, INPUT);
pinMode(SNMI, INPUT);
pinMode(VE, OUTPUT);
pinMode(VS, OUTPUT);
pinMode(lednormal, OUTPUT);
pinMode(alarme, OUTPUT);
}
float readDistanceCM() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
int duration = pulseIn(echoPin, HIGH);
return duration * SOUND_SPEED / 2;
}
void loop() {
float distance = readDistanceCM();
bool isNearby = distance < 45;
digitalWrite(VE, isNearby);
Serial.print(" DISTANCIA MEDIDA: ");
Serial.println(readDistanceCM());
digitalWrite(VE, HIGH);
delay(1000);
bool isFar = distance > 55;
digitalWrite(VS, isFar);
Serial.print(" DISTANCIA MEDIDA: ");
Serial.println(readDistanceCM());
digitalWrite(VS, HIGH);
delay(1000);
varSNMI = digitalRead(SNMI);
varSNMA = digitalRead(SNMA);
if(varSNMA==LOW){ //sensor nivel maximo desativado
digitalWrite(lednormal,HIGH);
digitalWrite(VE, HIGH); //liga valvula de entrada
}
else if(varSNMA==HIGH){//sensor de nivel maximo ativado
digitalWrite(alarme,HIGH); //liga o alarme
digitalWrite(VE, LOW); //desliga valvula de entrada
Serial.print("Sensor de nivel maximo ativado");
}
//SENSOR DE NIVEL MINIMO
if(varSNMI==LOW){
digitalWrite(lednormal,HIGH);
}
else if(varSNMI==HIGH){
digitalWrite(alarme,HIGH); //liga o alarme
digitalWrite(VS, LOW); //desliga valvula de saida
digitalWrite(VE, HIGH); //liga valvula de entrada
Serial.print("Sensor de nivel minimo ativado");
}
delay(10); // this speeds up the simulation
}