【電子工作】pigpio + C言語でLチカしてみる(Raspberry Pi 4で遊ぼう日記 その11)

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

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チカをやってみたい。

 

日記まとめ

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

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

 


投稿者: wakky

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

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