const int pb = 3;
const int buz = 2;
bool buzstate = false;
unsigned long previousMillis = 0;
const long buzOnTime = 1200;
const long buzOffTime = 500;
unsigned long buzInterval = buzOnTime; // Waktu awal interval sesuai dengan buzOnTime
unsigned long startTime = 0;
const unsigned long totalTime = 10000; // Waktu total 30 detik
void setup() {
Serial.begin(9600);
pinMode(pb, INPUT_PULLUP);
pinMode(buz, OUTPUT);
digitalWrite(buz, 0);
startTime = millis(); // Catat waktu mulai
}
void loop() {
unsigned long currentMillis = millis();
int data = digitalRead(pb);
Serial.println(data);
if (data == 0) {
buzstate = true;
} else {
}
if (buzstate) {
if (currentMillis - previousMillis >= buzInterval) {
previousMillis = currentMillis;
digitalWrite(buz, !digitalRead(buz)); // Mengubah kebalikan dari status buzzer
Serial.println("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz");
// Setel interval sesuai dengan keadaan saat ini
if (digitalRead(buz)) {
buzInterval = buzOnTime;
} else {
buzInterval = buzOffTime;
}
}
}
unsigned long elapsedTime = currentMillis - startTime;
if (elapsedTime >= totalTime) {
// Hentikan proses setelah 30 detik
digitalWrite(buz, LOW); // Matikan buzzer
buzstate = false; // Setel buzstate kembali ke false
startTime = millis(); // Reset startTime
elapsedTime = 0; // Reset elapsedTime
//while (true) {} // Tetap di dalam loop untuk menghentikan program
}
//else {
// digitalWrite(buz, 0); // Pastikan buzzer mati jika tidak aktif
//}
Serial.println(buzstate);
int data1 = digitalRead(buz);
Serial.println(data1);
delay(100);
}