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:

saptaji com, multitasking arduino, contoh program milis arduino, program multitasking pada arduino, fungsi milis di arduino, saptaji arduino, Cara Multitasking arduino, www //saptaji com, multitasking di arduino, Laporan TA Flow dengan arduino ethernet shield

Leave a Reply

123 Comments on "Bekerja secara Multitasking di Arduino"

avatar
  Subscribe  
newest oldest most voted
Notify of
hasan okta
Guest

mas kalau mau bikin klakson telolet pakai arduino pro mini 328p-au -8 mhz/ 328p -mu 16 mhz apa bisa mas … yang hasil suaranya mirip lagu ABANG TUKANG BAKSO misalnya…. dalam 3 klakson secara ber gantian do re me…… makasih….mas…. mohon pencerahannya…….

hasan okta
Guest

MALAM MAS dan trimakasih atas pencerahannya…… kalau software nya pakai sketch apa ya mass …. ….. dan untuk IC arduino pro mini 328 p- mu IC SMD yg kecil pakai crystal 16000 MHz mas Ajie apa punya baranya… / makasih masss

hasan okta
Guest
pagi masss apa perbedaannya analog dengan di gital ya mass …… contohnya seprti simbol simbol di kaki /pin ic arduino pro mini 328 p-mu dan ini contoh pin pin rangkain jadi telolet mas… TXD. RXD. RST. GND. PIN /KAKI IC DARI 23456789 DI PARAREL RESISTOR 1K KE GND SEDANGKAN PIN/KAKI IC 10 11 12 UNTUK MEMAINKAN RELAY NYA DAN MENGHASILKAN NADA KLAKSON TELOLET/ ABANG TUKANG BAKSO DAN LAIN SEBAINYA. DAN PIN A3 KE BASIS TR 2N 2222 YG DI HUBUNGKAN KE RELAY. PADA PIN (RAW) TEGANGAN INPUT 7 V0LT DAN MENGHASILKAN TE GANGAN OUTPUT 5 VOLT PADA KAKI /PIN VCC… Read more »
hasan okta
Guest

berapa harganya buku arduino plus ongkir ke kota kediri jawatimur ???? mass…..

pada ic arduino pro mini 328 p- mu tersebut di atas ….. yg sudah di upload / di isi sketch ??? apa bisa di lihat ataui bisa di copy…????. atau bagai mana caranya membuka data skecth nya mas …..terima kasich….. PRIBADI SUKA OTAK ATIK DI BIDANG TEKNOLOGI ELEKTRONIKA….

hasan okta
Guest

saya pesan sama mas ajie aja buku MUDAH BELAJAR MIKROKONTROLLER DENGAN ARDUINO PLUS KASET CD SOFTWARE I D E YA MASS… INI ALAMAT KAMI MAS
DUSUN . MARGOURIP RT-02 RW-01 DESA MARGOURIP. KEC: NGANCAR . KAB: KEDIRI. JAWA TIMUR ( AGUNG ELEKTRONIK)
KONTAK PERSON ;085704010272 /085231861333 ( HASAN OKTA) BOLEH MINTA NO REKENING NYA MAS ENTAR SAYA TRANSFER UANGNYA PLUS ONGKIR NYA
TRIMAKASIH….

hasan okta
Guest

mas ajie maaf ya mass ……..masih ada kesibukan bercocok tanam di sawah ke marin tidaak sempat trasfer ke BCA BESOK PAGI BARU BISA MASS MAKLUM JAUH DARI KOTA HEHE…… oh iya mas klo USB TTL/UART (PLUS KABEL USB TIPE C ) yang ada DTR & CTS / FTDI 232 ?…… MAS AJIE ADA STOCK BARANG GAK MAS….. DAN BERAPA harganya……????. terimakasih…..

hasan okta
Guest

USB TTL/UART/ FTDI 232 PLUS KABEL TIPE C SUDAH ADA BARANGNYA YA MASS ??? TOLONG DI KASIH KABAR ……VIA SMS TRIMAKASIH

hasan okta
Guest

Assalamualaikum Mas ajie…………………..
const int buttonPin =8;
const int ledPin=2;
int buttonState =0;
void setup() {
pinMode(ledPin,OUTPUT);
pinMode(buttonPin,INPUT);
}
void loop() {
buttonState= digitalRead(buttonPin);
if(buttonState==HIGH) {
digitalWrite(ledPin,HIGH);
}else{
digitalWrite(ledPin,LOW);
}
}
KETERANGAN ( SKETCH INI LAMPU LED MENYALA TERUS DI no pin (2) arduino pro mini 5v. ) tapi setelah saya pull-down (push on yg berhungan di no pin 8 lampu led padam/off kalau di lepas tombol push on nya’ on’ lagi……
Nahh……yg saya pertanyakan di sketch ini bagai mana setingannya kalau kebalikannya…..?????( di tombol lampu led on/ hidup)
trims

dian
Guest

Masih tentang Multitasking, saya dulu mengaplikasikannya pada AVR menggunakan Timer. Pada interval tertentu, misal 0,5s diselipkan PORTD.1=!PORTD.1.
Fungsi tersebut sering saya gunakan untuk indikator running alat, memakai LED sehingga tampak berkedip-kedip jika mikro sedang normal tidak hang. Pada serial juga diselipkan ping led tx, rx. Banyaknya data kadang terlihat pada kecepatan led berkedip.

Lagi cari fungsi itu di arduino & kebetulan dibahas disini.

Wahyu A
Guest

Mau tanya, apa kelebihan multitasking menggunakan file header ‘SimpleTimer.h’ dibandingkan dengan fungsi “millis()”

Fjr
Guest

Mas izin tanya. Saya komunikasi gprs sim800l pakai promini 3v. Tp hanya bertahan sktr 3 atau 5jam. Selebihnya harus d reset trs. Knp y mas, mhn bantuannya. Trmksh

anika putri
Guest

assalamualaikum mas
izin bertanya, kalau saya ingin membuat sebuah alarm untuk kendaraan dengan menghubungkan sensor kecepatan roda dengan timer, kemudian dihubungkan lagi dengan speaker supaya terdapat peringatan suara. Sketch pemrogramannya bagaimana ya? terima kasih

arif n
Guest

assalamualaikum kang,,
kang tolong dong buatin contoh multitasking untuk 2 servo, misal servo a berjalan dr 0 smpai 180, dan servo b berjalan dr 0 smpai 90 dlm waktu bersamaan gitu kang, jadi intinya servo a dan b berjlan bareng namun setelah sampai 90 servo b berhenti dan a terus sampai 180 gitu kang,,,, atas pencerahanya terima kasih ya kang….
atau contoh contoh multytasking servo dengan lain kasus juga boleh kang, sy akan aplikasikan untuk membuat ARM robot kang.

yono
Guest

assalamualaikum mas saya mencoba membuat komunikasi serial asynchronuous dengan arduino mega 2560. pada saat pengaturan menggunakan 2 stop bit tidak terjadi apa” malah error. kode program untuk pengaturan paritas dan stop bit bagaimana ya mas? saya menggunakan sofware arduino IDE. minta pencerahannya mas terimakasih

Saeful
Guest

Newbie nich.. Minta dibantu kang.. sy mau jalankan 2 fungsi sekaligus pada satu sketch yaitu LDR dan bluetooth dgn multitasking bgmana ya..?

Irfan
Guest

Assalamualaikum mas, ardunio bisa digunakan 2 keypad atau tidak, misalkan bisa tolong di beritahu mas type arduinonya apa sebelumya terimakasih mas

dudi
Guest

maaf mas melenceng dari topik, rencana saya mau pake sensor pir, arduino dan modul relay buat kendali daya listrik otomatis pada komputer, jadi daya listrik akan terhubung dengan komputer hanya jika ada gerakan saja, penggunaan komputer kurang lebih 2 jam, nah pertanyaanya apakah bisa sensor pir terus aktif selama 2 jam hanya dengan mendeteksi gerakan sekali saja?

dudi
Guest

udah mas saya pake delay, saya pke 3 sensor pir, tapi kenapa yah pir ke 2 baru nyala ketika delay pada pir ke 1 habis, saya ingin ketiga pir tersebut dapat aktif tanpa harus nunggu delay habis, minta rekomendasi buat sketch nya mas kalo pake 3 buah sensor pir , maksih sebelumnya

irfan
Guest

mas mau tanya ,,
sy lgi buat alat monitoring kekeruhan air dan ph air secara bersamaan bekerja ditampilkan di layar lcd tft gitu ditambah lagi ada sensor suhu juga include, setiap kali di jalankan selalu berubah ubah nilai pembacaannya/ tidak stabil. apa karena pengaruh multitaskingnya atau gimana mas ? mohon pencerahan hhe

andre
Guest

Assalamualaikum mas, mau tanya rencana saya mau bikin tachometer (RPM) dan Speedometer secara digital menggunakan sensor IR dan tampilan menggunakan lcd TFT 2,4 Inch, apakah bisa dengan input 2 sensor IR (RPM & Speed) dijadikan satu pada arduino uno, untuk sketch cara bikinnya gimana mas, atas jawaban dan petunjuknya disampaikan banyak terimakasih

ardi
Guest

Selamat pagi mas. saya mau tanya seputar sample timer. saya sudah coba program sample timer yg ada di sini pada arduino mega. setelah saya compile, sketch error dan keluar tulisan seperti ini “Error compling for board Arduino/Genunino Mega or Mega 2560. kira2 kenapa ya mas ? terima kasih.

ardi
Guest

ini mas :
” #include
compilation terminated
exit status 1
Error compling for board Arduino/Genuino Mega or Mega 2560.”

versi arduino yg saya pakai itu 1.85.. Saya rasa pas saya include library simple timernya.. warna dari #include nya tidak berwarna oren.. warnanya jadi hitam semua.. Itu kenapa ya mas ?? mungkin itu problem yg saya alami. Terima kasih

ardi
Guest

oke mas..
saya mau tanya lagi,, kira2 kalo saya ingin menampilkan data dari sensor ultrasonik secara bersamaan gmana ya mas ?? terima kasih.

ardi
Guest

Kalo saya pake library NewPing kira2 gmana ya mas untuk nampilin data jarak secara bersamaan ??

Hawari
Guest

Bang cara program miliis gimana? masih ga ngerti.
di project saya, millis dipake buat kondisi sensor infra red untuk membaca objek selama 3 detik. programnya gimana ya bang? mohon bantunnya dengan segera, Terimakasih sebelumnya bang.

ardi
Guest

owh, gitu ya mas.. saya mau tanya lagi kalo sensor ultrasonic suka terdeteksi sendiri kenapa ya mas ? penyebabnya kira2 apa ya mas ?

ardi
Guest

Maksud saya,, di ultrasonik saya kan akan aktif jika ada benda di jarak >2 dan <5 mas.. Tpii ultrasonik saya masih bisa terdeteksi sendiri diri luar jangkauan itu mas..

ardi
Guest

Engga ada mas..

ardi
Guest

Kalo powersupply nya berpengaruh engga mas ?

Misalkan saya tambahkan kapasitor 100nf di vcc dan groudnya sensor gmana mas ?

ardi
Guest

okee mas,, terima kasih atas sarannya.. Saya mau tanya lagi seputar stopwatch.. saya ingin membuat dua stopwatch.. dimana untuk mengaktifkan lewat sensor ultrasonik.. kode yg saya pakai seperti ini :

if(kode==2){
ms++;
if(ms==10){
ms1=0;
s1++;
if(s1==100)(s1=0;}
}
}

jadi untuk mengaktifkan stopwatchnya lewat sensor ultrasonik.. Jadi saat sensor 1 terdeteksi (u/mengaktifkan sttopwatch pertama) dan sensor 2 terdeteksi (u/ mengaktifkan stopwatch kedua) bersama sama.. kenapa fungsi timer nya tidak berjalan ya mas saat kedua sensor terdeteksi bersamaan? penyebabnya apa ya mas ? terima kasih.

ardi
Guest

Kalo pakai simple timer itu kan buat waktu tunda ya mas.. Kalo di project saya ini untuk membuat dua stopwatch mas..

ardi
Guest

Kalo boleh tau,, contoh sketch stopwatch nya seperti apa ya mas ? Masih belum paham saya mas.

Ardi
Guest

Untuk script stopwatch nya dmananya ya mas ??

WieN
Guest

assalam. wr wb
ini blog yg sangat membantu.. apa lagi setiap coment dijawab, kebetulan saya lagi blajar arduino.. mohon bimbingan mas ajie..
wassalam..

agus
Guest
assalam’alaikum mas, sy punya program sperti di bawah ini: void loop(){ bright=analogRead(pot); bright=map(bright, 0,1023,0,10); bo= digitalRead(Sensor); if (bo==1){ delay(bright); digitalWrite(scr1, HIGH); delay(1); digitalWrite(scr1, LOW); digitalWrite(scr2, HIGH); delay(1); digitalWrite(scr2, LOW); } } yg mau sy tanyakan dari program d atas adalah mengenai nilai “bright” nya. jd nilai “bright” program d atas di dapat dari nilai potensio yaitu yg sudah d asumsikan 0-10, trus saya mau ubah nilai 0-10 dr potensio itu dgn secara otomatis dari 0-10 jg, tp perubahan dr nilai 0-10 itu diberikan delay selama 1 detik, apakah program sepeti ini pake multitasking jg mas, trus gmn y programnya? mohon… Read more »
Jeffry Indriawan
Guest

Mas numpang nanya kalau untuk perintah sms menggunakan fungsi millis kira-kira bagaimana ya mas. terim kasih

Mayang artika tami
Guest

Mas mau nanya , gimana ya coding menghentikan fungsi void loop sementara trus difungsikan kembali ketika 5 menit, cth: fungsi void lupo berhenti jika pinA0 ada inputan , mohon dibls mas ya

budi
Guest
Mas, saya mau tanya.. saya ingin memprogram sensor ultrasonik untuk menyalakan lampu setelah itu lampu akan mati setelah 5 detik. Tapi saya ingin menyalakan lampu saat ultrasonik terdeteksi pertama kali. Jadi saya mendeteksi benda dengan jarak 5cm,, dimana panjang benda nya 7 cm.. maka selama benda masih terdeteksi sepanjang panjang tersebut,, pasti lampu led akan terus menyala kan ya mas.. nah,, saya mau memprogram saat ultrasonik terdeteksi pertama kali,, habis itu menyalakan lampu setelah itu 5 detik akan mati lampu tersebut tanpa harus menunggu sensor ultrasonik mendeteksi benda sepanjang 7 cm.. kira2 bisa engga ya mas kalo di program seperti… Read more »
budi
Guest

kira2 gmana ya mas caranya ??

bincar
Guest

malam masss, saya kan mau merancang pendeteksi kekeruhan menggunakan sensor LDR dan Juga motor servo untuk sistem pengumpanan otomatis.. saat digabungkan programmnya itu berhasil, tapi sensor hanya akan membaca (aktif di led) itu sesuai dengan setting delay servo. yang jadi pertanyaannya gimana cara biar bisa menjalankan fungsinya masing2( untuk sensor LDR) tanpa ketergantungan dengan delay servo? jika menggunakan millis atau simpletimer itu gimana mas? makasihhhh… albinokaroles@gmail.com

BRYAN THAYLEN SITORUS
Guest
BRYAN THAYLEN SITORUS

malam mass saya mau nanyak gimana ya cara membaca perbedaan sudut phi pada daya listrik , menggunakan fungsi millis apakah bisa ? jadi intinya seperti pendeteksi cos phi atau faktor daya

bincar
Guest

masalahnya saya gak paham gabunginnya mas jika menggunakan millis atau simpletimer.. mohon bantuannya mas untuk TA… ini email saya albinokaroles@gmail.com

yogie
Guest

gan cara ngirim nilai variable ukur ke lewat sms gimana ya gan ky misalkan kan ukur suhu pake sensir panas , nah nilai hasil ukur nya mau dikirim pake sms ??

Andri
Guest

Assalammua’laikum kang.
Izin bertanya.
Kenapa LCD 16×2 tulisannya suka error ga karuan ketika speaker 12v 1.5A On. Ketika OFF LCD normal dan ketika Running hanya dengan relay tanpa beban Speaker LCD normal tulisannya tidak error.

Terimakasih kang

Priyo
Guest

Selamat malam mas saya lagi belajar arduino.saya sedang mencoba mengaktifkan relay dengan bluetooth.saya mau menambahkan indikator led atau buzzer,jadi setiap ada perintah dari bluetooth led menyala atau buzzer berbunyi itu bagaimana ya.terimakasih

Priyo
Guest

Maaf mas mau tanya lagi.saya coba menggunakan simple timer seperti diatas.saya coba simulasi di proteus. Memang bekerja.tp setelah bekerja ada pesan error cpu over load.dan arduino jadi non aktive.saya menggunakan arduino pro mini.bagaimana ya mas biar bisa bekerja dengan lancar.terimakasih.

Priyo
Guest

Baik mas terimakasih banyak sudah membantu saya.

eka
Guest

gimana kalo buat program multitasking arduino menggunakan 2 ic demux untuk 15 servo

Galang
Guest

Pakai simple timer bisa buat program led blink kah?

Andi Yuniawan
Guest

mas aji pada program yg saya buat dht11 secara real time akan membaca suhu dan kelembaban ruangan, kemudian setiap 2 menit sekali arduino akan mengirimkan datanya ke database. Masalahnya adalah dalam waktu 2 menit itu ketika ada perubahan suhu arduino tidak mendeteksi karena ketahan oleh delay(). Solusinya bagaimana mas? terima kasih..

error: Content is protected !!