Multi-Tasking Arduino, Cara Menjalankan Beberapa Perintah Secara Bersamaan pada Arduino

Assalamu’alikum warahmatullahi wabarakatuh, Apa Kabar Gaes? kembali lagi bersama kami di Blog kita tercinta ini, apalagi kalau bukan cronyos.com 🙂 kali ini kita akan bahas tentang bagaimana caranya kita membuat Arduino kita bisa multitasking. opo kui multi tasking mas?hehe multitasking adalah kita bisa mengerjakan beberapa hal dalam satu waktu, dalam satu waktu? emang bisa? sebenarnya tidak bisa, tapi akan kita buat seolah olah bisa. mengingat arduino itu adalah mikrokontroller bukan mikroprosessor, kalau prosessor tentu bisa multi tasking, contohnya di PC Pentium 4 yang saya gunakan buat posting artikel saya kali ini. saya bisa ngetik postingan sambil mendengarkan musik di youtube, sedangkan antivirus saya juga sedang bekerja dan beberapa program yang lain juga bekerja. itulah yang disebut multi tasking.

Namun kali ini kita tidak akan membuat Arduino kita buat youtuban dan ngetik postingan ya gaes 🙂 kita akan coba saja bagaimana menjalankan beberapa program dengan waktu yang hampir bersamaan, misalnya saja kita ingin membuat program led berkedip dengan jeda / delay sebesar 5 detik seperti ini.

void setup() 
  {
    pinMode(13, OUTPUT);
} 

void loop() 
  {
    digitalWrite(13, HIGH); 
    delay(5000);      
    digitalWrite(13, LOW); 
    delay(5000);   
  }

Nah, setelah kita membuat program yang sangat sederhana diatas kita ingin mengirim sesuatu ke serial monitor dengan jeda 1 detik, misalnya kita mengubah programnya menjadi sepeerti ini tentu tidak akan jadi seperti yang kita inginkan.

void setup() 
  {
    pinMode(13, OUTPUT);
    Serial.begin(9600);
} 

void loop() 
  {
    digitalWrite(13, HIGH); 
    delay(5000);      
    digitalWrite(13, LOW); 
    delay(5000);   
    Serial.println("jeda 1 detik");
    delay(1000);
  }

Serial Monitor tidak akan menampilkan kata “Jeda 1 detik” setiap 1 detik sekali namun menjadi 11 detik sekali, lalu bagaimana dong? sebenarnya kita bisa aja mengubah programnya menjadi seperti ini, namun tentu tidak effisien dan kita akan kesulitasnya jika programnya lebih kompleks lagi.

void setup() 
  {
    pinMode(13, OUTPUT);
    Serial.begin(9600);
} 
byte durasi = 0;
void loop() 
  {
    
    Serial.print("jeda 1 detik");
    delay(1000);

      if (durasi <= 5) 
         {
           digitalWrite(13,HIGH);
         }
      else
         { 
          digitalWrite(13,LOW); 
         }

    durasi++; 

      if (durasi > 10)
        {
         durasi = 0;
        }
   }

Intinya disini adalah adanya perintah / baris kode delay() akan sangat menganggu kelancaran program kita, oleh karena itu kita akan menghilangkan delay() tersebut namun kita tetap mendapatkan fungsi jeda sehingga program kita bisa lebih akurat / presisi dalam menjalankan multitaskingnnya, kalian bisa menggunakan perintah code berikut ini.

void setup() 
  {
    pinMode(13, OUTPUT);
    Serial.begin(9600);
} 

long durasiSerial = 0;
long durasiLed = 0;
long jedaLed = 5000;
long jedaSerial = 1000;
int  statusLed = LOW;
void loop() 
  {
    if (millis()- durasiSerial > jedaSerial)
      {
        Serial.println("jeda 1 detik");
        durasiSerial = millis();
      }

    if (millis()- durasiLed > jedaLed)
     {
      
      durasiLed = millis();
      
      if (statusLed == LOW)
        {
         statusLed = HIGH;
        }
      else
        {
          statusLed = LOW;
        }
      digitalWrite(13,statusLed);      
     }
  }

dengan Program diatas itu maka kita bisa mendapatkan kerja dari arduino tanpa adanya delay() yang akan mengganggu kelancaran programnya, memang program diatas terlihat lebih susah. namun jika program kalain sudah kompleks kalian akan mendapati ketidak efektifan menggunakan delay() oleh sebab itu kalian perlu menggunakan alur / logika program diatas untuk menghilangkan delay() pada program kalian.

Sekian Postingan kali ini, semoga bermanfaat, Jika ada yang perlu ditanyakan silahkan sampaikan di kolom komentar. wassalamu’alaikum warahmatullahi wabarakatuh.

About Giri Wahyu Pambudi

Giri Wahyu Pambudi - Seorang Pemuda Desa yang berkeinginan ikut membangun Indonesia dengan Sedikit Ilmu yang dimiliki SMK N 2 Wonogiri lulus 2015 UNIV Negeri Yogyakarta lulus 2019 2019 - Sekarang Bekerja di SMK Gajah Mungkur 1 Wuryantoro, Wonogiri

Check Also

Cara Menggunakan / Mengakses Keypad menggunakan Arduino

Assalamu’alaikum teman – teman, kali ini kita akan belajar Arduino lagi, kali ini kita akan …

6 comments

  1. Jazakallahu khoiron katsiiron gan, mantap…

  2. iya gan, sama sama.

  3. assalamualaikum.

    mau tanya gan. 1pin arduino supaya dapat digunakan untuk led dan button dengan berbeda fungsi saat HIGH.

    jadi serial.println button sendiri

    serial.println led sendiri.

    terimakasih atas perhatianya. wassalamualaikum

  4. Assalamualaykum, Pak, saya ingin bertanya, apakah arduino bisa membaca tegangan lebih dari 1 sumber listrik atau 2 sumber listrik (baterai)?

    mohon pencerahannya, Terima Kasih

  5. Giri Wahyu Pambudi

    bisa gan, pakai 2 pin analog berarti, misalnya battery 1 dibaca menggunakan pin analog 1 dan battery 2 dibaca menggunakan pin analog 2.

  6. assalamu alaikum mas,

    ini percobaan kan 1 led, gimana  kalau 4 led atau 4 sensor, contohnya dong

Tinggalkan Balasan