Millis adalah sebuah fungsi pada sintak arduino yang berguna menjalankan waktu secara independen. Pasti ada yang bingung kan bedanya millis sama delay?
Bedanya adalah millis dapat menjalankan program dengan multi tasking tanpa menghentikan kerja keseluruhan arduino. Berbeda dengan delay, fungsi delay membuat kerja arduino berhenti.
Dengan delay, arduino dapat menjadi lebih menghitung. Karena saat arduino menjalankan fungsi delay, arduino tidak dapat mengerjakan kerja program lain.
Aplikasinya dapat digunakan dalam pengendalian motor, lampu led, dan masih banyak lagi Rangkaian
Rangakaian Miliis pada Pin arduino 8 |
Aplikasi Millis?
Berikut adalah program untuk menyalakan dan mematikan LED pada pin 8 dengan waktu tunda satu detik menggunakan millis.
Diawal terdapat deklarasi yaitu variable interval,
previosMillis, currentMillis, dan millis(); saat menyimpan data millis digunakan type
variable unsigned long. Kenapa unsigned long karena datanya panjang.
Pertama, currentMillis menghitung waktu secara independent dari millis(), kemudian adalah program terus berputar. Kemudian akan terpanggil dan melakukan check apakah currentMillis – previousMillis >= 1000?. Saat itu previousMillis masih bernilai 0 karena inisialisasi awal.
jika tidak maka variable previousMillis akan mengambil waktu lagi dari millis. Hal tersebut dilakukan millis sampe nilai mendekati 1000.
Setelah currentMillis – previousMillis >= 1000 sudah terpenuhi, LED akan dirubah menjadi perintah menyalakan dan mematikan sesuai dengan program yang dibuat.
Itu berdasarkan perintah if. Yaitu, if ((unsigned long)(currentMillis - previousMillis) >= interval) lalu masuk ke bagian if.
ledState = !ledState; digunakan untuk melihat status false atau true. Untuk menghidupkan perintah menyalakan dan mematikan secara bergantian sesuai dengan perhitungan millis();
Untuk perintah terakhir adalah previousMillis = millis(); fungsinya untuk mengembalikan millis untuk dijadikan nilai previousMillis yang selanjutnya digunakan untuk perhitungan if.
Itu dilakukan secara terus menerus looping hingga terpenuhi nilai 1000, maka previousMillis akan kembali ke 0 dan mengulangi perhitungan dari awal.
kalo mau bikin 2 variasi millis gmn mas
ReplyDeleteunsigned long previousMillis4=0;
Deleteunsigned long previousMillis5=0;
unsigned long previousMillis6=0;
int intervalLED4 = 1000;
int intervalLED5 = 2000;
int intervalLED6 = 3000;
boolean LED4state = true;
boolean LED5state = true;
boolean LED6state = false;
void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if ((unsigned long)(currentMillis - previousMillis4) >= intervalLED4){
LED4state = !LED4state;
digitalWrite(4, LED4state);
previousMillis4 = currentMillis;
}
if ((unsigned long)(currentMillis - previousMillis5) >= intervalLED5){
LED5state = !LED5state;
digitalWrite(5, LED5state);
previousMillis5 = currentMillis;
}
if ((unsigned long)(currentMillis - previousMillis6) >= intervalLED6){
LED6state = !LED6state;
digitalWrite(6, LED6state);
previousMillis6 = currentMillis;
}
}
bang izin tanya,bagaimana cara membuat 2LED dengan milis,LED1 interval=3dtk LED2 interval=4dtk.trus agar setelah 5mnt intervalnya bertukar bang.
ReplyDeletetrimakasih bang
kalau cara menghentikan millisnya dengan pernyataan If bagaimana mas?
ReplyDeletekalau cara menghentikan millisnya dengan pernyataan If bagaimana mas?
ReplyDelete