const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
const int buttonPin[] = {9,10};
// セグメントの表示パターン
const byte digitPatterns[] = {
B00111111, // 0
B00001010, // 1
B01010111, // 2
B01001111, // 3
B01101010, // 4
B01101101, // 5
B01111101, // 6
B00001011, // 7
B01111111, // 8
B01101111 // 9
};
int currentDigit = 0;
void setup() {
// セグメントLEDのピンをOUTPUTに設定
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// ボタンピンをINPUTに設定
pinMode(buttonPin[0], INPUT);
pinMode(buttonPin[1], INPUT);
// セグメントLEDを初期化
displayDigit(0);
}
void loop() {
// ボタンの状態をチェック
int buttonState1 = digitalRead(buttonPin[0]);
int buttonState2 = digitalRead(buttonPin[1]);
// ボタンが押されたら数字をインクリメント
if (buttonState1 == LOW) {
delay(100); // デバウンス用のディレイ
if (digitalRead(buttonPin[0]) == HIGH) {
// カウントを次の数字に増やし、9を超えた場合は0に戻す
currentDigit = (currentDigit + 1) % 10;
displayDigit(currentDigit);
delay(250); // 表示を安定させるためのディレイ
}
}
if (buttonState2 == LOW) {
delay(100); // デバウンス用のディレイ
if (digitalRead(buttonPin[1]) == HIGH) {
// カウントを次の数字に増やし、9を超えた場合は0に戻す
currentDigit = (currentDigit+100 - 1) % 10;
displayDigit(currentDigit);
delay(250); // 表示を安定させるためのディレイ
}
}
}
// セグメントLEDに数字を表示する関数
void displayDigit(int digit) {
for (int i = 0; i < 7; i++) {
if (bitRead(digitPatterns[digit], i) == 1) {
digitalWrite(segmentPins[i], HIGH);
} else {
digitalWrite(segmentPins[i], LOW);
}
}
}