sábado, 27 de febrero de 2016

Introducción al GPIO, Parpadeo de un LED

Si por algo destaca la Raspberry Pi cuando se compara con algún otro ordenador, es tu tamaño ese conjunto de "conexiones" a las que aparentemente no le encontramos mucho sentido. Este conjunto de conexiones son más bien conocidos como pines GPIO, del ingles General Purpose Input/Output, lo que viene siendo, entradas o salidas sin un propósito establecido. Es aquí donde el friki de la electrónica usuario avanzado empieza  a entender porque se ha popularizado tanto la Raspberry Pi.


Como bien sus siglas indican, estos pines sirven en esencia para entrada y salida de datos, aún que hay algunos que tienen otras funciones, como uno dedicad a tierra, (GND) o alimentación de 3,3/5V y más que ya iremos viendo en otras entradas. Los pines que hoy utilizaremos son los que se pueden programar como entrada o salida, en ambos casos un 0 representará 0V y un 1 3,3V.




Visto esto, podemos hacer un simple circuito en el que la alimentación de un LED sea uno de los pines de la Raspberry programado como salida. A continuación está el esquema de montaje, es tan sencillo como conectar el LED en serie con una resistencia de 1k o 220 ohmios simplemente para limitar la corriente del circuito.



Una vez conectado, necesitamos de algún programa que controle este dispositivo y para ello lo más sencillo es escribir un programa en C, es necesario descargar e instalar la librería wiringPi con la que la programación será muy sencilla, a continuación os dejo un código de un ejemplo de un LED parpadeando 10 veces en intervalos de 500 mili-segundos.

LED.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include < wiringPi.h > 
#include < stdio.h >

#define PIN 4

int main() {

    printf("Parpadeo de led\n");

    if (wiringPiSetupGpio() == -1) {
        printf("Error en wiringPiSetup, saliendo del programa\n");
        return 0;
    }

    pinMode(PIN, OUTPUT);

    int i;

    for (i = 0; i < 10; i++) {

        printf("LED ON\n");
        digitalWrite(PIN, 1);
        delay(500);

        printf("LED OFF\n");
        digitalWrite(PIN, 0);
        delay(500);
    }
    return 0;
}

Para compilar el código, abriremos un termina y nos dirigiremos a la ruta en la que está el archivo LED.c, usando el comando "cd", seguidamente ejecutaremos este par de comandos:

sudo gcc LED.c -o LED -lwiringPi
sudo ./LED

El primer comando nos compila el archivo, cal destacar que es necesario añadir
-lwiringPi ya que es la forma de enlazar la librería wiringPi a nuestro programa. Los dos comandos hemos de ejecutarlos en modo súper usuario ya que sino la librería wiringPi no puede ejecutarse.

Si todo ha ido bien, podremos observar el LED parpadeando unas cuantas veces, os invito a jugar un poco con el tema de los pines y si están en entrada/salida y en caso de que estén en salida podéis hacer el experimento de dejarlos en HIGH o "1" y una vez acabado el programa usar el comando readall que ya vimos cuando instalamos la librería para comprobar su estado.

Cómo último apunte me gustaría aclarar que yo estoy utilizando nomenclatura Broadcom para hacer mis programas, si queréis saber más sobre esta distinción os invito a dar un vistazo a esta entrada sobre el tema.

No hay comentarios:

Publicar un comentario