最初は0000でボタンを押すと0001になり9を超えると0010になるプログラムを書いたのですが、ボタンを押しても何も起きませんどこが問題なのか教えて下さい。 const int segmentPins[8] = {2, 3, 4, 5, 6, 7, 8, 9}; // a, b, c, d, e, f, g, dp const int digitPins[4] = {10, 11, 12, 13}; // 4桁の共通カソードピン const int buttonPin = A0; const byte digitPatterns[10] = { B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B10111110, // 6 B11100000, // 7 B11111110, // 8 B11110110 // 9 }; int counter = 0; // 0-9999 int buttonState = 0; int lastButtonState = HIGH; unsigned long lastDebounceTime = 0; const unsigned long debounceDelay = 50; // セットアップ void setup() { // セグメントピンの初期化 for (int i = 0; i < 8; i++) { pinMode(segmentPins[i], OUTPUT); } for (int i = 0; i < 4; i++) { pinMode(digitPins[i], OUTPUT); digitalWrite(digitPins[i], HIGH); } pinMode(buttonPin, INPUT_PULLUP); // 内部プルアップ抵抗を使用 } void loop() { int reading = digitalRead(buttonPin); if (reading != lastButtonState) { lastDebounceTime = millis(); } if (millis() - lastDebounceTime > debounceDelay) { if (reading != buttonState) { buttonState = reading; if (buttonState == LOW) { // ボタンが押された(LOW) counter = (counter + 1) % 10000; } } } lastButtonState = reading; // ディスプレイ更新 displayNumber(counter); } // 数字を表示する関数 void displayNumber(int number) { int digits[4]; // 4桁の数字を抽出 digits[0] = (number / 1000) % 10; // 千の位 digits[1] = (number / 100) % 10; // 百の位 digits[2] = (number / 10) % 10; // 十の位 digits[3] = number % 10; // 一の位 // 各桁を順に表示(ダイナミック点灯) for (int i = 0; i < 4; i++) { // すべての桁をオフ for (int j = 0; j < 4; j++) { digitalWrite(digitPins[j], HIGH); } // セグメントを設定 setSegments(digitPatterns[digits[i]]); // 現在の桁をオン digitalWrite(digitPins[i], LOW); delay(5); // 点灯時間(ダイナミック点灯用) } } void setSegments(byte pattern) { for (int i = 0; i < 8; i++) { digitalWrite(segmentPins[i], (pattern >> i) & 1); } }