Official StoreTekan tombol di atas untuk membeli semua alat dan bahan eksperimen di web ini

Bekerja secara Multitasking di Arduino

Multitasking pada umumnya hanya dapat dilakukan oleh microprocessor dengan kecepatan tinggi. Dengan kecepatan eksekusi perintah maupun data yang tinggi sebuah prosesor dapat melakukan banyak pekerjaan (task) seakan-akan dalam satu waktu saja. Inilah sebenarnya pengertian dari ‘multitasking’, melakukan banyak pekerjaan dalam satu waktu. Kalau kita lihat lebih dalam di arsitektur microprocessor, ‘pekerjaan’ atau ‘task’ tadi sebenarnya adalah kumpulan perintah opcode atau pseudo-code yang dijalankan secara berurutan. Namun karena prosesor memiliki clock yang sangat tinggi (order Mega/GigaHertz) dan ruang buffer memori yang cukup lebar, maka pekerjaan tadi seakan-akan dapat dilakukan secara bersamaan.

bekerja secara multitasking di Arduino

Kalau kita perhatikan dalam paragraf di atas, multitasking membutuhkan spesifikasi hardware yang tinggi karena dibutuhkan untuk melakukan  banyak pekerjaan secara simultan. Dan hardware saja tidak cukup, karena untuk melakukan multitasking dibutuhkan software yang mampu ‘mengarahkan’ microprocessor untuk melakukan multitasking. Sepengetahuan saya, yang mampu melakukan multitasking berada pada tingkat OS (Operating System) seperti pada Windows, Linux atau Android. Contoh multitasking yang sering kita lakukan adalah mengetik laporan dengan Microsoft Word sambil mendengarkan musik melalui Windows Media Player sambil scanning antivirus. Tiga pekerjaan ini dapat kita lakukan secara bersamaan dalam satu waktu di OS Windows laptop kita.

Multitasking dalam Arduino

Ok, saya pikir cukup untuk mengilustrasikan apa itu multitasking dalam microprocessor. Nah, sekarang bisakah multitasking itu kita lakukan dalam sebuah Arduino? Mari kita cek possibility-nya. Yang pertama, kita cek spek hardware-nya. Kita tahu bahwa Arduino berbasis mikrokontroller ATMega series 8-bit dengan kecepatan maksimal 16 Mhz (kecuali Arduino berbasis mikrokontroller ARM 32-bit dapat overclock sampai 84 MHz). RAM-nya juga sangat terbatas, hanya berkisar antara 2 Kb (Arduino Uno) – 8Kb (Arduino Mega). Obstacle ke dua adalah dari sisi software Arduino belum memiliki sistem operasi (OS). Nah bagaimana caranya agar kita dapat melakukan multitasking di Arduino?

Dalam skala terbatas kita dapat bekerja secara multitasking di Arduino. Dengan ‘multitasking’ kita dapat melakukan dua pekerjaan (atau lebih) seakan-akan dalam waktu bersamaan. Saya beri contoh sederhana bagaimana melakukan multitasking di Arduino. Pada case study kali ini kita akan mencoba menghidupkan dua LED dalam satu waktu dengan LED pertama akan OFF setelah 5 detik ON. Semua perintah on/off LED berasal dari port serial (kita akan gunakan jendela Serial Monitor untuk memasukkan perintah).

Untuk mempelajari perbedaan menggunakan multitasking atau tidak di Arduino, kita akan menggunakan dua sketch yang berbeda untuk menangani case study di atas. Yang pertama, sketch tanpa multitasking. Kita coba menggunakan sketch ‘normal’ terlebih dahulu.

Perhatikan sketch di atas. Tampaknya sudah benar, bukan? Di-compile juga tanpa error. Tapi coba kita upload ke Arduino. Ketika kita memasukkan perintah ‘1’melalui jendela Serial Monitor, LED 1 akan nyala selama 5 detik. Namun apa yang terjadi kita akan menyalakan LED kedua dalam rentang waktu jeda ON-OFF LED pertama. Arduino seperti nge-hang, tidak merespon perintah, padahal sketch kita compile tadi sudah benar, lho? Okay, untuk sementara kita simpan dulu jawabannya. Kita beralih ke sketch kedua yang menggunakan ‘multitasking’ sederhana. Perhatikan sketch berikut. Sketch kedua ini akan membutuhkan sebuah library eksternal bernama ‘SimpleTimer.h’, yang dapat Anda unduh di sini. Cara menambahkan library Arduino dapat Anda baca di sini.

Silahkan upload sketch di atas ke Arduino Anda. Amati apa yang terjadi. Masukkan perintah ‘1’ melalui jendela Serial Monitor. LED pertama nyala, bukan? Tanpa menunggu 5 detik, langsung saja masukkan perintah ‘2’ ke Arduino. Kali ini LED kedua akan langsung nyala tanpa menunggu LED pertama off setelah 5 detik on. Di sinilah letak perbedaan antara sketch pertama dan kedua. Sketch pertama LED kedua akan menunggu dulu selama delay LED pertama selesai, sedangkan pada sketch kedua, semua pekerjaan (menyalakan kedua LED) dapat dilakukan secara bersamaan tanpa menunggu pekerjaan pertama selesai terlebih dahulu. Inilah yang dinamakan ‘multitasking’ sederhana di Arduino.

Kesimpulan

Terakhir saya sampaikan bahwa ‘multitasking’ di Arduino bukanlah pengertian multitasking sesungguhnya, karena berbagai keterbatasan hardware dan software di Arduino. Namun setidak-tidaknya dengan segala keterbatasannya, kita masih dapat bekerja secara multitasking di Arduino. Inti dari multitasking sederhana di Arduino adalah menggunakan semacam ‘smart delay’ (dalam contoh di atas menggunakan ‘SimpleTimer’) yang dapat di-‘interrupt’ oleh eksekusi perintah lain sehingga seakan-akan semua pekerjaan dapat dilakukan dalam satu waktu. Demikian yang dapat saya sampaikan, ruang diskusi saya buka lebar melalui comment di bawah. Selamat menciptakan ‘multitasking-multitasking’ lainnya … 🙂

Incoming search terms:

www //saptaji com, saptaji com, saptaji arduino, Cara Multitasking arduino, fungsi simpletimer pada arduino, multitasking di arduino, multitasking menggunakan simpletimer, cara arduino multitasking, buat led tombol on off arduino promini, alamat raftech bukalapak
25 Comments

Add a Comment

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

error: Content is protected !!