Make.

GPIOでLEDの点滅(C言語)

Pocket

Pythonで制御することが多いRaspberryPiですが、ここではC言語でRaspberry PiのGPIOを操作します。
C言語でのGPIOを操作するためのライブラリとして「wiringPi」を使用します。
RaspberryPiとLEDとの接続は、GPIOでLEDの点滅(Python)と同じものとします。


「wiringPi」のインストール

「wiringPi」をダウンロードして、インストールする手順は以下の通りとする。
ソフトパッケージがないため、ソースコードから取得します。ソースコードの取得には、gitを使用するため、gitがインストールされていない場合は、「apt-get install git」として、インストールします。

gitでソースコードを取得して、コンパイルします。
コンパイルが完了すると、インストールが始まります。

$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build

インストールが完了したら、バージョンを表示して確認してみましょう。

$ gpio -v
gpio version: 2.14
Copyright (c) 2012-2014 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
This Raspberry Pi is a revision 2 board.

動作確認

「wiringPi」では、プログラムを書かなくても、コマンドを打つだけでGPIOを制御可能です。GPIO17をONにして、LEDを点灯させてみましょう。

$ gpio -g write 17 1

消灯するには、以下のコマンドを実行します。

$ gpio -g write 17 0

サンプルプログラム

GPIO17にLEDを接続して、点灯、消灯を繰り返す簡単なプログラムを描いてみましょう。

#include <wiringPi.h>
 
#define GPIO17 17
 
int main(void) {
    int i;
 
    if(wiringPiSetupGpio() == -1) return 1;
 
    pinMode(GPIO17, OUTPUT);
 
    for(i=0; i<10; i++){
        digitalWrite(GPIO17, 0);
        delay(950);
        digitalWrite(GPIO17, 1);
        delay(50);
    }
 
    digitalWrite(GPIO17, 0);
 
    return 0;
}

ソースコードを書き終わったら、プログラムのコンパイル&実行を行う。
コンパイルはgccコマンドで行いますが、「-lwiringPi」で、ライブラリをリンクする必要があります。

以下のコマンドを実行すると、LEDを点滅させることができます。

$ gcc -o sample wiringpi_sample.c -I/usr/local/include -L/usr/local/lib -lwiringPi
$ ./sample

Pythonだけでなく、GPIOもC言語で同じように制御することができます。

Pocket