ラズベリーパイのGPIOを使ってLチカ
今回の内容
ラズベリーパイにはGPIOというセンサや電子回路を繋ぐことができるポートがあります。今回は、C言語からラズベリーパイのGPIOを使ってLEDを点滅させてみます。C言語からGPIOを制御するためのライブラリとしてWiringPiというものがあります。このWiringPiのインストールや使い方を踏まえてLEDを点滅するプログラムを開発していきます。
ラズベリーパイ2をご利用の方
ラズベリーパイ2を使用している方は、お手数ですが以下のページで、ラズパイ2でのwiringPiの使い方について説明しておりますのでご覧ください。
前回までの内容は?
前回までで、ラズベリーパイを使うための設定(OSのインストール等)をして、SSHでリモート接続ができるようになりました。前回までの内容が気になる方や、ラズベリーパイをもっと活用したい方 は、ぜひ以下の記事をご確認ください。
GPIOとは
ラズベリーパイにはGPIO(General Purpose Input/Outut)、つまり入出力端子が備わっています。このGPIOを使って、ラズベリーパイから外部へ信号を出力したり、受信したりすることができます。今回使用するラズパイ(モデルB)のGPIOピンには26ピンが付いています。
GPIOのピン配置については、後で説明をします。
 
                    WiringPiのインストールと使い方
wiringPiのインストールと、その使い方を説明します。ここでは、c言語でwiringPiを用いてLEDを点滅させることを最終目標に説明していきます。
wiringPiのインストール
                 ラズベリーパイを起動し、LXTerminalを開きます。
                以下のコマンドを打ち込み、wiringPiのソースコードを取得します。
              
git clone git://git.drogon.net/wiringPi
ソースコード取得後、wiringPiディレクトリに移動し、ソースコードのビルドを行います。コマンドは以下の通りです。
cd wiringPi ./build
これでwiringPiのインストールは完了です。
WiringPiでのGPIOピン配置
GPIOのピン配置は以下のようになっています。図2の右側はこちらの画像をお借りしました。
※ラズパイ2やラズパイ(モデルB+)を使用の方は、GPIOのピン数が増えているためラズベリーパイ2のGPIOを使ってLチカの記事をご覧ください。
 
                    
                図3にwiringPiとGPIOの対応をまとめました。このピン配置は、GordonsProjectsさんを参考にしました。
               例えば、ラズパイの11番ピン(GPIO0)を使うには、wiringPi上で0番を指定すればいいことになります。
              
 
                    また、ピン配置情報はラズベリーパイのLXTerminalから、以下のコマンドより確認することもできます。
gpio readall
WiringPiの使い方
                wiringPiを用いてC言語で、LEDを点滅させてみます。wiringPiは、wiringPi.hをインクルードすることでC言語から扱うことができます。
                 ラズベリーパイの11pin(wiringPiでは0を指定)に接続したLEDを1秒間隔で点滅させるプログラムを以下に示します。
              
/* testLED.c */
#include <wiringPi.h>
#include <stdio.h>
#define WRITE_PIN 0
int main(void)
{
    if(wiringPiSetup() == -1){
        printf("error wiringPi setup\n");
        return 1;
    }
    pinMode(WRITE_PIN, OUTPUT);
    while(1){
        digitalWrite(WRITE_PIN, 0);  //LED off
        delay(1000);    //wait 1000ms
        digitalWrite(WRITE_PIN, 1);  //LED on
        delay(1000);    //wait 1000ms
    }
    return 0;
}
              このプログラムをtestLED.cとして保存し、コンパイル・実行ファイルを作成します。
sudo gcc testLED.c -o testLED -lwiringPi
実行します。
sudo ./testLED
無事にwiringPiを使って、LEDが以下のようにon・offを1秒おきに点滅しました。
 
                   
                  | << ラズパイをリモート操作するへ | ラズパイでエアコンを動かすへ >> | 
 
       
           
           
           
          