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.
Jazakallahu khoiron katsiiron gan, mantap…
iya gan, sama sama.
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
Assalamualaykum, Pak, saya ingin bertanya, apakah arduino bisa membaca tegangan lebih dari 1 sumber listrik atau 2 sumber listrik (baterai)?
mohon pencerahannya, Terima Kasih
bisa gan, pakai 2 pin analog berarti, misalnya battery 1 dibaca menggunakan pin analog 1 dan battery 2 dibaca menggunakan pin analog 2.
assalamu alaikum mas,
ini percobaan kan 1 led, gimana kalau 4 led atau 4 sensor, contohnya dong