martes, 21 de marzo de 2017

Raspberry. Programación básica en C++ (I)

Para la programación en C++ con Raspberry debemos empezar por aclarar que el compilador que vamos a utilizar es G++. Este ya se encuentra instalado en la Raspberry por lo que para empezar con nuestro primer programa sólo nos queda escribir el código fuente.

El primer ejemplo que vamos a ver es el clásico en el inicio de todos los cursos de programación, vamos a hacer un programa que se limite a escribir un saludo en consola. Así que esto lo podemos conseguir con este ejemplo:

// Ejemplo 1. Hola mundo

#include <stdio.h>

int main()
{
printf("Hola que tal \n");
return 0;


Esto mismo también se puede conseguir empleando otro método:

 // Ejemplo 1b. Hola mundo

#include <iostream>

using namespace std;

int main()
{
cout << "hola que tal" << endl;
return 0;
}



Si hemos elegido trabajar con "Geany" en el entorno gráfico. Basta con con hacer click en el botón correspondiente a construir y estar pendiente siempre por si aparece algún mensaje de error.

Con el proceso de "construcción" se consigue el fichero ejecutable mediante los procesos de compilación y enlazado. Sólo falta ejecutar el programa, que desde el entorno gráfico es tan sencillo como hacer click en el botón "ejecutar".

Para construir nuestro programa desde consola debemos escribir la siguiente línea:
$ g++ ejemplo1.cpp -o ejemplo1

Para ejecutar el programa desde consola debemos escribir:
$ ./ejemplo1


martes, 7 de marzo de 2017

Raspberry. Como usar las entradas y salidas GPIO

Para utilizar la Raspberry como si fuera un Arduino y poder leer datos del exterior o activar leds, relés, etc. Lo primero que necesitamos conocer es la asignación de cada una de las 40 patillas de su conector GPIO. En la siguiente figura se puede ver la disposición de patillas:

(Imagen extraída de https://es.pinout.xyz/#)

Para el manejo de los pines GPIO de la Raspberry vamos a emplear una Librería llamada WiringPi.


Esta librería la podemos descargar directamente desde:
https://git.drogon.net/?p=wiringPi;a=summary

También puedes descargar una copia desde aquí
Una vez descargado, extraes el contenido con el comando:
$tar xfz wiringPi-96344ff.tar.gz

Y después, para instalar (entramos en la carpeta descargada y ejecutamos un archivo de instalación):
$cd wiringPi*
$ ./build

Con esto se consigue compilar e instalar la librería. Ahora podemos realizar una comprobación de que todo funciona ejecutando:
$gpio readall

Todos los pasos realizados se encuentran descritos en:
https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/

Ahora podemos escribir directamente en cada uno de los pines de la Raspberry, mediante 2 pasos. Primero se debe configurar el pin a utilizar (como entrada o salida) y a continuación escribir un bit. Como ejemplo vemos a continuación de forma genérica el proceso para escribir un nivel alto en un pin:
$gpio mode [pin] out
$gpio write [pin] 1

No debemos olvidar sustituir "[pin]" por el número del pin (con numeración wiringPi) que queramos usar. Y si queremos escribir un "0", habra que modificar el segundo comando cambiando el "1" por un "0".

Si queremos escribir un "1" en el pin 29, lo hacemos así:
$gpio mode 29 out
$gpio write 29 1

 Por otro lado si lo que queremos es leer el estado de un pin, por ejemplo el pin 14 se usará:
$gpio mode 14 in
$gpio read 14