C言語でボタン状態の取得
WiringPi のC言語ライブラリにある
digitalRead() を使うことで
指定したGPIOポートの値を取得できる
1 | vim button.c |
でファイルを作成
ソースは
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include<stdio.h> #include<wiringPi.h> #define BTN_PORT 25 int main( void ){ int data, i; //初期化 if (wiringPiSetupGpio() == -1) return 1; //GPIO mode in pinMode(BTN_PORT,INPUT); //読み込み for (i=0; i<10;i++){ //GPIO の値読み込み data = digitalRead(BTN_PORT); printf ( "GPIO%d = %d\n" ,BTN_PORT,data); //1秒まつ sleep(1); } return 0; } |
最初に
#include
でライブラリなどを読み込む
#define は定数の定義
wiringPiSetupGpio() は
wiringPi の初期化
pinMode(GPIOポート番号 , 入力モード)
でポートのモードを設定
今回なら in モードなので INPUT
1 | pinMode(BTN_PORT,INPUT); |
digitalRead(GPIOポート番号)
でポートの値を取得
今回は
1 | data = digitalRead(BTN_PORT); |
として結果を変数data に格納している
これで
1 | cc -o button button.c -lwiringPi |
でコンパイル
構文は
1 | cc -o 任意の名前 Cソースファイル名 -lwiringPi |
これで実行するけど
権利者権限で実行しないとエラーになるので
1 | sudo . /button |
これでボタンをおすと1
ボタンを押していないと0
が10回まで表示される
結果は
1 2 3 4 5 6 7 8 9 10 | GPIO25 = 0 GPIO25 = 0 GPIO25 = 0 GPIO25 = 1 GPIO25 = 1 GPIO25 = 0 GPIO25 = 1 GPIO25 = 0 GPIO25 = 1 GPIO25 = 0 |
となった