const int PIN_Echo = 4; const int PIN_Trigger = 3; const int PIN_Led = 2; void setup(){ Serial.begin(115200); pinMode(PIN_Trigger, OUTPUT); pinMode(PIN_Echo, INPUT); pinMode(PIN_Led, OUTPUT); } void loop(){ int CM = ping(PIN_Trigger, PIN_Echo); //Serial.print("Distance: "); if (4 <= CM <= 400) Serial.println(CM); if (CM > 400) Serial.println("Invalid measures. Farther than 4m."); if (CM < 4) Serial.println("Invalid measures. Closer than 4cm."); digitalWrite(PIN_Led, HIGH); delay(100); digitalWrite(PIN_Led, LOW); delay(100); } int ping(int PIN_Trigger, int PIN_Echo){ long duration; long distanceCM; digitalWrite(PIN_Trigger, LOW); //para generar un pulso limpio ponemos a LOW 4us delayMicroseconds(4); digitalWrite(PIN_Trigger, HIGH); //generamos Trigger (disparo) de 10us delayMicroseconds(10); digitalWrite(PIN_Trigger, LOW); duration = pulseIn(PIN_Echo, HIGH); //medimos el tiempo entre pulsos, en microsegundos distanceCM = duration * 10 / 292/ 2; //convertimos a distancia, en mm return distanceCM; }