//0,5 segundos ligado
//0 LED - Buzzer desativado
//1 LED - Buzzer 2 segundos desligado
//2 LED - Buzzer 1,3 segundos desligado
//3 LED - Buzzer 0,8 segundos desligado
//4 LED - Buzzer 0,5 segundos desligado
//5 LED - Buzzer 0,3 segundos desligado
int pinTrig = 6;//Gatilho, manda o pulso sonoro
int pinEcho = 7;//Sensor, capta a ida e volta desse pulso
long echo;
float distancia;
long tempo;
long atual;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(pinTrig, OUTPUT);
pinMode(pinEcho, INPUT);
pinMode(3, OUTPUT);
tempo = millis();
}
void loop() {
// put your main code here, to run repeatedly:
atual = millis();
digitalWrite(pinTrig, LOW);
delayMicroseconds(10);//desliga por 10 microssegundos
digitalWrite(pinTrig, HIGH);
delayMicroseconds(10);//liga por 10 microssegundos
digitalWrite(pinTrig, LOW);
echo = pulseIn(pinEcho, HIGH);
distancia = (echo * 0.034) / 2;//cálculo para distância apenas de ida em cm
Serial.println(distancia);
if (distancia < 10){
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
if(atual - tempo < 500){//Buzzer 0.5s ligado
tone(3, 1500);//Porta 3, a 1500Hz (tom do buzzer)
}else{
noTone(3);//Depois de 0.5s, o buzzer desliga
}
if(atual - tempo > 800){/*Se passar de 0.8s, o ciclo é reinciado
(0.5s ligado, mais 0.3s desligado, que é 0.8s)*/
tempo = millis();//armazena o tempo em que esse ciclo terminou
}
}
if (distancia >= 10 && distancia < 20){
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
if(atual - tempo < 500){//Buzzer 0.5s ligado
tone(3, 1500);//Porta 3, a 1500Hz (tom do buzzer)
}else{
noTone(3);//Depois de 0.5s, o buzzer desliga
}
if(atual - tempo > 1000){/*Se passar de 1s, o ciclo é reinciado
(0.5s ligado, mais 0.5s desligado, que é 1s)*/
tempo = millis();//armazena o tempo em que esse ciclo terminou
}
}
if (distancia >= 20 && distancia < 30){
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
if(atual - tempo < 500){//Buzzer 0.5s ligado
tone(3, 1500);//Porta 3, a 1500Hz (tom do buzzer)
}else{
noTone(3);//Depois de 0.5s, o buzzer desliga
}
if(atual - tempo > 1300){/*Se passar de 1.3s, o ciclo é reinciado
(0.5s ligado, mais 0.8s desligado, que é 1.3s)*/
tempo = millis();//armazena o tempo em que esse ciclo terminou
}
}
if (distancia >= 30 && distancia < 40){
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
if(atual - tempo < 500){//Buzzer 0.5s ligado
tone(3, 1500);//Porta 3, a 1500Hz (tom do buzzer)
}else{
noTone(3);//Depois de 0.5s, o buzzer desliga
}
if(atual - tempo > 1800){/*Se passar de 1.8s, o ciclo é reinciado
(0.5s ligado, mais 1.3s desligado, que é 1.8s)*/
tempo = millis();//armazena o tempo em que esse ciclo terminou
}
}
if (distancia >= 40 && distancia < 50){
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
if(atual - tempo < 500){//Buzzer 0.5s ligado
tone(3, 1500);//Porta 3, a 1500Hz (tom do buzzer)
}else{
noTone(3);//Depois de 0.5s, o buzzer desliga
}
if(atual - tempo > 2500){/*Se passar de 2.5s, o ciclo é reinciado
(0.5s ligado, mais 2s desligado, que é 2.5s)*/
tempo = millis();//armazena o tempo em que esse ciclo terminou
}
}
if (distancia > 50){
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
noTone(3);
}
}