/*β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„
β˜„                                                                            β˜„
β˜„      ☘ DATOS GENERALES:                                                    β˜„
β˜„      NOMBRE:      Sensor ultrasΓ³nico de distancia.                         β˜„
β˜„      FECHA:       19 de febrero de 2024.                                   β˜„
β˜„      VERSIΓ“N:     1.0.                                                     β˜„
β˜„                                                                            β˜„
β˜„      AUTOR:       M. en C. Esli Castellanos BerjΓ‘n.                        β˜„
β˜„      E-MAIL:      [email protected].                                β˜„
β˜„      COMPAÑÍA:    Universidad de Colima - Facultad de TelemΓ‘tica.          β˜„
β˜„                                                                            β˜„
β˜„      uC:          ESP32-D0WD Dual Core.                                    β˜„
β˜„      Nombre:      ESP32-S.                                                 β˜„
β˜„                                                                            β˜„
β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„
β˜„                                                                            β˜„
β˜„      ☘ DESCRIPCIΓ“N DEL PROGRAMA:                                           β˜„
β˜„      Arquitectura de software para configurar y obtener la hora de un      β˜„ 
β˜„      RTC (Real Time Clock).                                                 β˜„
β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„
β˜„                                                                            β˜„
β˜„      ☘ NOTAS:                                                              β˜„
β˜„      ESP32 requiere instalar el driver para el USB Bridge                  β˜„
β˜„      (https://bit.ly/357gDVA).                                             β˜„
β˜„      Cuando no sube automΓ‘ticamente el cΓ³digo hay que dejar presionado     β˜„
β˜„      el botΓ³n "boot" cuando aparezca la barra de "connecting".              β˜„
β˜„                                                                            β˜„
β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„β˜„*/

/*~ Pines PWM disponibles (verificar que no se deshabiliten al usar WiFi o que no afecten el boot) ~*/
#define TRIGGER 2
#define ECHO 3

/*~ Velocidad del sonido en cm/us ~*/
#define VELOCIDAD_SONIDO 0.034  

void setup ( void ) {

  Serial.begin ( 115200 ); 
  pinMode ( TRIGGER, OUTPUT ); 
  pinMode ( ECHO, INPUT ); 

}

void loop ( void ) {
 
  Serial.print ( "Distancia en cm: " );
  Serial.println ( obtener_distancia ( ) );
  delay ( 1000 );
  
}

float obtener_distancia ( void ) {

/*~ Estas instrucciones son proporcionadas por el fabricante del sensor, cambiarlas puede hacer que las muestras sean Γ©rroneas ~*/
/*~ Inicializar en bajo ~*/
  digitalWrite ( TRIGGER, LOW );
    delayMicroseconds ( 2 );

/*~ Esperar que llegue la seΓ±al durante 10 microsegundos para obtener la muestra ~*/
  digitalWrite ( TRIGGER, HIGH );
    delayMicroseconds ( 10 );

  digitalWrite ( TRIGGER, LOW );

  return ( pulseIn ( ECHO, HIGH ) * VELOCIDAD_SONIDO / 2 );

}