/*
Nama : RAIHAN RAMANDHA SAPUTRA
NIM : 41422110039
QUIZ 3 PERMROGRAMAN BERBASIS MIKROPROSESOR
*/
//Deklarasi Pin dan Variabel
int A = 19;
int B = 18;
int C = 2;
int D = 4;
int DP = 15;
int E = 5;
int F = 21;
int G = 22;
int switchUpPin = 13;
int counter = 0;
int buttonUpState = 0;
int lastButtonUpState = 0;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 30; // Waktu debounce
void setup() {
Serial.begin(9600);
// Setup pin output untuk 7-segment
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(DP, OUTPUT);
pinMode(switchUpPin, INPUT); // Inisialisasi pin tombol sebagai input
digitalWrite(DP ,HIGH); // Titik desimal selalu menyala
}
void loop() {
int reading = digitalRead(switchUpPin);
// Debounce tombol
if (reading != lastButtonUpState) {
lastDebounceTime = millis(); // Reset waktu debounce
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonUpState) {
buttonUpState = reading;
if (buttonUpState == HIGH) {
counter++;
if(counter > 9) {
counter = 0;
}
Serial.println(counter);
changeNumber(counter); // Ubah tampilan angka saat tombol ditekan
}
}
}
lastButtonUpState = reading; // Simpan state tombol terakhir
}
void changeNumber(int buttonPress){
// Konfigurasi segmen untuk setiap angka 0-9
switch (buttonPress){
case 0:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
break;
case 1:
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
break;
case 2:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
break;
case 3:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
break;
case 4:
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
break;
case 5:
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
break;
case 6:
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
break;
case 7:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
break;
case 8:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
break;
case 9:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
break;
}
}