//Menampilkan karakter dan counter
//https://www.ditempel.com/2021/08/menyalakan-seven-segment-tipe-tm1637-4.html
#include <TM1637.h>
int CLK = 9;
int DIO = 10;
TM1637 tampil(CLK,DIO);
int buzzer = 8;
int button1 = A0;
int button2 = A1;
int button3 = A3;
int ledPin[] = {0,1,2,3,4,5,6,7};
bool buttonState = false; // Status push button
bool lastButtonState = false; // Status sebelumnya push button
bool ledState = false; // Status LED
unsigned long lastDebounceTime = 0; // Waktu terakhir deteksi push button
unsigned long debounceDelay = 50;
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(ledPin[i], OUTPUT);
}
// Mengatur pin buzzer sebagai output
pinMode(buzzer, OUTPUT);
// Mengatur pin push button sebagai input
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(button3, INPUT);
tampil.init();
//mengatur kecerahan; 0-7
tampil.set(2);
}
void tampilKarakter(int num){
tampil.display(3, num % 10);
tampil.display(2, num / 10 % 10);
tampil.display(1, num / 100 % 10);
tampil.display(0, num / 1000 % 10);
}
void loop() {
int reading = digitalRead(button1);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if (millis() - lastDebounceTime > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
// Tombol ditekan, jalankan proses LED dari kiri ke kanan dan bunyi buzzer
activateBuzzer();
activateLEDsLeftToRight();
}
}
}
lastButtonState = reading;
}
void activateBuzzer() {
tone(buzzer, 1000); // Frekuensi bunyi buzzer
delay(100); // Durasi bunyi buzzer
noTone(buzzer); // Matikan bunyi buzzer
}
// Fungsi untuk menyalakan LED dari kiri ke kanan
void activateLEDsLeftToRight() {
for (int i = 0; i < 8; i++) {
digitalWrite(ledPin[i], HIGH); // Nyalakan LED ke-i
delay(150); // Tunggu 150ms
// Matikan LED sebelumnya
if (i > 0) {
digitalWrite(ledPin[i - 1], LOW);
}
}
int i;
for (i = 0; i < 100; i++) {
tampilKarakter(i);
delay(100);
}
tampil.display(0,11);
tampil.display(1,10);
tampil.display(2,12);
tampil.display(3,10);
delay(2000);
}