C言語でボタン状態の取得
WiringPi のC言語ライブラリにある
digitalRead() を使うことで
指定したGPIOポートの値を取得できる
vim button.c
でファイルを作成
ソースは
#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
pinMode(BTN_PORT,INPUT);
digitalRead(GPIOポート番号)
でポートの値を取得
今回は
data = digitalRead(BTN_PORT);
として結果を変数data に格納している
これで
cc -o button button.c -lwiringPi
でコンパイル
構文は
cc -o 任意の名前 Cソースファイル名 -lwiringPi
これで実行するけど
権利者権限で実行しないとエラーになるので
sudo ./button
これでボタンをおすと1
ボタンを押していないと0
が10回まで表示される
結果は
GPIO25 = 0 GPIO25 = 0 GPIO25 = 0 GPIO25 = 1 GPIO25 = 1 GPIO25 = 0 GPIO25 = 1 GPIO25 = 0 GPIO25 = 1 GPIO25 = 0
となった