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言語で電子回路関係のプログラミングをしているとなぜか「いじっている」という感じになりますね。(わたしだけですかね)
コメント
助かりました。dorogon.netが見つからなくて、WiringPiをインストールできないで困っていました。情報が古かったのですね。無事、インストールできました。ありがとうございます。
管理人です。わたしも同じ経験をしたので、お役に立ててよかったです!