/*
Program untuk menjalankan piezoelectric buzzer khususnya di wokwi
*/
#define buzzerPin 12
// Untuk menyimpan nilai-nilai waktu (rentang unsigned long dari 0 sampai 4,294,967,295), karena hanya membutuhkan nilai positif untuk waktu
unsigned long currentMillis, prevMillisBuzzer = 0, intervalBuzzer;
// Untuk menyimpan nilai true false
bool buzzerState;
int frekuensi, run = 0;
// Supaya buzzer bisa mati-nyala tanpa mengganggu proses lain (tanpa menggunakan delay)
void buzzer() {
intervalBuzzer = 100;
frekuensi = 2000;
if (currentMillis - prevMillisBuzzer >= intervalBuzzer) {
Serial.println(currentMillis);
Serial.println(prevMillisBuzzer);
prevMillisBuzzer = currentMillis;
// prevMillisBuzzer = prevMillisBuzzer + intervalBuzzer;
Serial.println(prevMillisBuzzer);
Serial.println();
buzzerState = !buzzerState; // Menghasilkan kondisi true-false (
// supaya buzzer nyala-mati
if (buzzerState == true) {
tone(buzzerPin, frekuensi);
// tone(pin buzzer, frekuensi suara, durasi)
}
else if (buzzerState == false){
noTone(buzzerPin);
// Menghilangkan atau mematikan suara pada buzzer
}
}
}
void setup() {
Serial.begin(115200);
pinMode(buzzerPin, OUTPUT);
delay(15000);
}
void loop() {
currentMillis = millis();
buzzer();
delay(50);
// // Supaya buzzer mati-nyala setiap setengah detik
// // Untuk membuat buzzer aktif dan berbunyi
// tone(buzzerPin, 1000, 2000);
// // tone(pin buzzer, frekuensi suara, durasi(dalam milidetik));
// delay(500);
// // Untuk mematikan suara buzzer
// noTone(buzzerPin);
// // noTone(pin buzzer);
// delay(500);
}