#include <LiquidCrystal_I2C.h>
int freq[] = {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; // 11 elemen
int timeArray[] = {1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000}; // dalam ms
void setup() {
Serial.begin(115200);
pinMode(buttonPin, INPUT_PULLUP);
// Setup PWM
ledcSetup(pwmChannel, 10000, 8); // 30kHz default
ledcAttachPin(buzzerPin, pwmChannel);
Serial.println("Pengusir tikus mode array siap...");
}
void loop() {
if (digitalRead(buttonPin) == LOW) {
// Ambil indeks acak
int freqIndex = random(0, sizeof(freq) / sizeof(freq[0]));
int timeIndex = random(0, sizeof(timeArray) / sizeof(timeArray[0]));
int selectedFreq = freq[freqIndex] * 1000; // dari kHz ke Hz
int selectedTime = timeArray[timeIndex];
// Tampilkan di serial monitor
Serial.print("Frekuensi: ");
Serial.print(selectedFreq);
Serial.print(" Hz | Delay: ");
Serial.print(selectedTime);
Serial.println(" ms");
// Jalankan buzzer
ledcWriteTone(pwmChannel, selectedFreq);
ledcWrite(pwmChannel, 127); // 50% duty
delay(selectedTime);
// Matikan
ledcWrite(pwmChannel, 0);
delay(300); // Jeda antarsiklus
}
}