Bibliothèque GPIO pour C


8

Je veux utiliser les broches GPIO sur mon Raspberry Pi 2, mais je préfère ne pas utiliser Python car je n'aime pas personnellement le langage. Cependant, je n'arrive pas à trouver d'informations sur l'utilisation de C, seulement Python.

Existe-t-il une API C officielle? Si oui, où puis-je trouver des tutoriels dessus? Sinon, quelles alternatives ai-je?


Ce n'est pas spécifique au C mais pour la prise en charge générale du langage de programmation GPIO, voir la liste sur elinux.org/RPi_GPIO_Code_Samples
joan

Il y a deux API C assez récentes et une API C ++ que j'ai trouvé et fourni un exemple dans un article connexe: Contrôler les broches GPIO de C
gorlux

Réponses:


10

Il n'y a pas de bibliothèque officielle

Il existe plusieurs options. J'utilise habituellement http://wiringpi.com . Ceci est utilisé pour l' gpioutilitaire inclus dans les versions récentes de Raspbian.

La pigpiobibliothèque de Joan se trouve à https://github.com/joan2937/pigpio et elle a également des wrappers Python. Si vous souhaitez utiliser des sockets ou un démon, cela est recommandé et prend bien en charge le matériel et l'accès en masse aux banques de broches.

Les deux ont une documentation complète.

Il y en a quelques autres, mais certains semblent un peu datés.


2

Vous ne mentionnez pas de système d'exploitation, comme Milliways, je présume que vous voulez dire Raspbian ou un autre GNU / Linux. Windows IoT serait séparé.

Toutes les bibliothèques python sont des wrappers sur les bibliothèques C, ce qui n'est pas inhabituel. Créer les bibliothèques à partir de zéro dans autre chose que C serait. Il ya trois:

Celles-ci existent depuis au moins quelques années et sont activement maintenues (par exemple, la dernière version de libbcm2835 était il y a 3-4 mois).

Cependant, vous n'avez pas besoin de bibliothèque selon ce que vous voulez faire. Comme mentionné ici, en plus de l'interface sysfs pour les choses de base, il existe des interfaces portables de niveau C pour I2C et SPI qui utilisent des pilotes de noyau. Cela laisse juste PWM - pour accéder et utiliser les canaux matériels dont vous avez besoin pour utiliser l'une de ces trois bibliothèques. Ou, comme le mentionne joan dans un commentaire sur cette autre question, si vous essayez de compter des impulsions très rapides (j'expérimenterais quelques méthodes dans ce cas).

Je n'ai pas essayé toutes les combinaisons, mais en supposant que les bibliothèques spécifiques à pi sont codées correctement, vous devriez pouvoir les mélanger et les faire correspondre avec les interfaces portables (par exemple, utiliser l'API I2C et le câblagePi pour PWM) tant que vous les utilisez pour broches séparées. Cela peut sembler étrange, mais cela a du sens si vous travaillez avec du code modulaire et que vous souhaitez rendre les pièces individuelles aussi portables que possible. Par exemple, si vous souhaitez écrire une interface pour un capteur I2C, basez-la autour de l'API du pilote du noyau. Ensuite, si vous souhaitez utiliser cela dans un programme avec PWM, utilisez l'une des trois bibliothèques pour PWM. Le code écrit avec pigpio / câblagePi / libbcm2835 ne fonctionnera que sur un Raspberry Pi; le code écrit à l'aide des API du pilote du noyau fonctionnera sur n'importe quel système Linux.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.