🔍
エンジくん
ボタンを押すたびに数が増える「カウンター」を作ろう!変数とデバウンスのしくみを学べば、もっと高度なセンサープログラムが書けるようになるよ!
1
このレッスンで学ぶこと
- 📦 変数とは — int / bool / float などの型のちがい
- 🔢 カウンター —
counter++で値を増やす - ⚡ ボタンデバウンス — チャタリングを防ぐ方法
- 🕐 millis() — 経過時間を使ったタイミング制御
- 🎮 バーチャルカウンター — クリックで数を増やして花火を打ち上げよう!
2
用意するもの
💡 部品名をクリックすると詳しい説明が見られるよ!
3
変数ってなに?
🔍
エンジくん
変数は「数字や値を入れる箱」だよ!箱には名前(変数名)をつけて、中身を後から変えられる。
int counter = 0; // 整数型の変数「counter」を作って0で初期化
bool lastButton = HIGH; // 真偽値型「lastButton」(HIGH=true/LOW=false)
float voltage = 0.0; // 小数点型「voltage」(3.14など)
bool lastButton = HIGH; // 真偽値型「lastButton」(HIGH=true/LOW=false)
float voltage = 0.0; // 小数点型「voltage」(3.14など)
| 型 | 使える値 | 使用例 |
|---|---|---|
int |
-32768〜32767の整数 | カウンター、ピン番号 |
bool |
true / false(HIGH / LOW) | ボタンの状態 |
float |
3.14などの小数 | 電圧、温度 |
long |
非常に大きな整数 | millis()の戻り値 |
4
デバウンスってなに?チャタリング対策
⚡ チャタリングとは
タクトスイッチを1回押しただけなのに、機械的な接触が不安定で「ON→OFF→ON→OFF…」と細かく繰り返す現象。これが起こるとカウンターが1回で2〜5増えてしまう!
デバウンスの方法:millis()で経過時間を計り、前回のボタン変化から50ms以上たっていないと無視する。
millis()
プログラム開始からの経過ミリ秒を返す。long型の大きな数字になるよ。
lastButton
前回のループでのボタン状態を保存しておく変数。これで「変化した瞬間」だけを検出できる。
5
配線してコードを書こう!
🔌 配線メモ
- タクトスイッチ:D2ピン ↔ GND(INPUT_PULLUPを使うのでプルアップ抵抗不要)
- LED:D13ピン → 220Ω → LED → GND
int buttonPin = 2, ledPin = 13;
int counter = 0;
bool lastButton = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
bool btn = digitalRead(buttonPin);
if(btn == LOW && lastButton == HIGH) {
counter++;
Serial.print("Count: "); Serial.println(counter);
digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW);
}
lastButton = btn;
delay(10);
}
int counter = 0;
bool lastButton = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
bool btn = digitalRead(buttonPin);
if(btn == LOW && lastButton == HIGH) {
counter++;
Serial.print("Count: "); Serial.println(counter);
digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW);
}
lastButton = btn;
delay(10);
}
6
クイズに挑戦!
🔍
エンジくん
変数とデバウンスのポイントを確認しよう!4問あるよ。
クイズを読み込み中…
7
バーチャルカウンター🎮
🔍
エンジくん
大きなボタンを押してカウンターを増やそう!10回になると花火が打ち上がるよ🎆
🔢 バーチャルカウンター
0
COUNT
ボタンをタップしてカウントアップ!
8
まとめ
- ✅
int counter = 0;— 変数は値を入れる箱 - ✅
counter++— カウンターを1増やす(counter = counter + 1と同じ) - ✅ チャタリングはボタンの信号が細かく揺れる現象
- ✅
millis()で経過時間を計ってデバウンスできる - ✅
INPUT_PULLUPでプルアップ抵抗を内蔵できる