// --- Pines ---
#define TRG PA10 // D2
#define ECHO PB3 // D3
// Tiempo entre medidas
#define TIEMPO_MEDIDA 500 // ms
// Variables
unsigned long distancia_cm;
unsigned long t_inicio, duracion;
unsigned long t_prev = 0;
void setup() {
Serial.begin(115200);
pinMode(TRG, OUTPUT);
pinMode(ECHO, INPUT);
digitalWrite(TRG, LOW);
Serial.println("Hola.! Arranque del programa.");
}
void loop() {
if (millis() - t_prev >= TIEMPO_MEDIDA) {
t_prev = millis();
// --------- Envío del pulso Trigger ----------
digitalWrite(TRG, HIGH);
delayMicroseconds(10);
digitalWrite(TRG, LOW);
// --------- Espera a que ECHO suba ----------
while (digitalRead(ECHO) == LOW);
t_inicio = micros();
// --------- Espera a que ECHO baje ----------
while (digitalRead(ECHO) == HIGH);
duracion = micros() - t_inicio;
// Conversión a cm
distancia_cm = duracion / 58;
// --------- Envío por Serial1 ----------
Serial.print("La distancia es: ");
Serial.print(distancia_cm);
Serial.println(" cm");
}
}