//Pin
#define pinSensor A0
#define pinTombolKonfirmasi 2
#define pinAlarm 13
#define batasAtas 600
#define batasBawah 400
bool Alarm;
bool telahKonfirmasi;
bool Konfirmasi;
void setup() {
pinMode(pinTombolKonfirmasi, INPUT_PULLUP);
pinMode(pinAlarm, OUTPUT);
Serial.begin(9600);
Serial.println("Alarm pengunci nilai batas (Bandgap interlock) pada arduino");
Serial.println("http://www.semesin.com/project/");
}
void loop() {
int nilaiSensor = analogRead(pinSensor);
Serial.print("Nilai pembacaan sensor : ");
Serial.println(nilaiSensor);
bool sistemNormal = ((nilaiSensor >= batasBawah) && (nilaiSensor <= batasAtas));
if(!telahKonfirmasi)
{
Konfirmasi = !digitalRead(pinTombolKonfirmasi);
}
if(sistemNormal && (!Alarm || (Alarm && Konfirmasi)))
{
Alarm = false;
telahKonfirmasi = false;
Serial.println("Status : Sistem normal");
}
else if(sistemNormal && Alarm)
{
Serial.println("Status : Sistem normal, belum dikonfirmasi");
}
else if(!sistemNormal && Konfirmasi)
{
Alarm = false;
telahKonfirmasi = true;
Serial.println("Status : Sistem tidak normal, telah dikonfirmasi");
}
else if(!sistemNormal && !telahKonfirmasi)
{
Alarm = true;
Serial.println("Status : Sistem tidak normal");
}
digitalWrite(pinAlarm, Alarm);
delay(1000);
}