pigpiodとC言語でGPIOを制御してLEDを点滅させる
前回はpigpioというライブラリを直接使ってC言語でLチカをやったが、pigpiodというデーモンを使って実行する場合は少し方法が異なる。ということで、今回はpigpiodを使ってGPIOを操作してLチカしたいと思う。
回路は前回同様、以下のセットを使ってブレッドボード上につくる。
実行環境
Raspberry Pi 4 Model B
Raspberry Pi OS (Bullseye)
pigpio 1.79-1+rpt1
pigpiod 79(pigpiod -vコマンドで確認)
gcc version 10.2.1 20210110 (Raspbian 10.2.1-6+rpi1)
ブレッドボードに回路をつくる
ここは前回と一緒。LEDと抵抗をラズベリーパイの35pin(GPIO 19)と39pin(GND)に接続した。抵抗値は330Ω。
Cのコードを書く
pigpiodのC言語での使い方についてはpigpiodの公式ページのpigpiod C InterfaceのページにC言語での使い方が書いてある。前回のコードをベースにしつつ、こちらのページを参考に以下のコードを書いた。
前回はpigpio.hをincludeしたが、今回はpigpiod_if2.hをincludeしている。また、pigpioとは関数も異なるので注意。
#include <pigpiod_if2.h> #include <unistd.h> int main (void) { int pi = pigpio_start(0, 0); int led_gpio = 19; set_mode(pi, led_gpio, PI_OUTPUT); while (1) { gpio_write(pi, led_gpio, 1); usleep(500000); gpio_write(pi, led_gpio, 0); usleep(500000); } return 0 ; }
gccでコンパイルする
先ほどのコードをpigpiod_led.cという名前で保存し、コードが置いてあるディレクトリで公式ページに従って以下のコマンドを実行してpigpiod_ledという名前で実行ファイルを作成する。こちらもpigpioライブラリを直接使う時とはコマンドが異なる。(-lpigpiod_if2を指定する)
$ gcc -Wall -pthread -o pigpiod_led pigpiod_led.c -lpigpiod_if2 -lrt
問題なくコンパイルが通れば、C言語のコードと同じディレクトリにpigpiod_ledというファイルができているはず。
実行時にpigpiodは起動する
前回はpigpiodは起動せずにプログラムを実行したが、今回はpigpiodを使って実行するので、当然起動しておく必要がある。というわけで
sudo pigpiod
でpigpiodを起動する。その後、以下のコマンドでプログラムを実行する。
$ sudo ./pigpiod_led
これでpigpiodを使ってもLチカができた。そろそろLチカにも飽きてので、LED以外の部品を使って遊んでいきたい。
日記まとめ
ラズパイで遊んでみた軌跡を以下でまとめてます。