2007年06月04日

Arduino

スイッチで入力をする

スイッチを押すと、LEDが点灯するものを作る。

必要なの物
arduino
ブレッドボード
・LED
ブレットボード用ジャンプワイヤー(自作でもよい)
スイッチ(今回はタクトスイッチにした)
・抵抗(数百Ωから数kΩ程度。今回は、220Ω)

写真のように回路を作る。
switch2.jpg

回路について
LEDは、前回と同じようにポートの13にさす。
スイッチを押すと、ポート2がHIGHになるように設定。
ポート2とスイッチと5Vをつなげば、いいように思うが、
スイッチを押していないときは、HIGHかLOWどちの状態になるかわからなくなる。
そこで、Gndにつないだ抵抗を、スイッチとつなげることで、
プルダウンさせて、押していないときは、LOWになるようにする。

以下は、arduinoのソース
int ledPin = 13;                      // ledピン
int inPutPin = 2;                     // スイッチ

void setup() {
  pinMode(ledPin, OUTPUT);            // 出力に設定
  pinMode(inPutPin, INPUT);           // 入力に設定
}

void loop(){
  int val = digitalRead(inPutPin);    // ボタンの状態
  
  if (val == HIGH) {                  // ボタンを押したとき
    digitalWrite(ledPin, HIGH);       // LEDが点灯する
  } else {
    digitalWrite(ledPin, LOW);
  }
}

arduinoのソースについて

はじめに、変数の定義を行います。
ここでは、ピンの設定をしています。

int ledPin = 13;                      // ledピン
int inPutPin = 2;                     // スイッチ

setup()の中では、基盤の初期設定をします。
ここでは、ポートの出力の設定をしています。

void setup() {
  pinMode(ledPin, OUTPUT);            // 出力に設定
  pinMode(inPutPin, INPUT);           // 入力に設定
}

loop()の中では、基盤の動作処理を書きます。
digitalRead(ポート番号)で、ボタンの状態を読み込んだ後、
if文でボタンの状態をdigitalWriteコマンドで、LEDに反映させています。

void loop(){
  int val = digitalRead(inPutPin);    // ボタンの状態
  
  if (val == HIGH) {                  // ボタンを押したとき
    digitalWrite(ledPin, HIGH);       // LEDが点灯する
  } else {
    digitalWrite(ledPin, LOW);
  }
}