C言語によるラズベリーパイ入出力GPIO制御
STEP1 テキストエディターでプログラムを記述
![](https://blogimg.goo.ne.jp/user_image/54/e2/e388c9cf054e67d5b91505eac64d59c7.jpg)
/home/pi/Testに保存(test1.c)![](https://blogimg.goo.ne.jp/user_image/47/59/69030628ab4c6a32311517f7c08dfc17.jpg)
![](https://blogimg.goo.ne.jp/user_image/47/59/69030628ab4c6a32311517f7c08dfc17.jpg)
![](https://blogimg.goo.ne.jp/user_image/23/11/4862f01ffd38c3da94a8a24c9cd5a183.jpg)
STEP2 gccコンパイラでプログラムを実行形式に変換
![](https://blogimg.goo.ne.jp/user_image/72/50/64d6f16311d25a3173d57a2bfb4e10b3.jpg)
STEP3 プログラムを実行
![](https://blogimg.goo.ne.jp/user_image/20/5d/e2cace88ac59622eda405b7ba2651088.jpg)
(1)Wiring Piのインストール&設定
Wiring Piとは、ラズパイでGPIOを制御するのに必要なC言語用のライブラリィ。C言語でGPIOを使うのにこのライブラリが必要なので最初にインストールする。WiringPiをインストールするとgpioというコマンドもインストールされる。このコマンドを使うと、シェル上でGPIOを制御することができる。
Wiring Pi のソースコードを Git で入手するための準備
$ sudo apt-get install libi2c-dev
$ sudo apt-get install git-core
ユーザーのホームディレクトリに移動し、ソースコードを入手
$ cd ~
$ git clone https://github.com/WiringPi/WiringPi.git
Wiring Pi のソースコードが wiringPiディレクトリとしてクローンされるので、ディレクトリ内に移動してビルドする。
$ cd WiringPi
$ ./build
gpio -vとコマンド入力するとversion: 2.70が表示され、正常インストールが確認できました。
![](https://blogimg.goo.ne.jp/user_image/4f/3a/2b2dbfbe22b751ac335a94f8f17fef0f.jpg)
gpio readall
![](https://blogimg.goo.ne.jp/user_image/77/1a/b530c1543cd2a53e38985b2cd1b3b162.jpg)
(2)C言語でWiringPiを操作
●インクルード宣言とライブラリ追加
プログラムの先頭でヘッダーファイルをインクルード
#include <wiringPi.h>
コンパイルするとWiringPiのライブラりが付加される
sudo gcc filename.c -o objname -lwiringPi
実行コマンド
sudo ./objname
●入出力端子の機能設定
WiringPi設定用関数
![](https://blogimg.goo.ne.jp/user_image/52/53/9e672e8e9c5e2d9733901f7a00574f0d.jpg)
①pinMode
指定したピンの動作モード設定
書式
void pinMode(int pin, int mode);
mode: 次のいずれか
INPUT
OUTPUT
PWM_OUTPUT(pin1(GPIO18)だけ)
GPIO_CLOCK(pin7GPIO4)だけ)
記述例
pinMode(2,OUTPUT):
②pullupDnControl
指定したピンのプルアップとプルダウンの設定
書式
void pillUpDncontrol (int pin, int pud):
pud:次のいずれか
PUD_OFF
PUD_DOWN, PUD_UP
記述例
pullUpDnControl(3, PUD_UP)
③digitalWrite
GPIOピンに出力
書式
void digitalWrite(int pin, int value);
value :次のいずれか
HIGH, LOW, 1,0
記述例
digitalWrite(2, HIGH);
④pwmWrite
pin1(GPIO18)のPWM出力のデューティ設定
書式
void pwmWrite(int pin, int value);
value: 0~1024の範囲
⑤digitalRead
GPIOピンから入力する
書式
int digitalRead(int pin);
戻り値:HIGH, LOW ,1, 0のいずれか
記述例
if(digitalRead(3))
(3)C言語xWiringPiでI/O!3色LEDの点滅
GPIO2,GPIO3,GPIO4の接続したLEDを順番に点滅させるプログラム
GPIO17端子の入力レベル(HまたはL)によって一定間隔を0.5秒と1秒に切り替えて点滅
![](https://blogimg.goo.ne.jp/user_image/14/1d/74480517bbdf3175de04f370ec4b4322.jpg)
最初にwiringPiのヘッダーファイルをインクルード
BCMのピン番号ですべてを制御
コマンドでコンパイル
sudo gcc test2.c -o test2 -lwiringPi
実行
sudo ./test2
ご不明の点はご遠慮なくお尋ね下さい。存じ上げていることは丁寧にご案内させていただきます。
TEL 090-3194-4902
TEL 090-3194-4902
![](https://blogimg.goo.ne.jp/user_image/5f/c6/5269333fb847c30d62024de645af6a19.jpg)