#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 4
#define CS_PIN 12
MD_Parola tugas = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
int A = 8;
int B = 7;
int C = 9;
int D = 6;
int E = 10;
int F = 5;
int G = 4;
int angka = 3; // Memulai dari angka 3
const int button = 2;
int tekan_ke = 0;
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(button, INPUT_PULLUP);
tugas.begin();
tugas.displayClear();
}
void loop() {
if (digitalRead(button) == LOW) {
tekan_ke++;
delay(500); // Debounce button press
if (tekan_ke == 1) {
// Tampilkan nama dari kiri ke kanan
tugas.displayClear();
tugas.displayText("yu_is", PA_CENTER, 100, 5, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
while (!tugas.displayAnimate()); // Animasi berjalan
// Tampilkan NIM dari kanan ke kiri
tugas.displayText("005", PA_CENTER, 100, 5, PA_SCROLL_RIGHT, PA_SCROLL_RIGHT);
while (!tugas.displayAnimate()); // Animasi berjalan
}
else if (tekan_ke == 2) {
// Menampilkan angka 3, 2, 1 secara mundur di seven-segment
for (angka = 3; angka > 0; angka--) {
displayAngka(angka);
delay(1000);
}
}
else if (tekan_ke == 3) {
// Reset dan kembali ke kondisi awal
tugas.displayClear();
tekan_ke = 0;
}
}
}
void displayAngka(int num) {
// Reset semua segmen
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
// Atur segmen berdasarkan angka
switch (num) {
case 1: // Tampilkan angka 1
digitalWrite(B, LOW);
digitalWrite(C, LOW);
break;
case 2: // Tampilkan angka 2
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(G, LOW);
break;
case 3: // Tampilkan angka 3
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(G, LOW);
break;
}
}