C言語でボタン状態の取得

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

となった

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です