Quero utilizar os pinos GPIO no meu Raspberry Pi 2, mas prefiro não usar o Python, pois pessoalmente não gosto do idioma. No entanto, não consigo encontrar nenhuma informação sobre o uso de C, apenas Python.
Existe uma API C oficial? Se sim, onde posso encontrar tutoriais? Caso contrário, que alternativas eu tenho?
Respostas:
Não existe biblioteca oficial
Existem várias opções. Eu costumo usar http://wiringpi.com . Isso é usado para o
gpio
utilitário incluído nas versões recentes do Raspbian.A
pigpio
biblioteca de Joan está em https://github.com/joan2937/pigpio e ela também possui wrappers Python. Se você deseja usar soquetes ou daemon, isso é recomendado e possui um bom suporte para hardware e acesso em massa a bancos de pinos.Ambos têm documentação extensa.
Existem alguns outros, mas alguns parecem um pouco datados.
fonte
Você não menciona um sistema operacional, como o Milliways, presumirei que você queira dizer Raspbian ou algum outro GNU / Linux. A IoT do Windows seria separada.
Todas as bibliotecas python são wrappers nas bibliotecas C, o que não é incomum. Criar as bibliotecas do zero em algo diferente de C seria. Há três:
Eles já existem há pelo menos alguns anos e são mantidos ativamente (por exemplo, a última versão do libbcm2835 foi de 3-4 meses atrás).
No entanto, você não precisa de nenhuma biblioteca, dependendo do que deseja fazer. Como mencionado, além da interface sysfs para coisas básicas, existem interfaces portáteis de nível C do usuário para I2C e SPI que usam drivers do kernel. Isso deixa o PWM - para acessar e usar os canais de hardware, você precisa usar uma dessas três bibliotecas. Ou, como joan menciona em um comentário sobre essa outra questão, se você estiver tentando contar pulsos muito rápidos (eu experimentaria alguns métodos nesse caso).
Eu não tentei todas as combinações, mas, presumindo que as bibliotecas específicas do pi sejam codificadas de maneira adequada, você deve poder combiná-las e combiná-las com as interfaces portáteis (por exemplo, use a API I2C regular e o wirePi for PWM), desde que você as use para pinos separados. Isso pode parecer uma abordagem estranha, mas faz sentido se você estiver trabalhando com código modular e quiser tornar as peças individuais o mais portáveis possível. Por exemplo, se você deseja escrever uma interface para um sensor I2C, baseie-a na API do driver do kernel. Então, se você deseja usá-lo em um programa com PWM, use uma das três bibliotecas para PWM. O código escrito com pigpio /iringPi / libbcm2835 funcionará apenas em um Raspberry Pi; O código escrito usando as APIs do driver do kernel funcionará em qualquer sistema Linux.
fonte