§2. 入力信号を受ける(タクトスイッチ)
ここでは、Arduinoで入力信号を扱う方法を学びます。具体的には、タクトスイッチ(ボタン)を押すとLEDが点灯するプログラムを作ります。
1.はじめに
はじめに、プルアップ/プルダウン抵抗について学びましょう。
プルアップ抵抗は、電子回路でスイッチやセンサーなどの入力が「未接続(浮いた状態)」になったときに信号が正しく「HIGH(1)」として認識されるように使う抵抗です。プルダウン抵抗はその逆で「LOW(0)」です。
※+側に抵抗があればプルアップ、-側にあればプルダウンと呼びます。
スイッチを押すと「HIGH」信号が発生する回路を「正論理スイッチ」といいます。反対に、スイッチを押すと「LOW」信号が発生する回路は「負論理入力回路」と呼ばれます。
今回の実験では、直感的に分かりやすい「正論理スイッチ」を使用し、その信号を利用してArduinoに接続したLEDの点灯状態を制御します。
2. 配線をしてみよう
タクトスイッチを使って、以下のように配線します。
・12番ピンにスイッチからの信号線を接続します。
・13番ピンには、先ほどと同様にLEDを接続します。
・スイッチと抵抗(1kΩ)を使って回路を組みます。(抵抗は1k~100kΩで大丈夫です)
配線が複雑に見えるかもしれませんが、タクトスイッチは「押したときにHIGH(信号が1)」、離したときに「LOW(信号が0)」をArduinoに送るだけです。
3.プログラムを書いてみよう
以下のプログラムを入力して、タクトスイッチの動作を試してみましょう。
void setup() {
pinMode(13, OUTPUT); // LED接続ピンを出力に設定
pinMode(12, INPUT); // スイッチ接続ピンを入力に設定
digitalWrite(13, LOW); // 初期状態でLEDを消灯
}
void loop() {
if (digitalRead(12) == HIGH) { // スイッチが押されている場合
digitalWrite(13, HIGH); // LEDを点灯
} else { // スイッチが押されていない場合
digitalWrite(13, LOW); // LEDを消灯
}
}
4.プログラムの意味を解説
pinMode()関数
Arduinoのピンの使い方を指定します。ここでは、12番ピンを「入力」、13番ピンを「出力」に設定しています。
digitalRead()関数
指定したピンの状態(HIGHまたはLOW)を読み取ります。スイッチが押さているとHIGH、押されていないとLOWになります。
digitalWrite()関数
指定したピンにHIGH(点灯)またはLOW(消灯)を出力します。
5.実行してみよう
Arduinoをパソコンに接続し、プログラムを書き込みます。
タクトスイッチを押してみましょう!LEDが点灯すれば成功です。
スイッチを離すと、LEDが消灯するはずです。
※ポイント
スイッチの動作原理:タクトスイッチは「オン・オフ」の信号を切り替えるシンプルな部品です。これを使うと、Arduinoに「押された」「離された」という指示を伝えることができます。
正論理 vs 負論理:今回の配線は「正論理スイッチ」と呼ばれるもので、スイッチを押すとHIGH信号が発生します。逆に、押すとLOW信号が発生する「負論理スイッチ」もあります。
これで、タクトスイッチを使った入力のプログラムが完成です!
私が代表を務める山形県のジオアルピーヌ合同会社では、多様な回路の設計および試作製造を承っております。
企業様向けのサービスはもちろん、学校教材としての電子回路設計・製作にも対応しております。
さらに、「ロボット」を例に挙げれば、回路設計や機械設計、部品調達からパッケージングまで、ワンストップでサポートいたします。
まずは、弊社のホームページよりお気軽にお問い合わせください。皆さまからのご連絡を心よりお待ちしております(^-^