マイコン制御の基礎の一つ、スイッチからの入力を基に機器を制御する方法を説明します。マイコンのI/Oポートにスイッチをつなぎ、スイッチのON/OFFで別のI/Oポートに接続したLEDを点灯/消灯させてみましょう。

まず、以下のような回路を作成します。

用意する部品は、以下の通り。

部品名数量
タクトスイッチ1
抵抗(10kΩ)1
ピンヘッダ(3ピン) 1
ユニバーサル基板(6×8程度) 1

部品を確認したら、レイアウトを決めます。

部品は、はんだ付けや配線がしやすいように適度に間隔をあけて配置します。

次に、右図のように部品の足を折り曲げて余分な部分をカットし、その他の配線にはスズメッキ線などを使用し、 回路図通りに配線します。

はんだ付けの際は、このようなクリップがあると便利です。

※このクリップは、こちらのサイトで販売しています。

電源ピンとI/Oポートピンをスイッチで直接ON/OFFするだけでもI/OポートでスイッチのON/OFFを検出できますが、入力が安定しないので上図のように抵抗を接続します。抵抗は 10kΩ 程度のものを使用するとよいでしょう。

スイッチには様々なものがありますが、今回はタクトスイッチを使用します。タクトスイッチのピン配置はデータシートに記載されていますが、テスターの導通機能でボタンを押したときに電気が流れるピンの組み合わせを確認したほうが早いでしょう。

回路が出来たら次はプログラムを作成します。ここでは Arduino IDE でArduino UNO のプログラムを作成する例を紹介します。

まず、Arduino IDE の設定が以下のように設定してください。Arduino UNO との通信に使用するCOMポートの確認方法はこちら

Arduino IDE の設定が出来たら以下のプログラムを入力してください。

/*— Switch ON/OFF 入力検出プログラム — */

#define SW_PORT 5 //スイッチを接続するポート(ピン番号)を定義する

void setup() {
// シリアルポート初期化(ボーレート)115200
Serial.begin(115200);
// LEDを接続するI/Oポートをデジタル出力に設定する
pinMode( SW_PORT, INPUT );
}

void loop() {
  if( digitalRead( SW_PORT ) == HIGH ){ // Switch ON
    Serial.println( "ON" );
  }
  else{   // Switch OFF
    Serial.println( "OFF");
  }
  // 100msec待つ
  delay( 100 );
}

プログラムが出来たらコンパイルしてArduino UNO に書き込みます。

プログラムの書き込みが成功したら、Arduino IDE の [ツール]-[シリアルモニタ]を選択しシリアルモニタを起動します。

スイッチを押してみて下さい。シリアルモニタにスイッチを押したときは”ON”、それ以外の時は”OFF”と表示されます。

ここで紹介したスイッチ入力に必要な電子部品は下記サイトから購入できます。

スイッチ回路部品

はんだ付け補助クリッ

Arduino UNO