6.スイッチを使ってみよう

タクトスイッチ

今回は押しボタン式のタクトスイッチを使用します。

ボタンを押していない状態では縦方向のみ電気が流れます。

ボタンを押している間は横方向への電気が流れるようになります。

スイッチでLEDを点灯させてみよう

それでは先ほどのLED点灯回路に組み込んでみましょう。

まずはそのままPCに繋げてみましょう。

スイッチを押していない状態ではLEDは点灯しません。

スイッチを押すとLEDが点灯します。

スイッチのデータを取得してみよう

次に、ボタンスイッチの押下状態をデータで取得してみます。 回路は以下のようにしてみます。

ボタンスイッチのステータスを取得するためにDIGITALの7番ピンを使用します。

スケッチ

int b_pin = 7;   // デジタルデータ出力用ピン番号
int state = 0;   // ピンより取得したデータ格納用

void setup() {
  Serial.begin(38400);  
  pinMode(b_pin, INPUT);     // ボタンスイッチ用に入力に設定
}

void loop() {
  state = digitalRead(b_pin);  // ピンよりデータ取得
  Serial.println(state);       // シリアルモニタに出力
  delay(500);
}

ボードへの書き込み完了後、シリアルモニタを開いてみましょう。 シリアルモニタは画面右上にある虫眼鏡マークを押すと表示されます。

シリアルモニタが起動されますが、出力内容が正しくありません。
これは「Serial.begin」で設定した数値(38400)と、 シリアルモニタの右下の赤枠部分の数値(9600)が異なるためです。

右下の赤枠部分をクリックし、38400に変更してみましょう。

38400に変更すると数値が出力されるようになりました。
この状態でスイッチを押してみましょう。

スイッチを押していない状態で0、スイッチを押している状態で1が表示されます。

スイッチで点灯させるLEDを切り替えてみよう

ここまでできた方は、取得したデータによる処理の分岐をさせてみましょう。

スイッチを押していないときは1つ目のLEDのみ点灯し、スイッチを押している場合は2つ目のLEDのみ点灯するという回路を作ってみたいと思います。

回路

今回追加したのは12、13番ピンからそれぞれのLEDを通し、GNDまで繋げる箇所となります。

スケッチ

int b_pin = 7;  // デジタルデータ出力用ピン番号
int state = 0;   // ピンより取得したデータ格納用

int led1  = 13; // 1つ目のLEDのピン番号
int led2  = 12; // 2つ目のLEDのピン番号

void setup() {
  Serial.begin(38400);     // シリアルモニタ出力レート
  pinMode(b_pin, INPUT);   // ボタンスイッチを入力に設定
  pinMode(led1, OUTPUT);   // 1つ目のLEDを出力に設定
  pinMode(led2, OUTPUT);   // 2つ目のLEDを出力に設定
}

void loop() {
  state = digitalRead(b_pin);  // ピンよりデータ取得
  Serial.println(state);       // シリアルモニタに出力

  //取得データにより分岐
  if(state == 0){
    digitalWrite(led1,HIGH);  // 1つ目のLEDを点灯
    digitalWrite(led2,LOW);   // 2つ目のLEDを消灯
  }
  else{
    digitalWrite(led1,LOW);   // 1つ目のLEDを消灯
    digitalWrite(led2,HIGH);  // 2つ目のLEDを点灯
  }

  delay(100);
}

今回出てきた「if」は以下のような内容になります。

  if ( 条件 ) {
    条件に合った場合の処理
  }
  else {
    条件に合わなかった場合の処理
  }

スケッチまで終わりましたら書き込みを行い、結果を確認してみましょう。

results matching ""

    No results matching ""