pigpioとC言語でGPIOを制御してLEDを点滅させる
前回はpigpioというライブラリを使って、PythonのコードでLEDを点滅させてみた。今回はC言語でコードを書いて、Lチカをやってみる。
なお、C言語でLチカするときはpigpioライブラリを直接使って実行する方法と、pigpiod(デーモン)を介して実行する方法があるが、まず今回はgpioライブラリを直接使って制御してみる。
回路は前回同様、以下のセットを使ってブレッドボード上につくる。
実行環境
Raspberry Pi 4 Model B
Raspberry Pi OS (Bullseye)
pigpio 1.79-1+rpt1
gcc version 10.2.1 20210110 (Raspbian 10.2.1-6+rpi1)
ブレッドボードに回路をつくる
ここは前回と一緒。LEDと抵抗をラズベリーパイの35pin(GPIO 19)と39pin(GND)に接続した。抵抗値は330Ω。
Cのコードを書く
C言語についてはpigpioの公式ページのpigpio C InterfaceのページにC言語での使い方が書いてある。こちらを参考にして、以前つくったWiringPiのコードをベースに以下のコードを作成↓
#include <pigpio.h>
#include <unistd.h>
int main (void)
{
int led_gpio = 19;
gpioInitialise();
gpioSetMode(led_gpio, PI_OUTPUT);
while (1)
{
gpioWrite(led_gpio, 1);
usleep(500000);
gpioWrite(led_gpio, 0);
usleep(500000);
}
return 0 ;
}
gccでコンパイルする
コードを置いてあるディレクトリで公式ページに従って以下のコマンドを実行し、pigpio_ledという名前で実行ファイルを作成する。gccのオプションについては「gcc オプション」とかでググればたくさん情報が出てくるので、気になる方はググッてみてください。
$ gcc -Wall -pthread -o pigpio_led pigpio_led.c -lpigpio -lrt
問題なくコンパイルが通れば、C言語のコードと同じディレクトリにpigpio_ledというファイルができているはず。
実行時にpigpiodは起動しないこと
あとはコンパイルしてできたファイルを実行するだけだが、ここで一点注意がある。Pythonの時は
$ sudo pigpiod
でデーモンを起動させていたが、C言語でpigpio.hをincludeして直接ライブラリをlinkしている場合、デーモンを起動した状態でプログラムを実行するとエラーが出る。もしデーモンを起動させている場合は
$ sudo killall pigpiod
でデーモンを終了してからファイルを実行する。ファイルの実行は以下で行う。
$ sudo ./pigpio_led
これで無事にLチカは達成できた。次回はpigpiodを使ってデーモンを介してC言語のコードでGPIOを操作し、Lチカをやってみたい。
日記まとめ
ラズパイで遊んでみた軌跡を以下でまとめてます。


