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

Multi-Tasking Arduino, Cara Menjalankan Beberapa Perintah Secara Bersamaan pada Arduino
4.2 (84%) 17 votes

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.

Baca Juga  Belajar Labview : Membuat Alat Pemantau Kecepatan Angin

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

Print Friendly, PDF & Email
Share your vote!


Vote and Share your Fell !
  • Fascinated
  • Happy
  • Sad
  • Angry
  • Bored
  • Afraid

About Giri Wahyu Pambudi

Giri Wahyu Pambudi - Seorang Pemuda Desa yang berkeinginan ikut membangun Indonesia dengan Sedikit Ilmu yang dimiliki
Jumlah Post : 368 Artikel

Artikel Serupa

Check Also

Komunikasi Antar Modul Wifi Arduino Tanpa Internet / Router