ちょっとTea Time!? lgpioの憂鬱(Raspberry PiのGPIOライブラリ) 2026.9.5
久しぶりにラズパイのGPIOになにかをぶら下げて遊んで見ようかと思い、
以前に作ったボードを引っ張りだしてきました。

ラズパイ4に拡張ボードをとりつけて、いつでもGPIOで遊べるようにしたものです。

ピン配置はD16,D17の位置がすこし変則的ですが、このようになっています。
なぜ、いまだにラズパイ4か?
なぜ、いまだにラズパイ4をつかっているかというと、大きく2つの理由があります。
1.GPIOライブラリのWiringPiがラズパイ5で使えない
これが大きな要因です。いままで、C言語でGPIOをつかうときにWiringPiというGPIOライブラリをつかっていましたが、
開発は中止されてしまいラズパイ5ではつかえません。
2.ラズパイ5がない
実は最大の要因でもあったりするのですが、以前にラズパイ5を購入した直後に電源を入れ間違えて昇天させてしまいました。
いまはラズパイ5はありませんが、ラズパイ5で使えるGPIOライブラリがあれば、より快適に遊べるはずです。
ということで、ラズパイ5でつかえるGPIOライブラリがあるか調べてみました。
#といっても、いまラズパイ5って高いのですよね〜。
このあたりの調べ物は横着してAIです。
lgpioなるライブラリがあるみたい.
yahooの検索エンジンにAIモードがあるので、そこで問い合わせてみました。
まず、ラズパイ5で使えるライブラリの有無を問い合わせです。
![]() |
なにやらlgpioとlibgpiodの2種類があります。
汎用的にはlibgpiodがいいようだけど、lgpioの方が使いやすいらしいので、
こちらを試てみることにします。
で、使うにはライブラリのインストールが必要ですが、
これも、AIにインストール方法を問い合わせです。
![]() |
lgpioを使ってみましょう!
ついでなので、AIにlgpioをつかったLチカのサンプルプログラムを作ってもらいました。
![]()
|
サンプルプログラムだけでなく、ちゃんとコンパイルと実行方法も教えてくれます。
![]() |
実際にはコンパイルと実行は下記でいいようです。
cc -o blink blink.c -llgpio
./blink
動かしてみましょう!おっそ!!!
どのくらいのGPIOのON/OFFの実行速度が出るか調べるために、
サンプルプログラムをすこし改変して、単純にON/OFFを繰り返すだけにします。
| #include <stdio.h> #include <lgpio.h> int main(void) { int i; int h = lgGpiochipOpen(0); if (h < 0) { printf("gpiochip open error\n"); return 1; } lgGpioClaimOutput(h, 0, 17, 0); while(1){ lgGpioWrite(h, 17, 1); lgGpioWrite(h, 17, 0); } lgGpiochipClose(h); return 0; } |
これを実行して、GPIOピンの波形を調べてみました。
おっそ!
なんと、パルスの周波数はたかだか240kHzです。GPIOのONあるいはOFFに
それぞれ約2usの時間がかかるようです。こりゃ、遅すぎます。
たしかWiringPiをつかったときはnsオーダだったはず。PIC(64MHz)でも62.5nsで実行可能です。
これだけ遅いと、使い物にならないなあ〜。

GPIOの出力波形です。え?こんなに遅いの?

繰り返し周波数はなんと240kHzしかでません。ON/OFFにそれぞれ約2usかかる計算です。
まとめ
ラズパイ5でGPIOを制御するライブラリとしてlgpioがありました。
ただし、GPIOのOn.OFFの実行速度がかなり遅いです。
これならば、ラズパイ4ではWiringPiを使ったほうがはるかにいいでしょう。
ということで、ラズパイ5の購入は当面なさそうです。
<念のため>
ラズパイ4+WiringPiの場合です。

周波数32MHzなのでOn/OFFは約16nsです。lgpioより100倍以上早いです。
(おしまい)