#include <Servo.h>
#define trigC 2
#define echoC 11
#define trigT 4
#define echoT 9
int led = 7;
long ultled;
long timing = 100;
int distC = 0;
int distT = 0;
int aberto, waste;
int ledstate = 0;
Servo servo;
void setup() {
pinMode(trigC, OUTPUT);
pinMode(echoC, INPUT);
pinMode(trigT, OUTPUT);
pinMode(echoT, INPUT);
servo.attach(3);
Serial.begin(9600);
}
void loop() {
long tempo = millis();
//distancia Pé
digitalWrite(trigC, HIGH);
delayMicroseconds(10);
digitalWrite(trigC, LOW);
distC = pulseIn(echoC, HIGH) * 0.034 / 2;
//distancia tampa
digitalWrite(trigT, HIGH);
delayMicroseconds(10);
digitalWrite(trigT, LOW);
distT = pulseIn(echoT, HIGH) * 0.034 / 2;
waste = map(distT, 2, 49, 100, 0);
//bora de servo
if(distC > 30){ //ninguem detectado
servo.write(0); //tampa fechada
aberto = 0;
}
else if(distC < 30){ //alguem detectado
servo.write(90); //tampa aberta
aberto = 1;
}
//agora bora ver se essa merda ta cheia
if(aberto == 1){ //quebrado
digitalWrite(led, LOW);
}
else if(aberto == 0 && waste >= 95){
//lcd.print("Cheia. ");
digitalWrite(led, HIGH);
//led acesso constante
}
else if(aberto == 0 && waste >= 6 && waste < 95){
//lcd.print("Enchendo ");
if(waste > 80){
if(tempo - ultled > 300){
digitalWrite(led, ledstate);
ledstate = !ledstate;
ultled = tempo;
//led piscando
}
} else{
digitalWrite(led, LOW);
//led desligado
}
}
else if(aberto == 0 && waste < 5){
//lcd.print("Vazia ");
digitalWrite(led, LOW);
//led desligado
}
Serial.print("Enchimento: ");
Serial.print(waste);
Serial.println("%");
}