# 4.5 Posibilidad ultrasonidos

Se puede conseguir más precisión añadiendo un tercer sensor y mucho más preciso: El **sensor de Ultrasonidos.** ![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-jihe9pcu.png)

Mira en [esta página](https://catedu.github.io/programa-arduino-mediante-codigo/sensor_de_ultrasonidos.html) para saber cómo se utiliza con el Arduino.

Básicamente se emite un pulso por el pin **Trigger**, él emite una señal de 40kHz y según el eco recibido saca por **Output** un pulso cuyo ancho es proporcional a la distancia:

![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-zptguic9.jpeg)

## Conexión en alphabot

En Alphabot se conectaría los cables en el conector blanco de abajo y el ultrasonidos con unos tornillos en los dos agujeros de la parte delantera:

![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-mrvffzwq.jpeg)

El sensor de ultrasonidos tiene que estar adaptado a los cables compatibles con la Shield Grove de Arduino. Por ejemplo [este](https://www.seeedstudio.com/Grove-Ultrasonic-Ranger-p-960.html):

![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-bjkrst2b.jpeg)

CHAPUZA : No tiene su [orden standard GND-Vcc-DATA1-DATA2](http://wiki.seeedstudio.com/Grove_System/) sino es GND-DATA1-DATA2-VCC o sea GND-Trg-Echo-5V luego habría que hacer alguna chapucilla de intercambiar cables, habría que elegir unos cables largos, cortarlos e intercambiarlos o poner cables Dupon H-H y conectar cada cable en su lugar correspondiente:

![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-wvqz1frf.jpeg)

Para sujetar el sensor ultrasonidos al chasis habría que comprar un soporte:

![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-ucoztyod.png)

Otra opción es quitar la cámara y poner el sensor de ultrasonidos:

![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-ua2ae7gj.png)

# EL KIT DE CATEDU NO PROPORCIONA EL SENSOR ULTRASONIDOS

### Bueno, si aún así me decido ponerlo ¿cómo se programa?

Muy fácil, el conector blanco de abajo está conectado con los siguientes GPIO:

- Echo en el GPIO 5
- Trigger en el GPIO 17

Por lo tanto, viendo la teoría, una posible función en código Python para utilizarlo sería:

- Emitir un pulso alto por TRIG durante 15 microsegundos.
- Esperar el pulso alto de ECHO
- Cronometrar el pulso alto de ECHO
- La distancia será velocidad por tiempo o sea: la diferencia el tiempo del pulso ECHO multiplicado por la velocidad del sonido y dividido por 2 pues es el recorrido del sonido ida y vuelta.

```cpp+lineNumbers:true

TRIG = 17 ECHO = 5

GPIO.setup(TRIG,GPIO.OUT,initial=GPIO.LOW) GPIO.setup(ECHO,GPIO.IN)

def Distance(): GPIO.output(TRIG,GPIO.HIGH) time.sleep(0.000015) GPIO.output(TRIG,GPIO.LOW) while not GPIO.input(ECHO): pass t1 = time.time() while GPIO.input(ECHO): pass t2 = time.time() return (t2-t1)\*34000/2

```
```

```