#define LED 26
#define TRIG 12
#define ECHO 14
float distancia;
float tempo;
volatile int contador = 0;
volatile bool echoDetectado = false;
volatile int contadorAnterior = 0;
void IRAM_ATTR echoRetornou(){
echoDetectado = true;
if(distancia < 50){
contador++;
}
}
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(115200);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
attachInterrupt(digitalPinToInterrupt(ECHO), echoRetornou, RISING);
}
void loop() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
tempo = pulseIn(ECHO, HIGH);
distancia = (0.034 * tempo) / 2;
if(contador > contadorAnterior){
digitalWrite(LED, HIGH);
Serial.print("Contador: ");
Serial.println(contador);
contadorAnterior = contador;
delay(500);
digitalWrite(LED, LOW);
}
delay(500); // this speeds up the simulation
}