Tulisan ini sekedar eksperimen santai saja dimana kita akan membuat program Blinking LED, 3 buah LED tepatnya, tanpa menggunakan fungsi delay(), tanpa fungsi millis() dan juga tanpa Timer.

Ketiga LED akan berkedip-kedip dengan rate yang berbeda. LED1 berkedip cepat. LED2 berkedip lebih lambat. Dan LED3 berkedip lebih lambat lagi.

Dan untuk sedikit menambah fitur, masing-masing LED dapat dikontrol melalui Serial Monitor.

Dikontrol bagaimana maksudnya??

Maksudnya, masing-masing LED bisa diaktifkan (berkedip-kedip) atau dinon-aktifkan (berhenti berkedip) dengan mengirimkan karakter perintah kepada mikrokontroler melalui Serial Monitor.

Tujuan Eksperimen

Tujuan dari eksperimen ini adalah untuk melatih teknik pemrograman. Eksperimen ini akan menunjukkan tentang bagaimana kita bisa memrogram Arduino untuk membuat LED berkedip tanpa fungsi delay(), tanpa millis() dan tanpa Timer.

Selain itu, eksperimen ini juga menunjukkan bagaimana membuat program agar mikrokontroler bisa menjalankan beberapa pekerjaan dengan cara yang paling sederhana.

Rangkaian LED

Rangkaian LED untuk eksperimen ini bisa Anda simak pada gambar berikut ini.

Tiga buah rangkaian LED Aktif-HIGH dikontroler melalui PIN-2, PIN-3 dan PIN-4. Untuk menyalakan LED, maka pin kontrol LED harus diberi logika tinggi (HIGH). Dan untuk memadamkan LED, maka pin kontrol LED harus diberi logika rendah (LOW).

Baca Juga: Rangkaian LED Aktif HIGH dan Pemrogramannya

Kode Program

Berikut ini adalah kode program untuk menyalakan 3 buah LED dengan mode berkedip (blinking) dengan rate yang berbeda.

/*
 * Program Blinking 3 Buah LED dengan rate yang berbeda
 * tanpa menggunakan fungsi delay() ataupun millis()
 * Chandra MDE - https://blog.teknikelektrolinks.com
 */
  
int led_status[3] = {0, 0, 0};
int led_enabled[3] = {1, 1, 1};
unsigned long X;

void update_led()
{
  digitalWrite(2, led_status[0]);
  digitalWrite(3, led_status[1]);
  digitalWrite(4, led_status[2]);
}

void setup() 
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  Serial.begin(9600);
  Serial.println("Ketiga LED akan berkedip dengan rate yang berbeda.");
  Serial.println("Blinking bisa di RUN/STOP dengan perintah melalui Serial Monitor.");
  Serial.println("Send 1 untuk RUN/STOP LED 1.");
  Serial.println("Send 2 untuk RUN/STOP LED 2.");
  Serial.println("Send 3 untuk RUN/STOP LED 3.");
  Serial.println("https://blog.teknikelektrolinks.com");
}

void loop()
{
  if (Serial.available())
  {
    char ch = Serial.read();
    if (ch=='1' || ch=='2' || ch=='3')
    {
      ch = ch - 49;
      led_enabled[ch] = !led_enabled[ch];  
      Serial.print("LED "); Serial.print(ch+1); Serial.print(" ");
      Serial.println(led_enabled[ch] ? "enabled" : "disabled");
    }
  }
  
  X++;
  if (led_enabled[0] && X%1000 == 0) led_status[0] = !led_status[0];
  if (led_enabled[1] && X%3000 == 0) led_status[1] = !led_status[1];
  if (led_enabled[2] && X%6000 == 0) led_status[2] = !led_status[2];
  
  update_led();
}

Untuk melakukan eksperimen ini, Anda bisa merakit rangkaian LED di atas dan menghubungkannya ke board Arduino.

Pada eksperimen ini, saya menggunakan board Arduino Mega. Anda bisa menggunakan board yang sama, yakni Arduino Mega, atau Anda bisa menggunakan Arduino UNO atau Arduino Nano.

Setelah dirangkai dengan benar, Anda bisa meng-Upload kode program di atas dan jika tidak ada halangan, maka Anda akan mendapati ketiga LED berkedip dengan rate yang berbeda.

Selanjutnya, Anda bisa membuka Serial Monitor dan mengeset baudrate = 9600.

Melalui Serial Monitor, Anda dapat meng-enable atau men-disable ketiga LED yang berkedip tersebut. Jika enabled, maka LED akan berkedip. Jika disabled, maka LED akan berhenti berkedip.

Tampilan Hasil Eksperimen

Kami melayani perancangan dan pembuatan sistem berbasis mikrokontroler. Kami juga merancang dan membuat panel kontrol berbasis Zelio Smart-Relay.

Dan jika Anda membutuhkan pelatihan atau bimbingan atau konsultasi, kami juga siap melayani Anda.

Anda dapat menghubungi kami melalui Whatsapp 0882-3560-7047.

Kunjungi situs kami di:

Semoga eksperimen ini bermanfaat.

By admin

4 thoughts on “Arduino: Blinking 3 LEDs With Different Rate With No delay(), No millis() and No Timer”

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.

Copy link
Powered by Social Snap