Biblioteca GPIO para C


8

Quiero utilizar los pines GPIO en mi Raspberry Pi 2, pero prefiero no usar Python ya que personalmente no me gusta el lenguaje. Sin embargo, parece que no puedo encontrar ninguna información sobre el uso de C, solo Python.

¿Hay una API oficial de C? Si es así, ¿dónde puedo encontrar tutoriales? Si no, ¿qué alternativas tengo?


Esto no es C específica, sino de apoyo lenguaje de programación en general GPIO ver la lista en elinux.org/RPi_GPIO_Code_Samples
Joan

Hay dos API de C bastante recientes y una API de C ++ que encontré y proporcioné un ejemplo en una publicación relacionada: Controlar pines GPIO de C
gorlux

Respuestas:


10

No hay biblioteca oficial

Hay varias opciones Usualmente uso http://wiringpi.com . Esto se utiliza para la gpioutilidad incluida en los últimos lanzamientos de Raspbian.

La pigpiobiblioteca de Joan está en https://github.com/joan2937/pigpio y también tiene envoltorios de Python. Si desea usar sockets o un demonio, se recomienda y tiene un buen soporte para hardware y acceso masivo a bancos de pines.

Ambos tienen una amplia documentación.

Hay un par de otros, pero algunos parecen un poco anticuados.


2

No mencionas un sistema operativo, como Milliways, supongo que te refieres a Raspbian o algún otro GNU / Linux. Windows IoT estaría separado.

Todas las bibliotecas de Python son envoltorios en bibliotecas C, lo cual no es inusual. Crear las bibliotecas desde cero en algo que no sea C sería. Hay tres:

Estos han existido por al menos algunos años y se mantienen activamente (por ejemplo, la última versión de libbcm2835 fue hace 3-4 meses).

Sin embargo, no necesita ninguna biblioteca según lo que quiera hacer. Como se mencionó allí, además de la interfaz sysfs para cosas básicas, existen interfaces portátiles de nivel de usuario y C para I2C y SPI que utilizan controladores de kernel. Esto solo deja a PWM: para acceder y usar los canales de hardware que necesita para usar una de esas tres bibliotecas. O, como Joan menciona en un comentario sobre esa otra pregunta, si está tratando de contar pulsos muy rápidos (experimentaría con algunos métodos en ese caso).

No he probado todas las combinaciones, pero suponiendo que las bibliotecas específicas de pi estén codificadas de manera sensata, debería poder mezclarlas y combinarlas con las interfaces portátiles (p. Ej., Use la API I2C normal y cableado Pi para PWM) siempre que las use para pines separados. Esto puede parecer un enfoque extraño, pero tiene sentido si está trabajando con código modular y desea hacer que las piezas individuales sean lo más portátiles posible. Por ejemplo, si desea escribir una interfaz para un sensor I2C, baselo alrededor de la API del controlador del kernel. Luego, si desea usar eso en un programa con PWM, use una de las tres bibliotecas para PWM. El código escrito con pigpio / cablePi / libbcm2835 solo funcionará en una Raspberry Pi; El código escrito utilizando las API del controlador del núcleo funcionará en cualquier sistema Linux.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.