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

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

WiringPiとC言語でGPIOを制御する

前回はWiringPiのPythonパッケージをインストールしてLEDを点滅させてみたが、もともとWiringPiはC言語のライブラリなので、Cのプログラムで使用することも可能。

といことで、今回はC言語をコンパイルして実行する練習も兼ねて、WiringPiをC言語のコードの中で使ってLEDを光らせてみる。

※前回も書いたが、WiringPiは2019年で作者による開発が停止されているので今後使う予定の人はご注意を。

回路は前回同様、以下のセットを使ってブレッドボード上につくる。

 

実行環境

Raspberry Pi 4 Model B

Raspberry Pi OS (Bullseye)

wiringpi 2.52

gcc version 10.2.1 20210110 (Raspbian 10.2.1-6+rpi1)

 

ブレッドボードに回路をつくる

ここは前回と変わらず。LEDと抵抗をラズベリーパイの35pin(GPIO 19)と39pin(GND)に接続した。抵抗値は330Ω。

Cのコードを書く

C言語についてはWiringPiの公式ページにサンプルがあるので、こちらを参考にして作成。ほとんどサンプルコードと一緒だが、ピンをBCM(Raspberry PiのSoC)のピン番号で指定したかったので、wiringPiSetupではなくwiringPiSetupGpioでピンアサインを設定している。

設定方法の詳細については公式サイトのreferenceを参照。

#include <wiringPi.h>

int main (void)
{
    int led_gpio = 19;
    wiringPiSetupGpio();
    pinMode(led_gpio, OUTPUT);

    while (1)
    {
        digitalWrite(led_gpio, HIGH);
        delay(500);
        digitalWrite(led_gpio, LOW);
        delay(500);
    }
    return 0 ;
}

 

gccでコンパイルして実行

C言語で書いたコードはコンパイラでコンパイルしてから実行する必要がある。Rasberry Pi OSには最初からgccというコンパイラがインストールされているので、今回はこのコンパイラを使う。試しにVersionを確認して見ると、10.2.1のコンパイラがインストールされていた。

$ gcc -v
…
gcc version 10.2.1 20210110 (Raspbian 10.2.1-6+rpi1)

コードを置いてあるディレクトリで以下を実行し、wiringpi_ledという名前で実行ファイルを作成する。gccのオプションについては「gcc オプション」とかでググればたくさん情報が出てくるので、気になる方はググッてみてください。

$ gcc -Wall -o wiringpi_led wiringpi_led.c -lwiringPi

そして以下を実行すればプログラムが動く。

$ sudo ./wiringpi_led

これで無事に光った。以下が光っている様子。

これでLチカは完了。次のステップへ…と行きたいところだが、実はもう一個やりたいことがある。これまでLinuxのsysfsを使ったり、ライブラリ(Wiring)を使ったりしてGPIOを操作したが、ラズパイにのっているSoC(BCM2711)のレジスタを直接叩いて、GPIOを操作するという方法がある。

次回はC言語やラズパイのSoCの勉強も兼ねて、レジスタを叩いてGPIOを操作してLチカをやってみたい。

 

日記まとめ

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

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

 


投稿者: wakky

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

コメントを残す

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

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