//FUNGSI (Function)
//Blok kode yang dapat dipanggil untuk melakukan tugas tertentu

// ----------------------------------
// Contoh penggunaan fungsi untuk
// menyalakan dan mematikan LED
// yang dipasang di pin tertentu
// selama waktu tertentu (n dalam ms)
// ----------------------------------

const int PIN_MERAH = 6;
const int PIN_KUNING = 5;
const int PIN_HIJAU = 4;
const int PIN_BIRU = 3;
const int PIN_UNGU = 2;

// Konstanta untuk waktu delay (ms)
const int DELAY_MERAH = 1000; // 1 detik
const int DELAY_KUNING = 500; // 0.5 detik
const int DELAY_HIJAU = 200;  // 0.2 detik
const int DELAY_BIRU = 200;   // 0.2 detik
const int DELAY_UNGU = 200;   // 0.2 detik

void setup()
{
  // Atur semua pin sebagai OUTPUT
  pinMode(PIN_MERAH, OUTPUT);
  pinMode(PIN_KUNING, OUTPUT);
  pinMode(PIN_HIJAU, OUTPUT);
  pinMode(PIN_BIRU, OUTPUT);
  pinMode(PIN_UNGU, OUTPUT);
}

void loop()
{
  // Nyalakan dan matikan LED sesuai dengan warna
  prosesLED(PIN_MERAH, DELAY_MERAH);
  prosesLED(PIN_KUNING, DELAY_KUNING);
  prosesLED(PIN_HIJAU, DELAY_HIJAU);
  prosesLED(PIN_BIRU, DELAY_BIRU);
  prosesLED(PIN_UNGU, DELAY_UNGU);
}

void prosesLED(int pin, int n)
// --------------------------------------------
// Fungsi untuk menyalakan dan mematikan LED
// Argumen:
// 1. pin : pin yang diatur
// 2. n   : waktu delay dalam milidetik (ms)
// --------------------------------------------
{
  digitalWrite(pin, HIGH); // Nyalakan LED
  delay(n);               // Tunggu selama n ms
  
  digitalWrite(pin, LOW);  // Matikan LED
  delay(n);               // Tunggu selama n ms
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
led4:A
led4:C
r4:1
r4:2
led5:A
led5:C
r5:1
r5:2