第6回 スイッチを追加する

ブレッドボードにスイッチを追加します。

目次

作業後のブレッドボード

作業を始める前に、スイッチを追加したあとのブレッドボードの状態を確認しておきます。

現在のブレッドボードはスイッチが1個実装されていますが、今回の記事では追加でスイッチ2個実装します。

実装する場所は右側の領域の空いているところにします。

作業を始める前に、完成した状態を確認しておきましょうね。

スイッチ追加完成図

今回の作業では上のイラストのように2個のスイッチをArduino Microに追加します。

それでは一緒に作業していきましょう!

現在のブレッドボード確認

最初に現在のブレッドボードの実装状態を確認しておきます。

基礎編パート1では次のようにブレッドボードを製作しました。ご自身の状態が以下のようになっているか念のため確認しておきたいと思います。

作業前のブレッドボード

基礎編パート1では、Arduino Microの「A5」端子にスイッチを接続しました。

今回追加するスイッチ2個は、この隣の2つのピンを使用します。

具体的には「A4」ピンと「A3」端子を使用します。

それでは、スイッチを2個追加していきましょう。

準備するものはスイッチ2個とジャンパワイヤーセットです。

なお、スイッチの回路は基礎編パート1で詳しく説明しましたので、今回はその説明は省略します。

もし忘れてしまった場合は基礎編パート1の第19回を確認してみてください。

スイッチを追加する

スイッチはジャンパワイヤーで接続しますが、長いジャンパワイヤーは長さが限定されています。

スイッチを適当なところに配置してしまうと、それに合う長さのジャンパーワイヤが見つからない可能性があります。

そこで、最初にジャンパワイヤーを取り付けて、そのあとスイッチをセットすることにします。


それでは追加の1個目のスイッチを接続していきましょう。

おそらく長い黄色のジャンパワイヤーが適切な長さだと思います。

最初に、次の手順❶のように片側をArduino Microの「A4」ピンのところに接続し、次に手順❷のようにもう片側を届くところに接続します。

スイッチ追加 1-1

ジャンパワイヤーの位置が決まったら、以下の手順❸のようにジャンパワイヤの位置に合わせてスイッチをセットしてください。

そのあとに、手順❹のようにスイッチのもう片側をマイナスのラインに接続して完成です。

スイッチ追加

同じようにもう1個のスイッチを以下のような手順で追加してください。長い緑色のジャンパワイヤーが合っていると思います。

2個目のスイッチ追加

これで2個のスイッチが追加できました!

動作確認

スイッチの追加はそれほど大変ではありませんでしたが、うまく接続できたかちょっと不安ですよね。

そこで、動作確認してみましょう。

動作確認用のスケッチは「0.5秒ごとにスイッチの状態を読み取ってシリアルモニタに表示する」という内容にします。

スイッチの状態を digitalRead 関数で読み取り、その値をそのままシリアルモニタで表示して確認します。

シリアルモニタに表示される値は digitalRead 関数で読み取った値のままですので、スイッチが押されていない場合は1、押されている場合は0が表示されます。

プログラムを作るのはちょっと面倒だと思いますので、以下のプログラムをコピペして動作確認してみてください。

また、Arduino Microにスケッチを送る前に、シリアルモニタのウインドウを開いておくことを忘れないようにしてください。

/*
 *  スイッチ動作確認プログラム
 *  内容: A3、A4、A5ピンに接続されたスイッチが正常に動作する確認するスケッチ
 *      digitalRead()で読み取った値をそのままシリアルモニタに表示する
 */

// スイッチのピン接続番号
#define SWITCH_HIDARI  A5
#define SWITCH_CHUO    A4
#define SWITCH_MIGI    A3

void setup() {
  // ピン設定
  pinMode(SWITCH_HIDARI, INPUT_PULLUP);
  pinMode(SWITCH_CHUO,   INPUT_PULLUP);
  pinMode(SWITCH_MIGI,   INPUT_PULLUP);

  // シリアルモニタ初期化
  Serial.begin(9600);

  // シリアルモニタ準備待ち
  while( !Serial ) {
  }  
}

void loop() {
  // 左スイッチ状態の読み取り
  Serial.print(digitalRead(SWITCH_HIDARI));
  Serial.print("  ");  // スペースをあける

  // 中央スイッチ状態の読み取り
  Serial.print(digitalRead(SWITCH_CHUO));
  Serial.print("  ");  // スペースをあける

  // 左スイッチ状態の読み取り
  Serial.print(digitalRead(SWITCH_MIGI));
  Serial.println("  ");  // スペースをあけて改行する

  // 0.5秒待つ
  delay(500);
}

動作確認できましたか?

Arduino Microが動作を開始すると、シリアルモニタに以下のように表示されますよね。

1 1 1
1 1 1
1 1 1
1 1 1
1 1 1

この状態で、左側のスイッチを押すと以下のように表示が変化します。

0 1 1
0 1 1
0 1 1

中央のスイッチを押すと次のように表示が変化するはずです。

1 0 1
1 0 1
1 0 1

右側のスイッチを押すと次のように変化します。

1 1 0
1 1 0
1 1 0

このように表示されていればスイッチは正しく実装できています。

おめでとうございます!お疲れさまでした!

ミニチャレンジ課題

課題

さて、スイッチ動作確認とはいえ、「1 1 1」という表示はなんともわかりづらいですよね。

そこで、ミニチャレンジ課題で表示を変更してみたいと思います。

ミニチャレンジ課題

次のようにスイッチが押されている場合は「ON」、押されていない場合は「OFF」と表示されるようにプログラムを変更してください。

OFF OFF OFF
OFF OFF OFF
ON  OFF OFF
ON  OFF OFF
ON  OFF OFF
OFF OFF OFF
OFF OFF OFF
:
:

解答例

「 “ON”か”OFF”のどちらかをシリアルモニタに表示する」という同じ処理が3回出てきますので、この部分を関数にしてみました。

関数にせずにそのままスケッチに3回処理を書いてもまったく問題ありません。動けばOKです!

/*
 *  Arduino入門 基礎編パート2 第6回
 *    ミニチャレンジ課題解答例
 */

// スイッチのピン接続番号
#define SWITCH_HIDARI  A5
#define SWITCH_CHUO    A4
#define SWITCH_MIGI    A3


// digitalReadの値に応じて"ON"または"OFF"をシリアルモニタに表示
//   0か1のどちらかなので、ifで2つケースを処理する
//   digitalReadの値が1のときOFF、0のときON
void showOnOff(uint8_t switch_status) {
  if( switch_status ) {
    // OFFの時
    Serial.print("OFF ");    
  } else {
    // ONのとき
    Serial.print("ON  ");
  }
}


void setup() {
  // ピン設定
  pinMode(SWITCH_HIDARI, INPUT_PULLUP);
  pinMode(SWITCH_CHUO,   INPUT_PULLUP);
  pinMode(SWITCH_MIGI,   INPUT_PULLUP);

  // シリアルモニタ初期化
  Serial.begin(9600);

  // シリアルモニタ準備待ち
  while( !Serial ) {
  }  
}

void loop() {

  showOnOff( digitalRead(SWITCH_HIDARI) ); // 左側スイッチ
  showOnOff( digitalRead(SWITCH_CHUO) );   // 中央スイッチ
  showOnOff( digitalRead(SWITCH_MIGI) );   // 右側スイッチ
  Serial.println(); // 改行する

  // 0.5秒待つ
  delay(500);
}

更新履歴

日付内容
2021.8.3新規投稿
2025.2.3Arduinoボード端子の名称変更
ミニチャレンジ課題解答例追加
通知の設定
通知タイミング
guest
0 コメント
新しい準
古い順 一番投票が多い
本文中にフィードバック
全てのコメントを見る
目次