Programmez En C++ sur Raspberry Pi (Les bases + exemples)


Quand on pense à la programmation sur Raspberry Pi, Python et Scratch sont les choix qui reviennent le plus. J’écris beaucoup sur Python sur ce site parce que c’est pratiquement devenu le langage par défaut du Raspberry Pi. Il est simple pour les débutants, mais ce n’est pas la seule option, et pas nécessairement le meilleur dans chaque situation. Alors, est-ce possible d’utiliser C++ sur Raspberry Pi ? Comment ? C’est ce que je vais vous expliquer dans cet article.

Raspberry Pi OS inclut tout le nécessaire pour coder en C/C++ dès l’installation. Les bibliothèques principales sont préinstallées et compatibles avec les différents composants du Raspberry Pi (GPIO, caméra, etc.). L’éditeur par défaut (Geany) inclut un support intégré pour ce langage.

Même si tout est prêt à l’emploi, cela ne veut pas dire que c’est simple – même pour un programmeur expérimenté (comme moi). Il y a quelques spécificités que vous devez connaître afin d’utiliser pleinement le potentiel de votre Raspberry Pi.

Je vais commencer par vous donner plus de détails sur C++ et Raspberry Pi, puis nous allons apprendre comment débuter, et enfin voir pourquoi et quand vous devriez l’utiliser plutôt que Python.

Au passage, si vous vous sentez dépassé dès que Python est nécessaire pour un projet, je vous conseille de télécharger mon e-book « Maîtrisez Python on Raspberry Pi« . Il vous guidera pas à pas pour apprendre les concepts essentiels (et uniquement ceux-là) pour réaliser n’importe quel projet à l’avenir. Un Raspberry Pi sans Python, c’est comme une voiture sans moteur, vous ratez le plus intéressant ;-).
Profitez de 10 % de réduction en le téléchargeant dès aujourd’hui !

Est-ce possible d’utiliser C/C++ sur Raspberry Pi ?

Téléchargez mon antisèche !
Si comme moi, vous avez tendance à mélanger les langages, téléchargez mon antisèche pour Python au format PDF.

C/C++ est supporté nativement sur Raspberry Pi. Le préprocesseur C et d’autres paquets obligatoires (comme make et libstdc++) sont préinstallés sur n’importe quelle version de Raspberry Pi OS. Le code source peut être écrit avec Nano (éditeur de texte en ligne de commande) ou Geany (éditeur graphique).

Comme nous le verrons par la suite, Raspberry Pi OS comprend également les bibliothèques les plus courantes dont vous pourriez avoir besoin pour les programmes de base et pour contrôler les broches GPIO (avec Wiringpi). L’interaction avec la caméra est également possible, même si vous aurez besoin de télécharger et d’installer des bibliothèques supplémentaires.

Geany est un éditeur intéressant que vous pouvez utiliser pour créer vos premiers scripts. (J’ai un tutoriel à ce sujet ici). Il est préinstallé sur Raspberry Pi OS Desktop. Mais ce n’est pas la seule option. Visual Studio Code peut maintenant être ajouté en un clic via l’outil « Recommended Software », et de nombreux autres peuvent être installés facilement (voici la liste de mes éditeurs de texte préférés).

Maîtrisez Raspberry Pi en 30 jours
10% de remise aujourd'hui !
Téléchargez le livre numérique.
Découvrez les secrets du Raspberry Pi à travers un challenge de 30 jours.

Comment utiliser C/C++ sur Raspberry Pi

En résumé : oui, C et C++ peuvent absolument être utilisés sur Raspberry Pi, et tout est prêt à l’emploi. Mais quel que soit votre niveau actuel avec ces langages, vous pourriez avoir besoin de quelques conseils pour commencer.

Je n’ai pas utilisé C++ depuis le lycée, donc j’étais un peu rouillé avant d’écrire cet article. Mais après quelques tests, ça revient, et je peux partager quelques exemples.

Premier essai : Hello world

Mon but ici n’est pas de donner une leçon complète sur C/C++. Je veux simplement vous expliquer comment l’utiliser sur Raspberry Pi. Mais si vous êtes tout à fait nouveau dans ce domaine, commençons par les bases. Voici le code minimal avec lequel vous pouvez commencer : 

#include <iostream>
using namespace std;
int main()
{
   cout << "Hello you" << endl;
   return 0;
}

  • Créer un nouveau fichier (avec Geany, Nano ou votre éditeur favori).
  • Copiez et collez ce code source.
  • Enregistrez le fichier (hello.cpp par exemple).
  • Pour rappel, C/C++ nécessite une précompilation, vous pouvez le faire avec cette commande :
    g++ -o hello hello.cpp
  • Ensuite vous pouvez exécuter votre programme avec :
    ./hello

Si tout fonctionne comme prévu, « Hello you » devrait s’afficher. C’est bon ? Vos compétences C/C++ sont aussi de retour ? 🙂

Si c’est votre premier script en C/C++, je ne vous conseille de garder cet article de côté et de d’abord lire quelques cours sur les bases du C/C++.
Vous pouvez aussi aller sur Skillshare et chercher un cours pour débutant en C/C++, qui vous expliquera tout en quelques vidéos. Skillshare offre un essai gratuit d’un mois avec l’accès à n’importe quel cours, donc il n’y a aucune raison de ne pas se faire aider

Interagir avec la caméra du Raspberry Pi

Bien, j’espère que vous êtes toujours avec moi. Comme je l’ai expliqué précédemment, les bibliothèques standards sont disponibles, mais vous pouvez « facilement » utiliser les composants du Raspberry Pi comme la caméra dans vos programmes C++.

Je ne sais pas s’il y a d’autres solutions, mais celle que j’ai trouvée est d’utiliser Raspicam, une bibliothèque disponible sur GitHub,  pour utiliser la caméra du Raspberry Pi. Elle prend en charge OpenCV, donc c’est plutôt pas mal.

Installez Raspicam sur votre Raspberry Pi

Voici comment installer Raspicam sur Raspberry Pi OS :

  • Commencez par installer cmake si ce n’est pas encore fait :
    sudo apt install cmake
  • Téléchargez le dépôt GitHub et compilez Raspicam:
    git clone https://github.com/cedricve/raspicam.git
    cd raspicam
    mkdir build
    cd build
    cmake ..
  • Il détectera automatiquement si les fichiers de développement OpenCV sont installés, et y ajoutera le support si nécessaire.
  • Une fois terminé, vous pouvez le compiler et l’installer avec :
    make
    sudo make install
    sudo ldconfig

C’est tout, Raspicam est prête à être utilisée dans vos projets C++.

Contrôlez la caméra du Raspberry Pi en C++

Voici un exemple de base pour prendre une photo avec la caméra Raspberry Pi en C++ :

include <ctime>
include <fstream>
include <iostream>
include <raspicam/raspicam.h>
include <unistd.h>
sing namespace std;
int main ( int argc,char **argv ) {
          raspicam::RaspiCam Camera; //Camera object
          //Open camera
          cout<<"Opening Camera…"<<endl;
          if ( !Camera.open()) {cerr<<"Error opening camera"<<endl;return -1;}
          //wait a while until camera stabilizes
          cout<<"Sleeping for 3 secs"<<endl;
          sleep(3);
          //capture
          Camera.grab();
          //allocate memory
          unsigned char *data=new unsigned char[  Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB )];
          //extract the image in rgb format
          Camera.retrieve ( data,raspicam::RASPICAM_FORMAT_RGB );//get camera image
          //save
          std::ofstream outFile ( "raspicam_image.ppm",std::ios::binary );
          outFile<<"P6\n"<<Camera.getWidth() <<" "<<Camera.getHeight() <<" 255\n";
          outFile.write ( ( char* ) data, Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB ) );
          cout<<"Image saved at raspicam_image.ppm"<<endl;
          //free resrources
          delete data;
          return 0;
  }

Cet exemple vient presque entièrement de la page GitHub. J’ai corrigé deux ou trois trucs qui n’ont pas fonctionné sur mon Raspberry Pi. Vous trouverez le code source original ici : https://github.com/cedricve/raspicam. Ca sera peut être plus simple à récupérer qu’ici.

Note : lors de la compilation, n’oubliez pas d’ajouter Raspicam dans votre ligne de commande, par exemple : 

g++ -o camera camera.cpp -lraspicam
./camera

Cela enregistrera l’image prise avec la caméra dans un fichier nommé raspicam_image.ppm.

Test des broches GPIO

Interagir avec les broches GPIO est encore plus facile, car la bibliothèque est déjà installée sur Raspberry Pi OS. Le nom de cette bibliothèque est Wiringpi, et vous pouvez trouver la documentation de référence ici.

Voici un guide rapide pour débuter avec elle :

  • Commencez par activer les broches GPIO sur votre Raspberry Pi si ce n’est pas déjà fait.
    Je vous explique tout ici (en anglais), vous pourrez revenir quand vous verrez du code Python.
  • Ensuite, vous devez inclure Wiring pi dans votre en-tête :
    #include <wiringPi.h>
  • Après cela, vous devriez pouvoir utiliser toutes les fonctions listées dans la documentation de référence dans le précédent lien.
  • J’ai testé avec cet exemple de SunFounder, et ça a bien fonctionné.

Au fait, j’ai le DaVinci Kit de Sunfounder, qui comprend un tas de composants à utiliser avec les broches GPIO (des LED et des fils évidemment, mais aussi beaucoup d’autres capteurs amusants, moteurs et boutons). Il y a un tutoriel complet sur la façon d’utiliser chaque composant, et dans chaque leçon (il y a environ 60 leçons), ils expliquent comment le faire en Python et en C. Si vous voulez approfondir vos compétences en C et Raspberry Pi, cela pourrait être un bon moyen. 

Éditeurs de texte disponibles sur Raspberry Pi 

Je vous ai dit que vous pouvez utiliser Nano ou Geany pour écrire votre code C ou C++ sur le Raspberry Pi, mais n’oubliez pas que de nombreux autres éditeurs sont disponibles. J’ai ici la liste de mes éditeurs de texte préférés, mais vous pouvez également installer un IDE complet si nécessaire (de type Pycharm ou même Eclipse).

Je n’ai pas beaucoup d’expérience avec des IDE lourds, comme je code principalement en HTML/PHP ou Python, mais je suis sûr que vous trouverez un moyen d’installer votre préféré.

Initiation au Raspberry Pi
10% de remise aujourd'hui !
Visionnez ma formation vidéo pour démarrer du bon pied.
Découvrez le Raspberry Pi, le matériel, ses logiciels particuliers et créez vos 5 premiers projets avec moi.

Qu’est-ce qui est mieux : Python ou C++ ?

Les deux sont bons. Il est « possible » de coder en C++ sur Raspberry Pi, et c’est bien supporté. Mais est-ce une bonne idée ? Pourquoi tout le monde parle de Python et pas de C++ ?
Je répondrai à vos questions à ce sujet dans cette dernière partie.

Est-ce C++ ou Python le plus facile ?

Dans l’ensemble, C++ est un langage complet avec des fonctionnalités puissantes, mais il est difficile à appréhender pour les débutants. Python est plus facile à apprendre, il est proche de la langue anglaise et est donc idéal pour les scripts simples.

En outre, Raspberry Pi est construit autour du langage Python. Toutes les bibliothèques sont directement disponibles (ou faciles à installer). Pour un débutant, c’est un choix évident. Débutez avec Python et expérimentez plus tard avec C/C++, une fois que vous aurez compris la logique qui existe derrière n’importe quel code.

C++ est-il un langage obsolète ? 

Selon Google Trends, C++ perd lentement de l’intérêt au fil du temps, mais demeure dans les dix langages les plus utilisés parmi les développeurs. Lorsque les performances sont capitales, C++ reste l’un des meilleurs choix pour les programmeurs.

LangageUtilisation parmi les développeurs
JavaScript67.7%
HTML/CSS63.1%
Python44.1%
Java40.2%
C#31.4%
PHP26.2%
TypeScript25.4%
C++23.9%
C21.8%
Langages de programmation les plus utilisés (à l’exclusion de SQL et de bash/PowerShell)

Si vous regardez les dernières statistiques de Statista, les langages web et Python sont beaucoup plus utilisés que C++, mais ce sont des choix différents pour des usages différents. Vous n’utiliserez pas le même langage pour un site Web, une application mobile ou un pilote de carte graphique.

C et C++ sont souvent des langages de programmation populaires à l’école aussi. Je me souviens avoir appris Java, C et C++ à l’école. Ce ne sont pas les plus faciles pour commencer, mais c’est bien de les voir à l’école pour avoir une vision plus globale, avec des situations plus complexes. Je suppose que c’est toujours le cas, ce qui explique pourquoi il y a encore beaucoup de développeurs qui utilisent ces langages.

Les Statistiques de GitHub montrent également un classement similaire. C++ est dans le top 10, avec une tendance stable (ou légèrement en hausse). Alors ne vous inquiétez pas, apprendre C/C++ n’est pas une perte de temps.

Qu’est-ce qui est le plus demandé : Python ou C++ ?

Selon Indeed USA, Python est plus demandé que C++. Aux États-Unis, il y a actuellement 44311 emplois disponibles pour les développeurs Python et 15778 emplois pour les développeurs C++. En termes de rémunération, les développeurs C++ sont également mieux payés que les développeurs Python (113561$/an contre 107397$).

Quoi qu’il en soit, si vous savez coder (et pouvez le prouver), vous devriez facilement trouver un emploi, quel que soit votre meilleur langage de programmation. Un bon développeur peut passer rapidement d’un langage à un autre. Comme expliqué précédemment, commencez avec Python, puis jouez un peu avec C++ pour essayer quelque chose de différent. Mais je ne pense pas que cela fera une grande différence dans votre carrière que vous utilisiez l’un ou l’autre sur le Raspberry Pi.

Python peut-il faire tout ce que C++ peut faire ?

Dans l’ensemble, Python peut faire la même chose que C++. Il y a quelques légères différences, mais Python peut utiliser les bibliothèques C, et C peut utiliser les bibliothèques Python. Il est donc possible de remplacer un langage par un autre si nécessaire.

Je n’entrerai pas dans tous les détails, mais rappelez-vous que C fonctionne à un niveau inférieur, donc c’est généralement beaucoup plus rapide. Si vous faites un petit script pour contrôler vos lumières à la maison (comme expliqué ici), allumer une LED avec le GPIO ou même faire des mouvements de base avec un kit robot (mes favoris sont ici), Python sera simplement pratique et beaucoup plus rapide pour coder. Je pense que C++ peut être utile pour les plus gros projets, avec de nombreux composants qui doivent fonctionner ensemble, mais ça reste assez limité sur Raspberry Pi.

En bref, Python est bien pour les développements de base comme les scripts et les petits projets, tandis que C++ est généralement choisi pour les programmes de plus grande taille.

C++ vs Python sur le Raspberry Pi : Tableau comparatif

C++Python
Fonctionne bien sur Raspberry PiParfait pour la plupart des projets  sur Raspberry Pi
C++ est plus rapide que PythonPython peut être plus lent que C++
Légère baisse des tendancesTendances stables et plus demandé que C++
Nécessite une pré-compilationPas besoin de compilation
Difficile à apprendre pour les débutantsFacile pour les débutants
C++ vs Python : avantages et inconvénients

A propos, si vous cherchez des exemples avec Python, vous pouvez trouver ici 15 projets avec Python à créer sur Raspberry Pi.

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Maîtrisez Python sur Raspberry Pi
10% de remise aujourd'hui !
Téléchargez le livre numérique.
Envie d'aller un peu plus loin que faire clignoter une LED ? Vous avez besoin de ce livre pour passer à des projets plus avancés.

Conclusion

Pour résumer, C/C++ est une option disponible sur le Raspberry Pi si vous avez déjà des connaissances de base avec ce langage ou si vous voulez essayer des projets plus costauds. Mais dans la plupart des cas, Python sera plus facile et plus rapide à utiliser, en particulier pour les débutants.

Je recommande toujours d’utiliser Python sur votre Raspberry Pi (et de l’apprendre de la bonne façon de préférence). Le Raspberry Pi est construit pour cela et je suppose que vos objectifs ne sont pas de coder le prochain jeu AAA ou le futur CRM des grands groupes sur un Raspberry Pi, donc C++ n’est pas obligatoire. Mais c’est bien de savoir que c’est une option possible si vous vous retrouvez bloquez avec Python mais savez le faire en C/C++.

Ressources supplémentaires pour votre Raspberry Pi

Initiation au Raspberry Pi en vidéo
Si vous débutez et voulez passer rapidement à la vitesse supérieure, j’ai exactement ce qu’il vous faut.
Regardez ma formation vidéo qui vous aidera à démarrer du bon bien, choisir votre matériel, installer les meilleures applications et vous lancer directement dans vos premiers projets avec mon aide.
Regarder les vidéos dès maintenant

Maîtrisez votre Raspberry Pi en 30 jours
Vous avez besoin de plus ? Si vous êtes à la recherche des meilleures astuces pour devenir expert sur Raspberry Pi, ce livre est fait pour vous. Développez vos compétences sous Linux et pratiquez via de nombreux projets en suivant mes guides étape par étape. 10% de remise aujourd’hui !
Télécharger le livre au format PDF ici

Maîtrisez Python sur Raspberry Pi
Pas besoin d’être un génie pour coder quelques lignes pour votre Raspberry Pi.
Je vous apprends juste ce qu’il faut sur Python afin de réaliser n’importe quel projet. La seconde partie du livre est d’ailleurs consacrée à des exemples de projets ou je vous guide pas à pas.
Ne perdez pas de temps, apprenez le strict nécessaire et économisez 10% avec ce lien :
Télécharger maintenant

Autres ressources pour profiter de votre Raspberry Pi
J’ai regroupé toutes mes recommandations de logiciels, sites utiles et de matériel sur cette page de ressources. Je vous invite à la consulter régulièrement pour faire les bons choix et rester à jour.
Visiter les pages ressources


Ce tutoriel ne marche plus à 100%? Prévenez-moi pour que je le mette à jour!

Patrick Fromaget

Je suis l'auteur principal et le créateur de RaspberryTips. Mon but est de vous aider sur tous vos problèmes qui concernent Raspberry Pi en publiant des guides détaillés et des tutoriels rapides. Dans la vraie vie, je suis administrateur système (Linux principalement) avec une solide expérience dans le développement web.

Recent Posts

Bonne année 2022: -20% sur tout