ラズパイ:C言語でGPIOポートを制御できるWiringPiのインストール方法

スポンサーリンク
ラズパイ:C言語でGPIOポートを制御できるWiringPiのインストール方法 C言語

C言語GPIOポートを制御できるWiringPiというライブラリがあります。
ラズベリーパイのターミナルから「apt-get」コマンドで簡単にインストールできればいいのですが、残念ながらWiringPiは、GitHubからダウンロードして自分のパソコンでビルドして使う形になります。

以下、ラズパイにWiringPiをインストールする手順です。
ちなみに現在では、WiringPiをPythonやPHP、Rubyからも利用できるようです。

GitHubからWiringPiをダウンロードする

ラズパイがネット環境に繋がっているとします。
以下のコマンドをターミナルから実行

git clone https://github.com/WiringPi/WiringPi.git

実行したディレクトリにWiringPiというディレクトリが作成されていればダウンロード成功です。

WiringPiのビルド

gccコンパイラでビルドをします。

まず先ほどダウンロードしたWiringPiディレクトリに移動

cd WiringPi

次にビルドを行います。

sudo ./build

これでWiringPiライブラリを使える環境が整いました。
ちなみにターミナルからGPIOコマンドを利用できるgpioコマンドも使えるようになっているので、このコマンドのバージョン確認ができれば、うまくインストールできています。

gpioコマンドのバージョン確認方法

gpio -v

表示イメージ

gpio version: 2.46
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Model A+, Revision: 01, Memory: 256MB, Maker: Sony
  * Device tree is enabled.
  *--> Raspberry Pi Model A Plus Rev 1.1
  * This Raspberry Pi supports user-level GPIO access.

gccでのコンパイル方法

gccでコンパイルする際は、-lwiringPiオプションをつけてコンパイルします。

gcc -o 《実行ファイル名》 《C言語ソースコード名》 -lwiringPi

ちなみにわたしはC言語で圧電スピーカーを鳴らすためにこのWiringPiというライブラリをインストールしました。

その時に使ったプログラムです。

atuden.c

#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h> // WiringPiのライブラリ
#include <softTone.h> // WiringPiのソフトウェアトーンライブラリ
#define C 262
#define D 294
#define E 330
#define F 349
#define G 392
#define A 440
#define B 494
#define Cc 523

#define MAX 17
const int SPK = 25;   // スピーカーのGPIO
// ドレミファソラシドの周波数値を持つ配列
//const int scale[8] = {262, 294, 330, 349, 392, 440, 497, 523};
const int scale[MAX] = {C, E, D, G, G, D, E, C, 0, E, C, D, G, G, D, E, C};
/* ドーミーレーソー、ソーレーミードー、ミードーレーソー、ソーレーミードー */
int main(void) {
  int i; // カウント用
  if (wiringPiSetupGpio() < 0) {  // WiringPi初期化
    printf("gpio error.\n");
    return EXIT_FAILURE;
  }
  if (softToneCreate(SPK) != 0) { // Software Toneの初期化
    printf("softToneCreate error.\n");
    return EXIT_FAILURE;
  }
  for (i = 0 ; i < MAX ; ++i) {     // ドレミファソラシドの出力
    printf("%03d\n", scale[i]);   // コンソールへ周波数値を表示
    softToneWrite(SPK, scale[i]); // 音の出力
    delay(500); // 500ミリ秒間同じ音を出力するために処理を遅延
  }
  return EXIT_SUCCESS;
}

このプログラムだと以下のようにコンパイルします。

gcc -o atuden atuden.c -lwiringPi

実行方法

sudo ./atuden

ラズパイのGPIO25のポートに圧電スピーカーをつなげると音がでます。
ただし、このプログラム自体は圧電スピーカをつなげなくても実行はできますので、確認用にお使いください。

実行するとターミナルには以下のように表示されるはずです。

262
330
294
392
392
294
330
262
000
330
262
294
392
392
294
330
262

余談ですが、C言語で電子回路関係のプログラミングをしているとなぜか「いじっている」という感じになりますね。(わたしだけですかね)

コメント

  1. いとう伊藤 勝 より:

    助かりました。dorogon.netが見つからなくて、WiringPiをインストールできないで困っていました。情報が古かったのですね。無事、インストールできました。ありがとうございます。

タイトルとURLをコピーしました