【電子工作】pigpiod(デーモン) + C言語でLチカしてみる(Raspberry Pi 4で遊ぼう日記 その12)

投稿日:2022年5月23日
最終更新日:2022年5月25日

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以外の部品を使って遊んでいきたい。

 

日記まとめ

ラズパイで遊んでみた軌跡を以下でまとめてます。

【電子工作】Raspberry Pi 4で遊ぼう日記 まとめ

 


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください