Empieza con C++ y Raspberry Pi

Publicado por Loli Diéguez en

Cuando se piensa en programar en Raspberry Pi, Python y Scratch son las opciones más comunes. Python es el más natural para los principiantes, pero no es la única opción y no necesariamente la mejor en cada situación. 

Existen otros lenguajes de programacion y uno de ellos es C++ pero ¿Puedes usar C ++ en Raspberry Pi? Eso es lo que explicaré en este artículo.

El sistema operativo Raspberry Pi incluye todos los paquetes necesarios para programar en C / C ++. Las bibliotecas comunes están preinstaladas para interactuar con los componentes específicos de Raspberry Pi (GPIO, Camera, etc.), y el editor de texto predeterminado (Geany) tiene soporte integrado para C++.

Sin embargo, aunque esté todo listo para usar, no significa que sea simple. Hay algunas especificaciones que debes conocer para utilizar tu Raspberry Pi en todo su potencial.

Comenzaré por darte más detalles sobre C ++ y Raspberry Pi, luego aprenderemos cómo comenzar y finalmente veremos por qué y cuándo deberías usarlo en lugar de Python.

¿Puedes usar C / C ++ en Raspberry Pi?

C / C ++ es compatible de forma nativa en Raspberry Pi. El preprocesador de C y otros paquetes obligatorios (como make y libstdc ++) están preinstalados en cualquier versión del sistema operativo de Raspberry Pi. El código fuente se puede escribir con Nano (editor de texto de línea de comandos) o Geany (editor gráfico).

Como aprenderemos más adelante, Raspberry Pi OS también incluye las bibliotecas más comunes que puedes necesitar para programas básicos y para controlar los pines GPIO (con Wiringpi). También es posible interactuar con la cámara, incluso si necesitas descargar e instalar algunas bibliotecas adicionales.

Geany es un buen editor que puedes usar para crear tus primeros scripts. Está preinstalado en el sistema operativo Raspberry Pi. Pero no es la única opción. Visual Studio Code ahora se puede agregar con un clic desde la herramienta de software recomendado, y muchos otros se pueden instalar fácilmente.

Cómo usar C / C ++ en Raspberry Pi

C y C ++ se pueden usar en Raspberry Pi. Pero sea cual sea tu nivel actual con estos idiomas, es posible que necesites algunos consejos para comenzar.

Primer intento: hola mundo

Mi objetivo no es dar una lección completa aquí sobre C / C ++ pero si explicaré cómo usarlo en Raspberry Pi. Si eres completamente nuevo en esto comenzaremos con lo básico. 

Aquí está el código más simple con el que puedes comenzar:

#include <iostream>
usando el espacio de nombres std;

int main ()
{
   cout << "Hola" << endl;
   return 0;
}
  • Crea un nuevo archivo (con Geany, Nano o cualquier otro editor de texto).
  • Copia y pega este código fuente.
  • Guarda el archivo (hola.cpp por ejemplo).
  • Como recordatorio, C / C ++ requiere compilación previa, puedes hacerlo con este comando:
    g++ -o hello hello.cpp
  • Entonces puedes ejecutar tu programa con:
    ./hello

Si todo funciona como se espera, debería mostrar "Hola". 

Interactuar con la cámara Raspberry Pi

Como expliqué anteriormente, las bibliotecas estándar están disponibles, pero puedes usar "fácilmente" los componentes de Raspberry Pi como la cámara en tus programas C ++.

No sé si hay otras soluciones, pero la que encontré es Raspicam, una biblioteca disponible en GitHub, para usar la cámara Raspberry Pi. Es compatible con OpenCV, por lo que es bastante bueno.

Instala Raspicam en tu Raspberry Pi

A continuación te explico cómo instalar Raspicam en el sistema operativo Raspberry Pi:

  • Comienza instalando cmake si aún no lo tienes disponible:
    sudo apt install cmake
  • Clona y crea el repositorio de GitHub :
    git clone https://github.com/cedricve/raspicam.git
    cd raspicam
    mkdir build
    cd build
    cmake ..
  • Detectará automáticamente si los archivos de desarrollo de OpenCV están instalados y agregará soporte si es necesario.
  • Una vez hecho esto, puedes compilarlo e instalarlo con:
    make
    sudo make install
    sudo ldconfig

Eso es todo, Raspicam está listo para usar en tus proyectos de C ++.

Controla la cámara Raspberry Pi en C ++

Aquí hay un ejemplo básico para tomar una foto con la cámara Raspberry Pi en C ++:

 incluir <ctime>
 incluir <fstream>
 incluir <iostream>
 incluir <raspicam / raspicam.h>
 incluir <unistd.h>

 usando el espacio de nombres std;

 int main (int argc, char ** argv) {
         raspicam :: Cámara RaspiCam; // Objeto de cámara
         //Cámara abierta
         cout << "Abriendo cámara ..." << endl;
         if (! Camera.open ()) {cerr << "Error al abrir la cámara" << endl; return -1;}
         // espera un rato hasta que la cámara se estabilice
         cout << "Dormir durante 3 segundos" << endl;
         dormir (3);
         //capturar
         Camera.grab ();
         // asignar memoria
         carácter sin firmar * datos = nuevo carácter sin firmar [Camera.getImageTypeSize (raspicam :: RASPICAM_FORMAT_RGB)];
         // extraer la imagen en formato rgb
         Camera.retrieve (data, raspicam :: RASPICAM_FORMAT_RGB); // obtener la imagen de la cámara
         //salvar
         std :: ofstream outFile ("raspicam_image.ppm", std :: ios :: binary);
         outFile << "P6 \ n" << Camera.getWidth () << "" << Camera.getHeight () << "255 \ n";
         outFile.write ((char *) datos, Camera.getImageTypeSize (raspicam :: RASPICAM_FORMAT_RGB));
         cout << "Imagen guardada en raspicam_image.ppm" << endl;
         // recursos gratuitos
         borrar datos;
         return 0;
 }

Este ejemplo proviene casi en su totalidad de la página de GitHub. Puedes encontrar el código fuente original aquí: https://github.com/cedricve/raspicam .

Nota: cuando lo compiles, no olvides agregar Raspicam en la línea de comando, por ejemplo:
g++ -o camera camera.cpp -lraspicam
./camera

Guarda la imagen en un archivo llamado raspicam_image.ppm.

Controla los pines GPIO

Interactuar con los pines GPIO es aún más fácil, ya que la biblioteca ya está instalada en el sistema operativo Raspberry Pi. El nombre de esta biblioteca es Wiringpi.

Aquí hay una guía rápida sobre cómo comenzar a usarlo:

  • Comienza habilitando los pines GPIO en tu Raspberry Pi si aún no lo has hecho.
  • Luego, debes incluir Wiring pi en el encabezado:
    #include <cableadoPi.h>
  • Después de eso, deberías poder usar todas las funciones enumeradas en la referencia vinculada anteriormente.
  • Probé con SunFounder y funcionó bien.
Kit Sunfounder

Por cierto, yo tengo este kit que pueden encontrar en Amazon, que incluye un montón de componentes para usar con los pines GPIO (LED y cables, obviamente, pero también muchos otros sensores, motores y botones divertidos). Hay un tutorial completo sobre cómo usar cada componente, y en cada lección explican cómo hacerlo en Python y C. Si deseas fortalecer tus habilidades en C y Raspberry Pi, eso podría ser una buena opción.

Editores de texto disponibles en Raspberry Pi

Te dije que puedes usar Nano o Geany para escribir tu código C o C ++ en Raspberry Pi, pero no olvides que hay muchos otros editores disponibles.  También puedes instalar un IDE completo si es necesario.

¿Qué es mejor: Python o C ++?

Todo esto está bien, es "posible" codificar en C ++ en Raspberry Pi y está bien soportado. ¿Pero es una buena idea? ¿Por qué todo el mundo habla de Python y no de C ++?
Responderé a tus preguntas sobre esto en esta última sección.

¿C ++ o Python, cual es más fácil?

En su conjunto, C ++ es un lenguaje complejo con características poderosas, pero es difícil de entender para los principiantes. Python es más fácil de aprender, está cerca del idioma inglés y es ideal para scripts simples.

Además, Raspberry Pi se basa en el lenguaje Python, por lo que todas las bibliotecas están disponibles directamente. Para un principiante, esta es una opción obvia. Comienza con Python y experimente con C / C ++ más tarde una vez que comprendas la lógica detrás de cualquier código.

¿ C ++ es un lenguaje en desuso?

Analisis de google Tends

Según Google Trends, C ++ está perdiendo interés lentamente con el paso del tiempo, pero permanece entre los diez lenguajes más utilizados entre los desarrolladores. Cuando la velocidad es un factor esencial, C ++ sigue siendo una de las mejores opciones para los programadores.

Idioma Uso entre desarrolladores
JavaScript 67,7%
HTML / CSS 63,1%
Python 44,1%
Java 40,2%
C# 31,4%
PHP 26,2%
Mecanografiado 25,4%
C ++ 23,9%
C 21,8%
Lenguajes programados más utilizados (excluyendo SQL y bash / PowerShell)

Si observas los datos más recientes de Statista , los lenguajes web y Python se utilizan mucho más que C ++, pero son opciones diferentes para diferentes propósitos. No utilizarás el mismo idioma para un sitio web, una aplicación móvil o un controlador gráfico.

Las estadísticas de GitHub también muestran una clasificación similar. C ++ está en el top10, con una tendencia estable (o ligeramente creciente). Así que no te preocupes, aprender C / C ++ no es una pérdida de tiempo.

¿Quién tiene más demanda: Python o C ++?

Según Indeed USA, Python tiene más demanda que C ++. Actualmente hay 44,311 trabajos disponibles para desarrolladores de Python y 15,778 trabajos para desarrolladores de C ++. 

De todos modos, si sabes cómo codificar (y puedes probarlo), deberías encontrar fácilmente un trabajo, sea cual sea tu mejor lenguaje de programación. Un buen desarrollador puede cambiar rápidamente de un idioma a otro.

¿Puedes hacer con Python lo mismo que puedes hacer con C++?

En conjunto, Python puede hacer lo mismo que C ++. Hay algunas pequeñas diferencias, pero Python puede usar bibliotecas C y C puede usar bibliotecas Python, por lo que es posible reemplazar un idioma por otro en la mayoría de los casos.

Te recuerdo que C funciona en un nivel más bajo, por lo que generalmente es mucho más rápido. Si estás haciendo un pequeño script para controlar las luces de tu casa, enciende un LED con GPIO o incluso hace movimientos básicos con un kit de robot, Python estará bien y será mucho más rápido para código. Creo que C ++ puede ser útil en proyectos más grandes, con muchos componentes que necesitan trabajar juntos.

En resumen, Python es bueno para desarrollos básicos como scripts y proyectos pequeños, mientras que C ++ se elige generalmente para programas más grandes.

C ++ vs Python en Raspberry Pi: Tabla Comparativa

C ++ Python
Funciona bien en Raspberry Pi Perfecto para la mayoría de los proyectos de Raspberry Pi
C ++ es más rápido que Python Python puede ser más lento que C ++
Ligera disminución de tendencias Tendencias estables y más demandadas que C ++
Requiere compilación previa No necesita compilación
Difícil de aprender para principiantes Fácil para principiantes

Conclusión

En resumen, C / C ++ es una opción disponible en Raspberry Pi si ya tienes conocimientos básicos con este lenguaje o quieres probar grandes proyectos. Pero en la mayoría de los casos, Python será más fácil y rápido de usar, especialmente para principiantes.

Todavía recomiendo usar Python en tu Raspberry Pi, ya que está diseñada para esto y supongo que sus objetivos no son programar un juego potente en una Raspberry Pi, por lo que C ++. Pero es bueno saber que es una opción si encuentras una manera de hacer algo en C / C ++ y no sabes cómo hacerlo en Python.

 

Compartir esta publicación



← Publicación más antigua Publicación más reciente →