Menggunakan Fungsi millis() pada Arduino

Fungsi millis() pada Arduino menurut saya sangat penting. Hal ini digunakan untuk mengerjakan multitasking pada arduino.

Sebagai contoh sederhana skenario nya adalah sebagai berikut:

  • Ada 2 buah LED , berwarna merah dan hijau.
  • Led Merah : berkedip setiap 1 detik
  • Led Hijau : berkedip setiap 2.5 detik

Hal di atas akan sulit jika dibuat menggunakan fungsi delay(). Oleh karena itu kita akan gunakan fungsi millis() sebagai jalan keluarnya.

Langkah 1 : Gunakan Simulator Wokwi

Agar mudah , kita akan gunakan Simulator Wokwi untuk mencoba hal di atas.

Langkah 2 : Start from Scratch

Kita mulai dari awal, dan saya biasa menggunakan Arduino Nano (punya-nya board ini, dan kalau beli masih relatif terjangkau…hehehehe)

Start From Scratch

Langkah 3 : Rangkai dan tulis kode program

Silahkan rangkai seperti gambar di bawah ini

Isi program nya adalah sebagai berikut:

const int ledMerah =  2;      // Pin untuk Led Merah
const int ledHijau =  7;      // Pin untuk Led Hijau

long previousMillisMerah = 0;      
long previousMillisHijau = 0;
int ledStateMerah = LOW;
int ledStateHijau = LOW;

// Skenario:
// Led Merah nyala mati bergantian setiap 1 detik
// Led Hijau nyala mati bergantian setiap 2.5 detik
long intervalMerah = 1000; 
long intervalHijau = 2500; 

void setup() {
  pinMode(ledMerah, OUTPUT);  
  pinMode(ledHijau, OUTPUT);
}

void loop() {
  unsigned long currentMillis = millis();

// Cek yang merah dulu
  if(currentMillis - previousMillisMerah > intervalMerah) {    
    previousMillisMerah = currentMillis;   
    if (ledStateMerah == LOW)
      ledStateMerah = HIGH;
    else
      ledStateMerah = LOW;

    digitalWrite(ledMerah, ledStateMerah);
  }
// Cek yang hijau
  if(currentMillis - previousMillisHijau > intervalHijau) {    
    previousMillisHijau = currentMillis;   
    if (ledStateHijau == LOW)
      ledStateHijau = HIGH;
    else
      ledStateHijau = LOW;

    digitalWrite(ledHijau, ledStateHijau);
  }
}

Silahkan jalankan simulator nya.

Leave a Comment

Your email address will not be published. Required fields are marked *