#define TRIGGER 13
#define ECHO 12
#define LED1 2
float medeDistancia(){
digitalWrite(TRIGGER, LOW);
delayMicroseconds(3);
digitalWrite(TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER, LOW);
int pulso = pulseIn(ECHO, HIGH);
return pulso/58;
}
void piscaLed(int frequencia) {
/*Acende e apaga em ciclos, se frequencia = 1, 1 segundo aceso e 1 segundo apagado*/
uint64_t tempo = millis();
int resto = frequencia * tempo%2000;
if(resto <= 1000) digitalWrite(LED1, LOW);
else digitalWrite(LED1,HIGH);
}
void setup() {
// put your setup code here, to run once:
// Serial.begin(9600);
pinMode(TRIGGER, OUTPUT);
pinMode(ECHO, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
delay(1);
float distancia = medeDistancia();
// Serial.println("Distância: " + (String) distancia);
if(40 <= distancia && distancia < 50) piscaLed(1);
else if (30 <= distancia && distancia < 40) piscaLed(2);
else if (20 <= distancia && distancia < 30) piscaLed(4);
else if (10 <= distancia && distancia < 20) piscaLed(8);
else if (distancia < 10) digitalWrite(LED1, HIGH);
else digitalWrite(LED1, LOW);
}