🤖
エンジくん
これまでArduinoから「出力」ばかりしてきたね。今日はいよいよ「入力」!ボタンを押したらLEDが光る、インタラクティブな回路を作ろう!
1このレッスンで学ぶこと
- 🔘 タクトスイッチ(プッシュボタン)の仕組み
- 📖 digitalRead() — ピンの状態を読む
- ⬆️ INPUT_PULLUP — 内部プルアップ抵抗を使う
- 🔀 if / else — 条件によって動作を変える
- 🎮 ボタンシミュレーター — クリックでLEDをON/OFF!
2用意するもの
Arduino Uno
× 1
タクトスイッチ
× 1
LED(赤)
× 1
220Ω抵抗
× 1
ブレッドボード
× 1
ジャンパー線
数本
3デジタル入力のしくみ
🔘 タクトスイッチとは?
タクトスイッチは「押している間だけ回路がつながる」部品です。押すと中の金属板が接触して電気が流れ、離すと切れます。
⬆️ INPUT_PULLUPって何?
Arduino内部には「プルアップ抵抗」という小さな抵抗が入っています。INPUT_PULLUPを使うとボタン1個とGNDだけで回路が完成します。
⬆️ ボタンを離しているとき → HIGH(5V)
⬇️ ボタンを押しているとき → LOW(0V)
⚠️ 「押したらLOW」が逆っぽいけど正しい!これがINPUT_PULLUPの特徴です。
4コードを見てみよう
// ピンの番号を定数で決める
const int BTN_PIN = 2; // ボタン
const int LED_PIN = 9; // LED
void setup() {
// ボタンをINPUT_PULLUPに設定
pinMode(BTN_PIN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
// ボタンの状態を読む
int state = digitalRead(BTN_PIN);
if (state == LOW) {
// 押されているとき → LED ON
digitalWrite(LED_PIN, HIGH);
Serial.println("ボタン押された!");
} else {
// 離しているとき → LED OFF
digitalWrite(LED_PIN, LOW);
}
}
💡 INPUT_PULLUPを使うとボタンとGNDだけで回路が完成!外部に抵抗を付ける必要がないから便利だよ。
5回路のつなぎ方
⚠️ タクトスイッチは4本足のものが多いけど、対角線の2本が内側でつながっているよ。どちら向きにさしても大丈夫!
6実際につないでみよう!
7クイズに挑戦!
🤖
エンジくん
digitalRead()とINPUT_PULLUPの仕組みは理解できたかな?
クイズを読み込み中…
8ボタンシミュレーター 🔘
🤖
エンジくん
赤いボタンを押している間LEDが光るよ!
digitalRead()の値がリアルタイムで変わるのを見てみよう!
🔘 デジタル入力シミュレーター — ボタンを押してみよう!
タクトスイッチ
digitalRead(2)
HIGH
= 1
OFF
LED (D9)
int state = digitalRead(2); // → HIGH
if (state == LOW) {
digitalWrite(9, HIGH); ← LED ON
} else {
digitalWrite(9, LOW); ← LED OFF
}
if (state == LOW) {
digitalWrite(9, HIGH); ← LED ON
} else {
digitalWrite(9, LOW); ← LED OFF
}
9まとめ
- ✅
pinMode(pin, INPUT_PULLUP)でボタン入力を設定 - ✅
digitalRead(pin)でHIGHまたはLOWを読む - ✅ INPUT_PULLUPは「押したらLOW」が基本ルール
- ✅
if / elseで条件に応じた動作ができる - ✅ 外部抵抗なし・ボタン+GNDだけでOK!