# 1.6 GPIO Vamos a recordar lo que vimos [aquí](https://catedu.github.io/raspberry-muy-basico/2-gpio.html), dos cosas: - Estos son los pines GPIO con la numeración BCM: ![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-otkebn2n.png) - Están diseñados para 3.3V sólo proporcionan 3mA cada pin luego NO conectes diréctamente componentes de 5V ni que consuman más corriente o de lo contrario ESTROPEARÁS LA RASPBERRY DE FORMA IRREVERSIBLE, o sea, directamente sólo LEDs con una resistencia de mínimo 1.1K tal [y como vimos aqui](https://catedu.github.io/raspberry-muy-basico/2-gpio.html), todo lo demás a través de chips drivers, por eso utilizamos este kit comercial. En nuestro rover la conexión es la siguiente: ![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-gktp1vcx.jpeg) ## Librería RPI.GPIO Necesitamos una librería GPIO que Raspbian lo tiene por defecto, pero por si acaso ejecuta estas instrucciones: ```shell sudo apt-get install python-dev sudo apt-get install pyton-rpi.gpio ``` Normalmente te dirá que las tienes instaladas en su última versión. Para utlizar la librería, simplemente tenemos que poner esta instrucción: **import RPi.GPIO as GPIO** ## GPIO.setmode y GPI.setup Hay dos formas de utilizar la numeración de las GPIO, respetando la misma numeración que los pines de la placa, entonces la instrucción que tenemos que poner en nuestros programas es `GPIO.setmode(GPIO.BOARD)` o utilización de la numeración `BCM GPIO.setmode(GPIO.BCM)` nosotros elegiremos esta última por ser más sencilla, aunque tiene la desventaja de que si cambian en el futuro la numeraciones en los BCM nuestro programa no servirá. Una vez definido qué numeración usamos, tenemos que especificar en nuestro programa si tal GPIO es entrada o salida, por ejemplo la siguiente instrucción define el GPIO número 4 como entrada (7 en numeración BOARD) `GPIO.setup(4, GPIO.IN)` ## ¿Qué es lo que hay conectado en cada puerto GPIO de este rover? Pues aquí lo tienes, cada uno lo vamos a ver a lo largo de este curso :
InterfacesPuertos GPIO de la Raspberry Pi nomenclatura BCM
IN1 motores12
IN2 motores13
ENA motores6
IN3 motores20
IN4 motores21
ENB motores26
Sensor velocidad derecha7
Sensor velocidad izquierda8
Sensor IR obstáculos derecha16
Sensor IR obstáculos izquierda19
Sensor IR mando distancia18
Siguelineas CS5
Siguelíneas Clock25
Siguelíneas Address24
Siguelíneas DataOut23
Servo brazo eje X22
Servo brazo eje Z27
## Ejemplo de utilización de la librería RPI.GPIO El siguiente ejemplo enciende un LED puesto en el GPIO 4, durante 2 segundos ```Python import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(4, GPIO.OUT) ## GPIO 4 como salida GPIO.output(4,True) ##encendemos time.sleep(2) ## espera 2 segundos GPIO.output(4,False) ##APAGAMOS ``` **No lo hagas** pues en el 4 de este rover no hay puesto nada, mira el [plano esquemático](https://www.waveshare.com/w/upload/b/b1/AlphaBot_Schematic.pdf) y en P4 (pin 7 real del conector RPI1) no hay nada conectado. ![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-sfyl05fj.jpeg)