Pages Menu
TwitterFacebook



BANNER2_ALT

Posted by on Ene 2, 2015 in Beaglebone | 0 comments

Beaglebone Black GPIO C++

Beaglebone Black GPIO C++

Beaglebone Black GPIO: Introducción.

Tutorial de como usar el Beaglebone Black GPIO para controlarlo con un programa en C++ y compilarlo en la tarjeta. Como continuación del tutorial previo de Beaglebone que fue la introducción de la tarjeta, aquí asumimos que ya sabemos como crear un archivo cpp, como compilarlo y como ejecutarlo. Ahora si queremos interactuar con el Hardware como ya habíamos mencionado, es recomendable hacer uso de bibliotecas externas, en este caso vamos a utilizar la biblioteca BlackLib.

Beaglebone Black GPIO

Beaglebone Black GPIO tutorial.

 

Beaglebone Black GPIO: Clases/Objetos/Funciones

Ahora, si por ejemplo necesitamos prender y activar el GPIO_30 de la tarjeta lo que tenemos que ver es que clases de la biblioteca necesitamos. Para usar los pines de propósito general vamos a usar el encabezado BlackGPIO.h que es parte de las bibliotecas de Black Lib y que ya debemos de tener en nuestra Beaglebone.

Beaglebone Black GPIO

Beaglebone Black GPIO.

Si observamos la pagina de la biblioteca en la sección “CLASSES” – “CLASS LIST” y seleccionamos BlackGPIO encontraremos una descripción detallada de todas las instrucciones de esta biblioteca para el GPIO.

http://blacklib.yigityuce.com/classBlackLib_1_1BlackGPIO.html

Primero que nada vamos a encontrar información del constructor del objeto bajo la clase BlackGPIO. En este caso podemos ver que el constructor se utiliza de la siguiente manera:

BlackLib::BlackGPIO::BlackGPIO (
gpioName pn,
direction pd,
workingMode wm = SecureMode
)

En donde nos centraremos en “pn” y en “pd”, siendo el nombre del pin y su dirección respectivamente, para el modo de trabajo vamos a asumir que dejamos modo seguro, por lo que no le vamos a hacer mucho caso por el momento. Entonces nos quedaría como sigue:

BlackLib::BlackGPIO  myGpio(BlackLib::GPIO_30, BlackLib::output);

Y recordemos que si estamos usando la instrucción “using namespace BlackLib” no es necesario escribir “BlackLib::” antes de cada etiqueta. Si quisiéramos que el pin fuese entrada solo cambiaríamos el segundo parámetro a “input”. Esta instrucción seria como el PinMode en Arduino o los registros DDR en AVR o como los TRIS en los PICs. La principal diferencia es que aqui se genera el objeto myGpio en este caso es una etiqueta que puede llevar el nombre que nosotros queramos.

Para este tutorial el siguiente parametro que veremos sera la función setValue que sirve para definir el valor de la salida del pin, en este caso la función se define:

bool BlackLib::BlackGPIO::setValue ( digitalValue v )

En donde el parámetro de entrada seria “high” o “low” para alto y bajo respectivamente, por lo que basándonos en la etiqueta myGpio de la función pasada nos quedaría:

myGpio.setValue(BlackLib::high)

Beaglebone Black GPIO: Ejemplo

Ahora que ya tenemos las dos funciones básicas para configurar el pin que queremos, vamos a hacer el programa de que prenda y apague un LED, que seria el “Hola mundo” de los sistemas embebidos. Para este caso solo necesitamos añadir el BlackGPIO.h y nos quedaría como sigue:

#include<iostream>
#include"BlackGPIO.h"

using namespace BlackLib;
using namespace std;

intmain(void) {

BlackGPIO PINx(GPIO_30,output, SecureMode);

for(;;){
PINx.setValue(high);
sleep(1);
PINx.setValue(low);
sleep(1);
}
}

Cabe mencionar que si requerimos leer un pin tenemos la función “getNumericValue” en onde nos retorna en digital si el pin esta activado o desactivado, nos quedaría algo así:

int estado=0;
estado=PINx.getNumericValue( );

en donde la variable estado tomaría el valor de “0” o de “1”.

Beaglebone Black GPIO: Compilar y ejecutar con BlackLib

Ahora regresando al código de ejemplo principal, solo nos queda compilarlo y ejecutarlo, sin embargo, si lo intentamos compilar nos va a aparecer un error con referencia al BlackGPIO.h por lo que tenemos que considerar un par de cosas. Primero en el programa al escribir “#include “BlackGPIO.h” la tarjeta asume que el archivo BlackGPIO.h esta en la carpeta de las cabeceras principales o en la misma carpeta donde tenemos el archivos, para no complicar mas las cosas por el momento vamos a crear el archivo de ejemplo dentro de la carpeta que descargamos del BlackLib, de echo dentro de BlackLib/v2_0 en donde están todos los archivos “.h”.

Para poder compilar necesitamos generar los archivos objeto correspondientes a las bibliotecas, esto lo haremos una sola vez, por lo que podemos hacerlo para todas los archivos cpp en la carpeta. Si solo vamos a hacerlo para el ejemplo del GPIO entonces escribimos:

$ cd Desktop/BlackLib/v2_0
$ g++ -c BlackCore.cpp
$ g++ -c BlackGPIO.cpp

Si queremos aprovechar, podemos hacerlo para todos los demas archivos cpp, OJO si marca error solo escribirlo con el texto extra como en el siguiente caso:

g++ -c BlackPWM.cpp –std=c++0x

Una vez echo esto, podemos observar (con “ls” en terminal) que se han generado los archivo con extensión “.o” los cuales nos servirán para compilar correctamente el programa, por lo que ahora si procedemos a escribir el comando de compilación, el cual seria exactamente igual que con el de C++ solo añadiendo los objetos correspondientes a las bibliotecas a usar, en este caso para la BlackLib seria el BlackCore.o y el que hayamos usado, en este caso particular BlackGPIO.o y nos quedaría:

g++ -Wall –o ejecutable Ejemplo02.cpp BlackCore.o BlackGPIO.o
Beaglebone Black GPIO

Beaglebone Black GPIO LED.

Posteriormente podemos conectar el LED al GPIO_30 o pin 11 del conector P9 y que no se nos olvide poner nuestra resistencia en serie.

Por ultimo procedemos a correr el programa

$ ./ejecutable

Para salir del ciclo basta con teclear Ctr+c y rompemos el ciclo for.

______________
META: Beaglebone Black GPIO Arduino AVR PIC Microcontrolador HeTPro

Post a Reply

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *