Blink en Raspberry con WiringPi – Lección 4

En este tutorial crearemos un programa en C/C++ para hacer parpadear un LED, conocido como Blink en Raspberry Pi con WiringPi. Las clases de Wiringpi son muy similares a las de Arduino. Este ejemplo lo programaremos usando un editor de texto y compilamos usando la terminal. Es importante mencionar que este tutorial forma parte de una serie de lecciones cuyo objetivo es enseñarte como poder programar una Raspberry PI 3 B+. Para poder entender un poco más a este tutorial te recomiendo que primero veas el uso de comandos Linux en nivel básico y cómo Compilar C++ en G++ Linux en terminal.

Lección anterior: cómo Controlar una Raspberry PI remotamente con SSH o VNC.

Blink en Raspberry con WiringPi - Lección 4
Imagen 1. Conexión de un LED a una Raspberry PI 3 B+ con wiringpi.

Para este tutorial seguiremos los siguientes pasos:

  1. Crear mediante la terminal, un archivo de nombre ejemplo1.cpp.
  2. Posteriormente escribiremos el código para hacer parpadear un LED en una Raspberry con WiringPI.
  3. Después se compila usando la terminal.
  4. Finalmente ejecutaremos en la terminal, nuevamente, el programa compilado.

Paso # 1 – Crear un archivo de c++ en Raspbian

Para crear un archivo de c++ en Raspbian, tenemos que abrir una terminal y teclear el siguiente comando:

nano ejemplo1.cpp

El programa nano es un editor de texto que funciona en la misma terminal. Por ejemplo, esto nos permite poder crear o editar programas en C++ o archivos generales, usando la conexión remota por SSH.

Una alternativa a nano puede ser el programa geany. Geany es un editor de texto visual. La única restricción es que esté no puede ser ejecutado en terminal, sino que requiere de un entorno gráfico. Para esta restricción, podría usarse el VNC Viewer.

Paso # 1 - Crear un archivo de c++ en Raspbian
Imagen 2. Paso # 2, crear un programa en cpp usando la terminal y el programa nano

Ahora procederemos a programar el código que nos permitirá activar un led mediante un pin de la tarjeta Raspberry PI. A Continuación procederemos a escribir el siguiente programa:

Una vez que hemos terminado de copiar o de escribir el programa, se procederá a cerrar el programa nano. Para cerrar el programa nano, se requiere presionar dos teclas simultáneamente. Entonces para cerrar se presiona la tecla ctrl y la tecla X, simultáneamente. Posteriormente el programa nano te preguntará que si quieres guardar los cambios a lo que escribimos Y o S para Yes o Sí y el programa nos regresará a la terminal.

Biblioteca wiringPi para blink en Raspberry

La biblioteca wiringPi se diseñó para tener funciones y clases lo más parecido posible al lenguaje Arduino. En este programa se están usando las funciones de wiringPi digitalWrite y pinMode. Para poder usar esta biblioteca se requieren dos cosas.

  1. Agregar la biblioteca al proyecto con la instrucción: #include<wiringPi.h>
  2. Finalmente ejecutar en una sóla ocasión la función: wiringPiSetup();

También es importante mencionar que los pines que se asignan a dicha biblioteca, son distintos de los asignados al microprocesador. En la Imagen 4. Se muestran los pines asociados con la biblioteca de wiringPi. Los pines de wiringPi para la Raspberry PI 3+ son 28. Cabe mencionar que son pines de propósito general GPIO, es decir, que pueden ser usados tanto como entradas como salidas digitales. Por otro lado no estoy considerando los pines de los puertos seriales (UART, SPI, I2C).

Una forma alternativa de averiguar las conexiones tanto de los pines del microprocesador BCM2835 o de la biblioteca wiringPi. En la Imagen 3 se aprecia el resultado de ejecutar el comando gpio readall. Finalmente se puede ejecutar en la terminal el siguiente comando:

gpio readall

comando gpio readall
Imagen 3. Resultado de ejecutar el comando “gpio readall” en Raspbian y una Raspberry PI 3 B+.
Pines de wiringPi para la Raspberry PI 3 B plus.
Imagen 4. Pines de wiringPi para la Raspberry PI 3 B plus.

Paso # 2 – Compilar la Raspberry PI con g++

Para compilar el programa en la Rasp, se requiere ejecutar el siguiente comando:

g++ -Wall -o ejecutable ejemplo1.cpp

-Wall es una bandera del compilador g++ que permite activar las advertencias en el código.

-o es una bandera que permite indicar el nombre del archivo ejecutable.g++ Es el compilador.

Compilar la Raspberry PI con g++
Imagen 4. Compilar la Raspberry PI con g++

Paso # 3 – Conectar un LED a Raspberry PI 3 B+

Para conectar un LED a Raspberry Pi, requerimos de cables jumper del tipo hembra-macho. Por ejemplo, de acuerdo al programa anterior conectaremos el LED al pin 0 pero al que se refiere la biblioteca de wiringpi. Esto es el pin 9 del conector de 40 pines. Por otro lado la nomenclatura y arreglo de pines en un conector macho es que en la parte izquierda estan los pines impares y el la derecha los pines pares. Si contamos a partir del pin 1, es el pin número 6 de los pines impares, el cual sería el pin número 11 del conector. Finalmente en la Imagen 5 se muestra la conexión necesaria para conectar un LED al pin 0 (de wiring PI, ver Imagen 4). Es importante mencionar que se requiere de una resistencia que limite la corriente del diodo LED, ya que de otro modo, el pin puede dejar de funcionar si se le “pide” más corriente de la que esté puede suministrar.

Conexion de un LED a una Raspberry PI B 3 plus
Imagen 5. Conexión de un LED con la Raspberry PI 3 y la biblioteca Wiring en Raspbian.

Paso # 4 – Ejecutar el programa

Para ejecutar el programa que se compilo en el paso 3, se requiere ejecutar el siguiente comando. Si todo está bién verás parpadear al LED. Es posible que el usuario de la Raspberry PI no tenga permiso de usar los puertos, por lo que puedes agregar antes del comando la palabra sudo y un espacio para evitar este problema.

./ejecutable

Escríbenos tus dudas o comentarios

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Usamos Cookies en nuestro sitio WEB

Por favor confirma, si aceptas nuestras cookies de rastreo. También puedes negar el uso de cookies de rastreo y seguir navegando sin que ninguna información sea enviada a servicios de terceros.