Perpustakaan GPIO untuk C


8

Saya ingin menggunakan pin GPIO pada Raspberry Pi 2 saya, tetapi saya lebih suka tidak menggunakan Python karena saya pribadi tidak menyukai bahasa tersebut. Namun, sepertinya saya tidak dapat menemukan informasi mengenai penggunaan C, hanya Python.

Apakah ada API C resmi? Jika demikian, di mana saya dapat menemukan tutorial tentangnya? Jika tidak, alternatif apa yang saya miliki?


Ini bukan spesifik C tetapi untuk dukungan bahasa pemrograman GPIO umum lihat daftar di elinux.org/RPi_GPIO_Code_Samples
joan

Ada dua API C yang cukup baru dan satu API C ++ yang saya temukan dan berikan contoh dalam posting terkait: Kontrol pin GPIO dari C
gorlux

Jawaban:


10

Tidak ada perpustakaan resmi

Ada beberapa opsi. Saya biasanya menggunakan http://wiringpi.com . Ini digunakan untuk gpioutilitas yang termasuk dalam rilis Raspbian baru-baru ini.

pigpioPerpustakaan Joan ada di https://github.com/joan2937/pigpio dan dia juga memiliki pembungkus Python. Jika Anda ingin menggunakan soket atau daemon, ini direkomendasikan dan memiliki dukungan yang baik untuk perangkat keras dan akses massal ke bank pin.

Keduanya memiliki dokumentasi yang luas.

Ada beberapa yang lain, tetapi beberapa tampak agak tanggal.


2

Anda tidak menyebutkan sistem operasi, seperti Milliways Saya akan menganggap Anda maksud Raspbian atau GNU / Linux lainnya. Windows IoT akan terpisah.

Semua pustaka python adalah pembungkus pada pustaka C, yang tidak biasa. Menciptakan perpustakaan dari awal dalam sesuatu selain C akan menjadi. Ada tiga:

Ini sudah ada setidaknya beberapa tahun dan secara aktif dipertahankan (misalnya, versi terakhir libbcm2835 adalah 3-4 bulan yang lalu).

Namun, Anda tidak perlu pustaka tergantung pada apa yang ingin Anda lakukan. Seperti disebutkan di sana, selain antarmuka sysfs untuk hal-hal dasar, ada antarmuka tingkat C userland portabel untuk I2C dan SPI yang menggunakan driver kernel. Ini hanya meninggalkan PWM - untuk mengakses dan menggunakan saluran perangkat keras yang Anda butuhkan untuk menggunakan salah satu dari tiga perpustakaan itu. Atau, seperti yang disebutkan joan dalam komentar pada pertanyaan lain itu, jika Anda mencoba menghitung pulsa yang sangat cepat (saya akan bereksperimen dengan beberapa metode dalam kasus itu).

Saya belum mencoba setiap kombinasi, tetapi anggap pi perpustakaan tertentu dikodekan dengan baik, Anda harus dapat mencampur dan mencocokkannya dengan antarmuka portabel (mis., Gunakan API I2C biasa dan wiringPi untuk PWM) selama Anda menggunakannya untuk pin terpisah. Ini mungkin tampak pendekatan yang aneh, tetapi masuk akal jika Anda bekerja dengan kode modular dan ingin membuat bagian-bagian individu semudah mungkin. Misalnya, jika Anda ingin menulis antarmuka untuk sensor I2C, tempatkan di sekitar API driver kernel. Kemudian jika Anda ingin menggunakannya dalam program dengan PWM, gunakan salah satu dari tiga pustaka untuk PWM. Kode yang ditulis dengan pigpio / wiringPi / libbcm2835 hanya akan berfungsi pada Raspberry Pi; kode yang ditulis menggunakan API driver kernel akan bekerja pada sistem linux apa pun.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.