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.
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.
char val='0'; void setup() { pinMode(2,OUTPUT); pinMode(3,OUTPUT); digitalWrite(2,LOW); //LED 1 digitalWrite(3,LOW); //LED 2 Serial.begin(9600); } void loop() { if( Serial.available() ) { val = Serial.read(); Serial.println(val); } if( val == '1' ) { digitalWrite(2,HIGH); delay (5000); } else if( val == '2' ) { digitalWrite(3,HIGH); } }
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.
#include <SimpleTimer.h> SimpleTimer timer; char val='0'; void setup() { pinMode(2,OUTPUT); pinMode(3,OUTPUT); digitalWrite(2,LOW); //LED 1 digitalWrite(3,LOW); // LED 2 Serial.begin(9600); } void loop() { timer.run(); if( Serial.available() ) { val = Serial.read(); Serial.println(val); } if( val == '1' ) { digitalWrite(2,HIGH); timer.setTimeout(5000, pin2high); } else if( val == '2' ) { digitalWrite(3,HIGH); } } void pin2high(){ digitalWrite(2,HIGH); val='0'; }
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 … 🙂
Update: untuk ‘multasking’ di Arduino menggunakan library RTOS bisa dibaca di artikel multitask Arduino RTOS
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
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…….
bisa aja mas, tinggal kasih rangkaian driver dr arduino ke masing2 klakson
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
software apa yg dimaksud ya? kalo software utk bikin sketch nya pake Arduino IDE bisa di download di web resmi arduino. Kalo software yg dimaksud adlah sketch, di artikel udah ada ada contoh sketvh-nya
utk stok komponen elektronika saat ini banyak yg kosong, barang datang ntar akhir februari 2017, ntar bisa dicek di toko online sy di tokopedia.com/raftech
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 »
pin digital = pin yg bekerja pada tegangan logika digital yaitu +5V (logic ‘1’/’HIGH’) dan 0V (logic ‘0’/’LOW’), jadi pin digital hanya mengenal dua kondisi aja, yakni ‘HIGH’ atau ‘LOW’ aja. Pin digital dpt diset sebagai input maupun output pin analog = pin yang dapat membaca tegangan analog (kontinu) dalam rentang 0V s/d 5V. Jadi pin analog ini dapat membaca tegangan 0V, 1V, 1,2V, 2.7V dst sampai dengan 5V. Pin analog hanya dapat berfungsi sebagai input untuk membaca besaran analog (utk tingkat advance, pin analog dpt diset sbg pin digital, tp utk smtr buat yg baru belajar, anggap aja pin… Read more »
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….
hrg buku 85rb, ongkir sktr 20ribu. Atau bisa beli via tokopedia https://www.tokopedia.com/raftech/buku-mudah-belajar-mikrokontroller-dengan-arduino
kalo arduino/ic atmega pada prnsipnya bisa dibaca programnya kalo tidak di-lock sama yg bikin program
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….
silahkan mas, udah sy sms ke nomor diatas
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…..
stok kosong mas, kira2 2 minggu lagi barang datang
USB TTL/UART/ FTDI 232 PLUS KABEL TIPE C SUDAH ADA BARANGNYA YA MASS ??? TOLONG DI KASIH KABAR ……VIA SMS TRIMAKASIH
belum mas, ntar begitu ada sy kabari
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
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.
sama aja mas, pada prinsipnya arduino itu menggunakan mikrokontroller avr atmega8/168/328/2560 dst
Mau tanya, apa kelebihan multitasking menggunakan file header ‘SimpleTimer.h’ dibandingkan dengan fungsi “millis()”
sebenarnya sama aja mas, karena ‘daleman’ simpletimer juga pake millis. Cuma mungkin pemakaian simpletimer lebih mudah drpd penggunaan millis, udah modular, tinggal panggil aja
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
mas, izin jawab 🙂 mungkin pastikan dulu tegangan dan arus sim800L terpenuhi dulu mas (3,7-4,2V, arus minimal 600mA). Yang kedua coba cek suhu sim800L. Kebanyakan akan nge-hang kalo over heat alias kepanasan. Yg ketiga, coba cek kuat sinyal operator. Kalo sinyal jelek, maka sim800L akan dipaksa pada maksimal kemampuannya, akibatnya ceat panas dan nge-hang juga Yang terakhir, problem di atas bisa diatasi secara software juga. Bikin timer periodik 3-5 jam. Jika sudah tercapai, maka akan reset sim800L secara otomatis. Caranya hubungkan pin RST modem sim800L dengan salah satu pin digital Arduino, kemudian set dari HIGH ke LOW (delay 200ms) kemudian… Read more »
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
coba bikin dl sketch utk sensor kec roda, sketch timer, sketch timer, sketch untuk speaker. Kalo masing2 udah bisa tinggal digabungin
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.
waalaikumsalam wr wb. Kalo digerakkan seperti biasa apa tidak bisa mas?
misal :
myServo1.Write(180);
myServo2.Write(90);
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
pengaturannya mudah mas : intinya antar perangkat yang berkomunikasi serial, paremeter komunikasi seriallnya harus sama persis
Newbie nich.. Minta dibantu kang.. sy mau jalankan 2 fungsi sekaligus pada satu sketch yaitu LDR dan bluetooth dgn multitasking bgmana ya..?
bisa pake cara di atas. Tapi menurut saya langsung aja tulis sketch spt biasa juga msh bisa
Kalo pake sketch biasa sy pernah cb tp sprtinya fungsi dr bluetooth-nya ga maksimal dan sepertinya beberapa fungsinya hang ketika fungsi LDR dijalankan bersamaan, apakah dengan mendeklarasikan : #include
Apakah bisa menjadi solusinya agar kedua fungsi masing-masing tidak terganggu?… Thx.
Assalamualaikum mas, ardunio bisa digunakan 2 keypad atau tidak, misalkan bisa tolong di beritahu mas type arduinonya apa sebelumya terimakasih mas
bisa mas, pake arduino mega aja yg mudah
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?
Sensor PIR hanya bisa sekali mendeteksi gerakan, jadi ga bisa terus aktif selama 2 jam begitu mendeteksi sekali gerakan. Sensornya akan terus mendeteksi gerakan setiap waktu dengan logic output yang berubah2 menyesuaikan objek di depannya.
Untuk case di atas, solusinya ada di arduinonya. Program/sketch-nya harus bisa menyimpan status gerakan selama 2 jam (atau berapapun) begitu mendeteksi sebuah gerakan
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
bukan pake delay mas, tp simpan data (selama 2 jam) begitu sensor mendeteksi gerakan yg pertama. Sebenarnya hanya permainan logika aja. Kalo bingung coba bikin flowchart-nya dulu
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
coba cek ground masing-masing sensor mas, pastikan terhubung dengan arduino. Kalau bisa kabel penghubung antara sensor dengan arduino adalah kabel yg bagus dan jangan terlalu panjang. Kalo masih ga stabil coba kasih kapasitor 100nF antara positif sensor ke jalur ground
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
waalaikumsalam wr wb
apakah bisa dengan input 2 sensor IR (RPM & Speed) dijadikan satu pada arduino uno? Bisa mas. Bisa pake metode digitalRead atau metode interrupt. Kalo metode interupt kelebihannya bisa multitasking dengan action yang lain
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.
coba copykan errornya scr lengkap ke sini mas atau cb upgrade ke arduino ide versi yg terbaru (1.8.0 ke atas)
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
coba library nya diinstal dg cara sbb : http://saptaji.com/2015/07/09/cara-menambahkan-library-di-arduino-dan-penggunaannya/
oke mas..
saya mau tanya lagi,, kira2 kalo saya ingin menampilkan data dari sensor ultrasonik secara bersamaan gmana ya mas ?? terima kasih.
kalo sy pake function ini mas, bisa dicoba
void SonarSensor(int trigPin,int echoPin)
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
}
nanti tinggal panggil aja, contoh :
SonarSensor(trigPin1, echoPin1);
Sensor1 = distance;
SonarSensor(trigPin2, echoPin2);
Sensor2 = distance;
SonarSensor(trigPin3, echoPin3);
Sensor3 = distance;
jangan lupa di void setup, declare ini dulu:
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
semoga membantu
Kalo saya pake library NewPing kira2 gmana ya mas untuk nampilin data jarak secara bersamaan ??
kyknya ga bisa, newping hanya utk satu sensor aja
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.
pake library SimpleTimer aja mas, lebih mudah. Tapi kalo mau pake millis juga bisa. Contoh berikut adalah semacam smart delay menggunakan millis
static void smartDelay(unsigned long ms)
{
unsigned long start = millis();
do
{
//script baca kondisi sensor infra red
} while (millis() – start < ms); } pemakaiannya tinggal panggil aja function di atas. Contoh kalo mau detect infra red selama 3 detik: smartDelay(30000);
owh, gitu ya mas.. saya mau tanya lagi kalo sensor ultrasonic suka terdeteksi sendiri kenapa ya mas ? penyebabnya kira2 apa ya mas ?
maksudnya ‘terdeteksi sendiri’ apa mas?
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..
sensor ultrasonik kan kerja kalo kita trigger di pin ‘TRIGGER’. Nah, skr mas coba cek ada ngga script yg men-trigger sensor diluar ketentuan?
Engga ada mas..
Kalo powersupply nya berpengaruh engga mas ?
Misalkan saya tambahkan kapasitor 100nf di vcc dan groudnya sensor gmana mas ?
gpp mas, malah lebih bagus untuk menghilangkan ripple atau surge voltage.
Kalo saran saya bikin program terpisah dr program utama. Program kecil ini hanya untuk menganalisa kerja sensor ultrasonik. Kalo udah yakin benar baru dipindah lg ke program utama
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.
kl lihat potongan script spt itu susah analisanya mas. Saya sarankan pake SimpleTimer aja, mudah kok pemakaiannya. contoh:
SimpleTimer timer;
….
…
timer.setTimeout(5000,tunda); –> akan mengeksekusi function ‘tunda’ 5 detik kemudian (sekali aja)
timer.setInterval(10000,ulang); –> akan mengeksekusi function ‘ulang’ setiap 10 detik
udah paham bedanya kan?
Kalo pakai simple timer itu kan buat waktu tunda ya mas.. Kalo di project saya ini untuk membuat dua stopwatch mas..
stopwatch pake ini bisa mas –> timer.setTimeout(5000,tunda);
Kalo boleh tau,, contoh sketch stopwatch nya seperti apa ya mas ? Masih belum paham saya mas.
contoh:
timer.setTimeout(5000,tunda); //–> akan mengeksekusi function ‘tunda’ 5 detik kemudian (sekali aja)
….
void tunda(){
//tulis script yg akan dieksekusi 5 detik kemudian
}
Untuk script stopwatch nya dmananya ya mas ??
yg ini ;
timer.setTimeout(5000,tunda); //–> akan mengeksekusi function ‘tunda’ 5 detik kemudian (sekali aja)
….
void tunda(){
//tulis script yg akan dieksekusi 5 detik kemudian
}
efeknya sama kayak stopwatch dg hitungan 5 detik
assalam. wr wb
ini blog yg sangat membantu.. apa lagi setiap coment dijawab, kebetulan saya lagi blajar arduino.. mohon bimbingan mas ajie..
wassalam..
waalaikum salam wr wb, maaf agak lama responnya, habis libur panjang, he he he.
Silahkan kalo ada pertanyaan, disampaikan aja di sini
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 »
kalo saya lihat seperetinya bukan multitasking. Trus mas ini maunya seperti apa? maaf saya belum menangkap maksudnya
Mas numpang nanya kalau untuk perintah sms menggunakan fungsi millis kira-kira bagaimana ya mas. terim kasih
Ini maksudnya millis disini mau difungsikan sebagai delay dalam mengirim sms ya? sebenarnya mudah aja aja sih, bisa dibikin function ‘smartdelay’ sbb:
static void smartdelay(unsigned long ms)
{
unsigned long start = millis();
do
{
//lakukan suatu multitasking di sini
} while (millis() – start < ms); } nanti ketika mau kirim sms tinggal panggil aja function smartdelay sebagai delay serialSIM800.write("AT+CMGS=\"+628123456789\"\r\n"); smartdelay(1000); serialSIM800.write("smsnya"); smartdelay(1000); serialSIM800.write((char)26); smartdelay(1000); Serial.println(F("SMS terkirim!"));
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
void loop tidak bisa berhenti karena desain sistem di arduino adalah demikian. Jika dalam suatu case ingin ‘menghentikan’ proses yang ada di dalam void loop bisa memanggil function lain atau dengan menggunakan while (true) {}. Contoh :
void loop(){
while (analogRead(A0)>1){
Serial.println(“nge-loop terus disini sepanjang ada tegangan di A0”);
}
}
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 »
bisa mas
kira2 gmana ya mas caranya ??
bikin flow chartnya dulu aja mas, biar tau alur programnya, habis itu diterjemahkan ke dalam bentuk program per barisnya
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… [email protected]
coba delaynya diganti ‘smart delay’ pake simpletimer atau milis
masalahnya saya gak paham gabunginnya mas jika menggunakan millis atau simpletimer.. mohon bantuannya mas untuk TA… ini email saya [email protected]
ini ‘smart delay’ yg biasa sy pakai, silahkan dimodif sendiri sesuai keperluan:
static void smartdelay(unsigned long ms)
{
unsigned long start = millis();
do
{
//isikan kode anda d sini
} while (millis() – start < ms); }
program saya gini mas, saya blum tau harus masukkan program yang lain itu dimana dan millis itu dimana..
mohon bantuannya digabung
#include
Servo myservo;
int pos=0;
int val=180;
void setup()
{
myservo.attach(10);
}
void loop()
{
for (pos=0;pos=1;pos -=1)
{
myservo.write(val);
delay(100);
}
}
terima kasih mass
coba pake freertos aja mas
pake freertos bisa juga, cuma yg jadi kendala tidak semua orang mudah migrasi ke os/bhs pemgrograman yg satu ke lainnya. Mending yg udah paham digali lebih dalam lagi
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
milis itu untuk menghtung waktu mas. Kalo misalkan mau digunakan untuk menghitung cos phi ya bisa aja tergantung sama program dan sensornya
ya mas kan saya mau mengetahui sudut pergeseran fasa nya saya menggunakan sensor acs712 dan zmpt101b mas , kira kira mas tau gak mas gimana cara pemogramannya
analisa saya dapatnya itu jadi hitung selang waktu high arus dan tegangan terus ketika saat arus dan tegangan mencapai titik 0 catat waktu tersebut. ini untuk LISTRIK AC 220V/50Hz
mohon bantuannya ya mas untuk TA nih mas..
coba pelajari library ’emon’ dr emoncms, di situ ada perhitungan cos phi
masalahnya saya gak paham gabunginnya mas jika menggunakan millis atau simpletimer.. mohon bantuannya mas untuk TA… ini email saya [email protected]
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 ??
ke sini http://saptaji.com/2016/08/25/cara-mengirim-sms-dengan-sim800-dan-arduino/
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
coba dicek ground nya, biasanya krn itu. Biar yakin tambahkan elco antara tegangan +v dan ground, terutama yg dekat relay
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
yg pertama pairing bluetooth dulu
yg kedua, pada dasarnya bluetooth module yang ada di pasaran menggunakan metode SPP (Serial Port Profile), jadi mengkonversi komunikasi bluetooth jadi serial asinkron biasa. Jadi nanti perlu semacam ‘penerjemah’ data serial yang keluar/masuk di sisi transmitter/receiver bluetooth-nya
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.
coba dijalankan di real arduino mas
Baik mas terimakasih banyak sudah membantu saya.
gimana kalo buat program multitasking arduino menggunakan 2 ic demux untuk 15 servo
mungkin yg dimaksud bukan ‘demux’ tapi ‘mux’ (multiplekser)-nya ya mas? misalkan pake ic mux juga bisa, bahkan menurut sy dengan adanya multiplxer ini justru arduinonya tidak perlu multitasking lagi. Penggunaan multiplekser juga cukup mudah, cukup mengatur address channel-nya aja, maka sinyal akan keluar sesuai tujuannya (untuk case di atas, hanya servo yang teralamati yang akan bergerak sesuai perintah). Cuma sy ingatkan mungkin ic mux yg dipakai yang tipenya analog ya, krn sinyal kontrol utk motor servo ini diatur berdasarkan duty cycle. Jadi sy rasa kalo pake mux digital tidak akan bisa.
Pakai simple timer bisa buat program led blink kah?
bisa
Ada contoh programnya mas?
kurang lebih gini mas:
timer.setInterval(5000,blink);
.
.
.
void blink(){
digitalWrite(led,status);
status=!status;
}
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..
itu karena function delay sifatnya harus nunggu sampai selesai dulu mas. Saya sarankan pake ‘smart delay’ sbb (pake fungsi millis)
static void smartdelay(unsigned long ms)
{
unsigned long start = millis();
do
{
//isi program anda disini yg sifatnya menunggu selama delay
} while (millis() – start < ms); } cara panggilnya tinggal 'smartdelay(1000);' untuk delay selama 1 detik. Keunggulannya pake smartdelay ini di dalamnya kita bisa insert script tertentu (pengecekan port, sensor, dll) atau alternatif lain bisa pake library SimpleTimer, contohnya bisa dibaca di artikel multitasking arduino
Terima kasih mas. Izin tanya lagi mas. hehe Arduino bisa tdk baca data dari database? Jadi tujuannya adalah ketika ada perubahan pengukuran dari dht11 makan arduino akan ngirim data tsb ke database, tetapi jika datanya sama tidak akan mengirim. Otomatis kan arduino harus baca data terakhir di tabel untuk dibandingkan dengan hasil pengukuran sekarang. Bagaimana caranya ya mas? Terima kasih..
databasenya ada di mana mas? di arduinonya atau di server?
database ada di server mas, pakai phpmyadmin. Jadi arduino sbgai webclient.
oh, sangat bisa mas. Sy lihat kan mas udah bisa kirim data, tinggal tambah script echo aja di sisi API servernya (kalo pake PHP), ntar dibaca arduinonya. Atau alternatif kedua, bisa aja API-nya yang aktif, jadi ketika data yg dikirim arduino sama dengan data sebelumnya, data ngga usah dimasukkan ke database. Kalo arduinonya biarin aja kirim data terus secara berkala
tambah script echo di sisi API server spt apa contohnya mas? Nah option kedua itu sptnya lebih gampang akan tetapi apakah si arduino n ethernet shield tdk akan rusak mas kalau kirim data terus? (berarti kan filter ada di php nya kan mas)
opsi pertama arduino juga akan ngecek terus2an ke server. Sama aja, bahkan kerja 2x (ngecek dan kirim data). Tinggal diatur intervalnya, kl di atas 1 menit sekali kirim data masih ok lah.
script echo mah tinggal echo aja 🙂 , contoh:
Alhamdulillah dah solved mas yang otomatis send data kalau ada perubahan pengukuran. Nah ini muncul problem lagi di webnya. Jadi kan ketika berubah lcd dan serial monitor otomatis berubah tetapi kalau di web harus di klik refresh dlu. Saya pakai header (“refresh: 0; url:=’index.php'”) tapi kok belom bisa ya. Ada solusi lain mas? terima kasih..
paling mudah pake tag html meta, contoh: (auto refresh tiap 30 detik)
tapi lebih saya sarankan auto refresh pake AJAX/Jquery mas, karena hanya refresh bagian yang menampilkan nilai (value) aja, tidak semua page kayak contoh di atas.
iya mas saya sudah pakai meta alhasil webnya refresh2 trus tapi memang setiap ada perubahan langsung update. Kalau pakai jquery efeknya gmna mas? Pengennya saya mah kalau pas ngirim ke database aja dia refresh jadi trigernya dari pengiriman, kan kalau biasanya on click atau submit button gtu mas.
kalo saya biasanya paka javascript+DOM. Jadi javascript pake setInterval timer, kalo udah onTimer tinggal set value element html pake DOM. Caranya googling aja ya mas, he he, tinggal dikit lagi itu
OK mas saya pelajari dlu ya. hehe.. satu lagi mas, saya kan menerapkan fuzzy logic jadi logikanya adalah jika suhu dan kelembaban sesuai dengan rules yang dibuat dia akan membunyikan bel.
void loop() {
if suhu… dan kelembaban.. {
munculkan notifikasi
bunyikan bel
kirim email
} else if….
nah pertanyaanya adalah bell akan bunyi terus selama dia ada di posisi rules tersebut karena masuk looping, nah bisa gag bell itu di silent dlu, jadi kita set bunyi selama 2 menit tapi bisa di silent.
kmr kayaknya udah saya jawab pertanyaannya di artikel buzzer arduno