// Define pin untuk seven segment display (a hingga g)
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
const int numSegments = 7;
// Define pin untuk mengendalikan digit pada seven segment display
const int digitPins[] = {11, 12, 13, 14};
const int numDigits = 4;
// Tabel segmen untuk menampilkan angka 0 hingga 9
const byte digitTable[] = {
0b11000000, // 0
0b11111001, // 1
0b10100100, // 2
0b10110000, // 3
0b10011001, // 4
0b10010010, // 5
0b10000010, // 6
0b11111000, // 7
0b10000000, // 8
0b10010000 // 9
};
int number = 0; // Variabel untuk menyimpan angka
const int buttonAPin = 9; // Pin untuk tombol A
const int buttonBPin = 10; // Pin untuk tombol B
void setup() {
// Set pin untuk seven segment display sebagai output
for (int i = 0; i < numSegments; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// Set pin untuk mengendalikan digit sebagai output
for (int i = 0; i < numDigits; i++) {
pinMode(digitPins[i], OUTPUT);
}
// Set pin untuk tombol A dan B sebagai input dengan pull-up resistor
pinMode(buttonAPin, INPUT_PULLUP);
pinMode(buttonBPin, INPUT_PULLUP);
}
void loop() {
// Baca status tombol A dan lakukan aksi sesuai ketentuan
if (digitalRead(buttonAPin) == LOW) { // Tombol A ditekan
number++;
delay(300); // Debounce untuk menghindari pembacaan ganda
}
// Baca status tombol B dan lakukan aksi sesuai ketentuan
if (digitalRead(buttonBPin) == LOW) { // Tombol B ditekan
number--;
delay(300); // Debounce untuk menghindari pembacaan ganda
}
// Batasi angka ke rentang 0 hingga 9
if (number < 0) {
number = 0;
} else if (number > 9) {
number = 9;
}
// Tampilkan angka pada seven segment display
displayNumber(number);
}
void displayNumber(int num) {
// Matikan semua digit terlebih dahulu
for (int i = 0; i < numDigits; i++) {
digitalWrite(digitPins[i], HIGH);
}
// Aktifkan digit yang sesuai
for (int i = 0; i < numSegments; i++) {
byte bit = bitRead(digitTable[num], i);
digitalWrite(segmentPins[i], bit);
}
digitalWrite(digitPins[numDigits - 1], LOW);
}