ホーム 🔍 センサー Lesson 9
🔍 Chapter 3 • センサー

ボタンでかずかぞえよう!カウンターをつく

⏱ やく50ぷん
🔘 タクトスイッチ
📊 変数へんすう・カウンター
🔍
エンジくん ボタンをすたびにかずえる「カウンター」をつくろう!変数へんすうとデバウンスのしくみをまなべば、もっと高度こうどセンサーせんさープログラムがけるようになるよ!

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など)
かた 使つかえる 使用例しようれい
int -32768〜32767の整数せいすう カウンター、ピン番号ばんごう
bool true / false(HIGH / LOW) ボタンの状態じょうたい
float 3.14などの小数しょうすう 電圧でんあつ温度おんど
long 非常ひじょうおおきな整数せいすう millis()のもど

4
デバウンスってなに?チャタリング対策たいさく

⚡ チャタリングとは

タクトスイッチを1かいしただけなのに、機械的きかいてき接触せっしょく不安定ふあんていで「ON→OFF→ON→OFF…」とこまかくかえ現象げんしょう。これがこるとカウンターが1かいで2〜5えてしまう!

HIGH LOW チャタリングあり(生の信号) チャタリング デバウンス後(安定した信号) きれいな1回の押し下げ

デバウンスの方法ほうほう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);
}
🎉 カウンター完成かんせい!ボタンでかずかぞえられたね!

6
クイズに挑戦ちょうせん

🔍
エンジくん 変数へんすうとデバウンスのポイントを確認かくにんしよう!4もんあるよ。
クイズをちゅう

7
バーチャルカウンター🎮

🔍
エンジくん おおきなボタンをしてカウンターをやそう!10かいになると花火はなびがるよ🎆
🔢 バーチャルカウンター
0
COUNT
ボタンをタップしてカウントアップ!
🏆

Lesson 9 完了かんりょう

カウンターと変数へんすうをマスター!つぎはアナログセンサーに挑戦ちょうせんしよう!

つぎのレッスンへ → つまみであやつるアナログメーター!

8
まとめ

  • int counter = 0;変数へんすうれるはこ
  • counter++ — カウンターを1やす(counter = counter + 1と同じ)
  • ✅ チャタリングはボタンの信号しんごうこまかくれる現象げんしょう
  • millis()経過時間けいかじかんはかってデバウンスできる
  • INPUT_PULLUPでプルアップ抵抗ていこう内蔵ないぞうできる
← Lesson 8にもど 🏠 ホーム つぎのレッスン →