Sistem interlock pada pemograman digunakan untuk mengunci suatu blok program agar dijalankan hanya satu kali. Penguncian dapat dilakukan dengan flag/bendera, jadi sebelum masuk suatu blok program nilai flag penguncinya diuji dan hanya bisa dilewati jika nilainya cocok. pada arduino algoritma flag arduino (pengunci nilai arduino / interlock arduino) biasanya dideklarasikan sebagai boolean/bool yang bernilai true dan false.
Contoh sketch berikut ini menggunakan sensor analog (bisa dikembangkan untuk sensor dengan basis komunikasi) sebagai input. Sedangkan alarm/buzzer berlaku sebagai output. Tombol berfungsi sebagai konfirmasi bahwa alarm telah disetujui.
Komponen yang digunakan :
- Arduino uno
- Sensor analog (potensio, LM35, water level, flex, dll)
- Buzzer
- Tombol push on
Skema pengujian sistem kunci arduino:

Sketch / koding contoh penggunaan flag pada arduino:
Fungsi utama:
- Alarm hanya hidup jika nilai diluar batas dan belum dikonfirmasi
- Alarm mati jika tombol konfirmasi sudah ditekan
- Sistem alarm dapat kembali berfungsi jika nilai sudah dalam batas
//Pin
#define pinSensor A0
#define pinTombolKonfirmasi 2
#define pinAlarm 13
#define batasAtas 600
#define batasBawah 400
bool sistemNormal = true;
void setup() {
pinMode(pinTombolKonfirmasi, INPUT_PULLUP);
pinMode(pinAlarm, OUTPUT);
Serial.begin(9600);
Serial.println("Alarm pengunci nilai batas (Bandgap interlock) pada arduino");
Serial.println("https://www.project.semesin.com/");
}
void loop() {
int nilaiSensor = analogRead(pinSensor);
Serial.print("Nilai pembacaan sensor : ");
Serial.println(nilaiSensor);
if((nilaiSensor <= batasBawah) || (nilaiSensor >= batasAtas))//Pembacaan diluar batas
{
if(sistemNormal)//alarm belum dikonfirmasi
{
Serial.println("Pembacaan sensor diluar batas.");
digitalWrite(pinAlarm, HIGH);
sistemNormal = false;
}
}
else //Pembacaan dalam batas
{
sistemNormal = true;
}
if(!digitalRead(pinTombolKonfirmasi))
{
Serial.println("Alarm dikonfirmasi.");
digitalWrite(pinAlarm, LOW);
}
delay(1000);
}
dalam bentuk lain:
//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("https://www.project.semesin.com/");
}
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);
}