#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4 // Jumlah modul dot matrix
#define DATA_PIN 23 // Pin data (MOSI)
#define CS_PIN 5 // Pin chip select
#define CLK_PIN 18 // Pin clock (SCLK)
#define BUZZER_PIN 25 // Pin buzzer
// Inisialisasi objek Parola
MD_Parola display = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
// Variabel untuk sirine
unsigned long previousMillis = 0; // Waktu sebelumnya untuk sirine
int sirenFrequency = 500; // Frekuensi awal sirine
bool increasing = true; // Apakah frekuensi meningkat
void setup() {
pinMode(BUZZER_PIN, OUTPUT);
// Inisialisasi dot matrix
display.begin();
display.setIntensity(10); // Kecerahan 0-15
display.displayText("Happy New Year 2025", PA_CENTER, 100, 50, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
}
void loop() {
// Animasi dot matrix
if (display.displayAnimate()) {
display.displayReset(); // Ulangi animasi teks
}
// Suara sirine
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 50) { // Ubah frekuensi setiap 50ms
previousMillis = currentMillis;
// Mainkan frekuensi saat ini
tone(BUZZER_PIN, sirenFrequency);
// Atur perubahan frekuensi
if (increasing) {
sirenFrequency += 50; // Naikkan frekuensi
if (sirenFrequency >= 1000) { // Batas atas frekuensi
increasing = false;
}
} else {
sirenFrequency -= 50; // Turunkan frekuensi
if (sirenFrequency <= 500) { // Batas bawah frekuensi
increasing = true;
}
}
}
}