スイッチの一種で、ボタンを押すと、オンの状態、離すとオフの状態になる。
ボタンの内部を図式すると、以下のようになる。
端子がついている縦はもともと内部つながっており、横はスイッチを押すことで、接続(通電)される。
縦の列は上側と下側の2つ存在するが、どちらを用いてもよい。
今回は、タクトスイッチと抵抗を以下のように接続した。
ボタンは、ブレッドボード中央のスペースを利用して接続する。
5Vの電源のほかに、ボタンの状態を読み取るために、別途GPIOの端子を使用する必要がある。
ボタンがON になると、GPIO側に5Vの電流が流れるようになっている。
ボタンがOFFになると、GNDに電流が流れるようになっている。このとき、電流が流れすぎないように抵抗を挟んでいる。
ちなみに今回は、電源(赤)を下側に接続し、GND(黒)とGPIO(青)を上側に接続した。
#include <wiringPi.h>
#include <stdio.h>
#define BUTTON 6
int main(void) {
wiringPiSetup();
pinMode(BUTTON, INPUT);
int buttonState = 0;
while(1) {
buttonState = digitalRead(BUTTON);
printf("%d\n", buttonState);
delay(200);
}
return 0;
}
今回は、ボタンの情報をコンソールに出力するプログラムを作成した。
最初にBUTTONマクロを定義し、接続したピンのwPi番号を設定した。
7行目では、ボタンを接続したピンを、読み取りにモードにしている。
9行目で、変数buttonStateを用意し、0で初期化する。
次の行からは、while文で無限ループとしている。
11行目で、ボタンの状態を読み取り、変数buttonStateに代入している。
12行目で、変数buttonStateを表示している。
ボタンが押されていれば1、押されていなければ0と表示される。
最後の2msの待ちは、ボタンの読み取り間隔と、ループ文の時間を調整するためのものである。