TUTORIAL RASPBERRY PI - GPIO [PARTE 1]: CONTROL DE UN LED

TUTORIAL RASPBERRY PI - GPIO [PARTE 1]: CONTROL DE UN LED

raspberry pi gpio led tutorial PORTADA

¡Hola! En este tutorial voy a explicar de una manera muy sencilla cómo acceder a los puertos GPIO de la Raspberry Pi con el fin de encender y apagar un LED. Voy a hacer varias partes de esto y, como podéis ver en el título, esta es la primera.

Antes de nada, vamos a coger un LED y un par de cables y lo vamos a conectar al GPIO 17 y a tierra (GND) de la Raspberry Pi.

Debe quedar algo parecido a esto:

raspberry pi gpio led tutorial

La manera de la que vamos a acceder a los GPIO (en este caso al 17) es como si fuesen directorios. Podemos utilizar comandos como 'ls', 'cat' o 'echo', entre otros, para conocer la estructura y contenidos de los directorios.

Ahora mismo no tenemos ningún pin accesible. Ni de entrada ni de salida. Tenemos que crearlo nosotros mismos. Queremos tener acceso al GPIO 17, así que introducimos el siguiente comando:

echo 17 > /sys/class/gpio/export

Tras esto, el sistema ha creado un archivo con una estructura GPIO que corresponde al número 17. A continuación, tenemos que informar a la Raspberry Pi de si el pin va a ser de salida o de entrada. Como lo que queremos es encender un LED, el GPIO 17 será de salida. Introducimos el siguiente comando:

echo out > /sys/class/gpio/gpio17/direction

Con esto, el sistema ya sabe que el pin será de salida. Ahora tendremos que darle valores. Existen dos posibles: '0' y '1'.

Para encender el LED:

echo 1 > /sys/class/gpio/gpio17/value

 Para apagar el LED:

echo 0 > /sys/class/gpio/gpio17/value

Una vez hayamos acabado de encender y apagar el LED, tendremos que eliminar la entrada GPIO creada, es decir, el GPIO 17. Para ello introduciremos el siguiente comando:

echo 17 > /sys/class/gpio/unexport

Con esto, ya sabemos crear, eliminar y cacharrear con los pines GPIO para encender y apagar LEDs. Todos sabemos que esto es algo incómodo, así que lo ideal sería crear un programa, por ejemplo en Python, que nos ayude a gestionar nuestros GPIO. Esto lo dejaremos para el siguiente tutorial.

¡Un saludo!

Deja un comentario


27 comentarios


Brian · Hace 3 meses

Hola, soy nuevo con la raspberry pi, y quiero encender y apagar leds para una maqueta. ¿Qué le necesito instalar a la raspberry, qué sistema operativo?, o con cualquier sistema operativo (para la raspberry) se puede introducir los códigos que vienen en este tutorial. Gracias.

Rogelio alonso · Hace 8 meses

Y pues el semaforo lo tengo que programar en mono/ c#

Rogelio alonso · Hace 8 meses

Hola buen dia!!! Podrias ayudarme, quiero hacer un semaforo pero me habían explicado que tenia que intalar nuget, solo que no logro saber como, podrias ayudarme.

Martin Alaniz · Hace 1 año

Hola, como estan? Me sale el siguiente error me dice acceso denegado y no le puedo cambiar la direccion ni nada, no se que paso, antes en python me andaba bien, y ahora tampoco me deja ahi. alguien me ayuda por favor.

luis gutierrez · Hace 9 meses

prueba con el comando sudo antes de cada linea

luis gutierrez · Hace 9 meses

prueba con el comando sudo antes de cada linea

luis gutierrez · Hace 9 meses

prueba con el comando sudo antes de cada linea

Pablo Villota · Hace 1 año

Porque no es necesario conectar una resistencia???

Fernando Vega · Hace 1 año

por que el voltaje es del pin 17 es de 3.3V. No se quema el LED con ese voltaje. En cambio, con 5V se necesita una resistencia, ya que es mucha energía para un LED y este se quemaría de no tenerla

Jorge · Hace 1 año

Concreto, claro y simple, lo único que tuve que hacer previo fue asegurarme de que estuviera instalado lo de python-dev. ¡Esperemos más tutoriales para seguir aprendiendo!

CR · Hace 2 años

Hola! coloco en la protoboard (GPIO 17 y 6(GND) en el led) todo como indicas y nada más encender la rapsberry se enciende el led. Luego cuando ejecuto los comandos no hace nada... no se apaga con: echo 0 > /sys/class/gpio/gpio17/value y continua encendido. ¿Que puede estar pasando?

Rammstein Add · Hace 1 año

creo saber por que te paso eso!! fíjate muy bien en que pin lo estas colocando, el GPIO17 NO indica que estas en el pin Numero 17... En este caso, el GPIO17 es el pin numero 11 Suerte!! pd: tuve el mismo problema y no podía entender porque no me funcionaba, hasta que mire bien y estaba trabajando sobre el pin 17.. jajajja

Julian · Hace 1 año

lo conseguiste solucionar¿

Tutorial Raspberry Pi - GPIO y MQTT (Parte 1) | Geeky Theory · Hace 2 años

[…] el  tutorial Raspberry Pi – GPIO [parte 1]: control de un LED, de Mario, nos enseñaba cómo controlar un LED conectado a la Raspberry Pi. En este tutorial me […]

ismael · Hace 2 años

Hola buenas!! he seguido tus instrucciones para encender un led y me enciende pero luego no soy capaz de apagarlo porque puede ser posible? Gracias!!

Antonio Rosado · Hace 2 años

Buenas! Estoy montando un XBMC con la RaspberryPi y necesito poder activar un relé al encender la Raspberry teniendo ya la alimentación puesta. Había pensado que buscar una salida de 5v de la Raspberry solo cuando estuviera encendida pero no encuentro. Ahora solo me queda hacerlo con un script pero es que no tengo la remota idea de como se puede hacer esto. La función que haría seria activar el relé al encenderse para encender un concentrador USB donde tengo el disco duro así poder apagarlo sin necesidad de utilizar un interruptor. No se si me he explicado bien ;) Espero vuestra ayuda! Saludos!

gaznapiro tuercas · Hace 2 años

buenos dias!!! en ese mismo proyecto, como puedo en lugar de encender un led encender un foco de 110v??

Armando Hernandez · Hace 2 años

Hola necesitas utilizar algún amplificador, lo mas simple sería utilizar un relevador de 5 Volt junto con algún tipo de transistor para obtener un contacto seco. Yo te recomiendo un optoacoplador debido a que tu circuito electrónico queda asilado y en caso de una sobrecarga la Raspberry no sufrirá ningún daño. Un saludo.

jose · Hace 2 años

hola buenas, a mi me da un error, a la hora de darle el valor 0 a value. El led está encendido nada mas conectarlo. Pero tras seguir los pasos del tutorial no se apaga. Utilizo echo 0 y cuando miro con cat value me sale que el valor es 1. Muchas gracias. ¿como puedo solucionarlo?

CR · Hace 2 años

A mi me ocurre lo mismo ¿pudiste solucionarlo?

salvador · Hace 2 años

Muchas gracias !!!!!!! Jajajaja nunca pensé que me alegraría tanto ver como se enciende un led

Mario Pérez Esteso · Hace 2 años

¡Nunca subestimes el poder de una lucecita!

Sarah · Hace 2 años

Muchas gracias, me sirvió mucho. ¿Podrías hacer un post donde expliques como mandar tramas de la raspberry a una computadora?

Stenopus Spinosus · Hace 2 años

Muchas gracias, muy útil y claro.

parcpaes · Hace 3 años

consulta, cuando coloque los GPIO 17 y 6(GND) en el led, ya tenia configurado como out GPIO 17, y cuando coloque el valor de 0 no me apaga el led

parcpaes · Hace 3 años

Hola, cuando coloque los pines 17 y 6 a led se me encendio, y luego ejecute lo comandos que explica no apaga se queda encendido , cual es el problema?

luis rodriguez · Hace 3 años

pero esto lo introduzco en la terminal?

iwihi · Hace 3 años

Todo funciona, muchas gracias.

Mario Pérez Esteso · Hace 3 años

Gracias a ti por ponerlo en práctica :)

miguel angel Beltran · Hace 3 años

una consulta, sera posible usar el puerto SPI del PGIO con Gambas para tomar los datos enviados a esta? y si de ser así, habrá algún ejemplo de este??

Mario Pérez Esteso · Hace 3 años

Hola Miguel Ángel. La verdad es que nunca he hecho algo así. No puedo ayudarte en este caso. Me gustaría que pusieses cómo hacerlo en caso de que resuelvas tu duda. ¡Un saludo!

Ricardo · Hace 3 años

Gran aporte!, este tutorial es para la raspi rev A, verdad?

Alfredo Soriano · Hace 3 años

Hola! mira pongo eso en el terminal y me sale un mensaje que pone : Bash: sys/class/gpio/export: Permiso denegado. Como soluciono esto ? gracias!

Jefferson Jair Arcos Erazo · Hace 3 años

Creo que es /sys/.... y lo de permiso denegado es porque deberías necesitas ser sudo antes de la instrucción osea "$ sudo /sys/class/gpio/export" Saludos desde Colombia

Cesar · Hace 2 años

Tampoco me funciona eso!!:(

qwerty · Hace 2 años

me pasa lo mismo, encontraste solución? Creo que es por modificar el nombre de usuario "pi", cuando uso el usuario root funciona perfecto.

TUTORIAL RASPBERRY PI – GPIO [PARTE 2]: CONTROL DE LEDs CON PYTHON | Geeky Theory · Hace 3 años

[…] a todos y a todas! Hace unos días que publiqué un tutorial sobre cómo encender y apagar un LED con la Raspberry Pi. Lo hacíamos a través de la terminal. Ahora vamos a escribir un pequeño programa en Python que […]

Jose Luis · Hace 3 años

Perfecto para principiantes, incluso a mi me ha funcionado. Gracias.

Mario Pérez Esteso · Hace 3 años

Me alegro Jose Luis. Pronto publicaremos la segunda parte. ¡Un saludo!

Control de los GPIO de la Raspberry Pi, apagar y encender leds - Raspberry Pi | Raspberry Pi · Hace 3 años

[…] Seguir leyendo el tutorial | GeekyTheory […]

bernat · Hace 3 años

Yo lo uao para controlar si tengo archivos pendientrs de sincronizar con bittorrentsync (es decir pelis o series desde sickbeard)

adr · Hace 2 años

Yo intentare tener 3 leds para controlar 3 maquinas, si una de ellas se cae por algun motivo encendera el led correspondiente a la maquina, asi intentare tener siempre al aire mis computadoras cuando exista alguna falla.

Mario Pérez Esteso · Hace 3 años

Interesante utilidad esa. Me gustaría saber más sobre ello :)

sergiers · Hace 3 años

Buf, ya iba siendo hora de un tuto de GPIO, esperando con ansias a ver hasta donde llegais

Mario Pérez Esteso · Hace 3 años

¡A ver a ver! Sobre la marcha se irá viendo. ¿Alguna sugerencia?

carlos vasquez · Hace 2 años

Mario Perez esteso... quiero saber si me puede ayudar con un codigo para poder controlar una maquina cnc utilizando los pines gpio de raspberry

sergiers · Hace 3 años

Sip. Conexión de una arduino a la GPIO. ¿Se puede hacer directamente?¿Existen protocolos de comunicación?¿Qué precauciones se deben tomar?¿Es la manera más optima de hacerlo?

Juan · Hace 3 años

Para eso necesitas un shifter bidireccional de 3.3v a 5v y viceversa, ya que Raspberry usa3.3 y arduino trabaja con 5. Luego la conexion es sencilla utilizando los pines del puerto serie. Saludos