Penggunaan delay() dalam projek Arduino sangat lah tidak digalakkan. delay() dalam coding Arduino akan membuatkan coding stuck pada delay() dan melambatkan proses pembacaan coding oleh Arduino. Untuk mengelakkan sebarang masalah efisiensi sesuatu projek, delay() tidak digunakan dan digantikan dengan timer.
SimpleTimer.h Library
SimpleTimer.h merupakan library yang dicipta untuk menetapkan tempoh sesuatu function agar diaktifkan mengikut tempoh yang diingini.
Library Simpletimer diperlukan untuk menggunakan timer ini, library Simpletimer boleh didapati disini https://github.com/schinken/SimpleTimer
Berikut disediakan contoh coding simulasi bagaimana Simpletimer berfungsi.
#include <SimpleTimer.h> int count = 0; SimpleTimer timer1; // the timer object void setup() { Serial.begin(9600); timer1.setInterval(1000, repeatMe); }//END VOID SETUP void loop() { timer1.run(); Serial.print("count = "); Serial.print(count); Serial.println(); }//END VOID LOOP // function to be executed periodically void repeatMe() { count = count + 1; }//END REPEATME
Struktur yang perlu diketahui sebelum menggunakan SimpleTimer.h Library

Langkah-langkah mengunakan SimpleTimer.h :
- Include SimpleTimer.h Library dalam DEFINING AREA
#include <SimpleTimer.h>
- Declare OBJECT timer anda di dalam DEFINING AREA
SimpleTimer timer1; // the timer object
- Jika memerlukan lebih dari 1 timer
SimpleTimer timer1,timer2; // the timer object //timer1 represent first timer //timer2 represent second timer
- Tetapkan kelajuan tempoh dan function yang ingin dipanggil dalam void setup()
timer1.setInterval(1000, repeatMe); //1000 bermakna masa sub-routine repeatMe akan diaktifkan setiap 1 saat //jumlah itu boleh ditukar mengikut kemahuan sendiri
- Cipta function yang ingin ditempohkan di ruangan sub-routine
void repeatMe() { count = count + 1; }//END REPEATME
- Run timer di dalam void loop()
timer1.run();
Bagaimana SimpleTimer berfungsi?
SimpleTimer Library ‘memanggil’ sub-routine mengikut tempoh yang ditetapkan ke dalam void loop. Oleh itu, void loop hanya membaca sub-routine tersebut setiap kali dipanggil.
Kebaikan SimpleTimer ini adalah loop utama iaitu void loop tidak terganngu sama sekali walaupun SimpleTimer gagal memanggil sub-routine tersebut.
BLink LED
Langkah #1 : Sambungan Litar
Sambungkan litar anda mengikut gambar rajah berikut:
Langkah #2 : Coding/Sketch
Copy sketch di bawah dan pastekan dalam Adruino IDE anda.
#include <SimpleTimer.h> //masukkan library SimpleTimer.h int count = 0; SimpleTimer timer1; // the timer object void setup() { Serial.begin(9600); pinMode(2,OUTPUT);//declare pin 2 sebagai output LED timer1.setInterval(1000, LEDBLINK); //1000 bermakna masa sub-routine LEDBLINK akan diaktifkan setiap 1 saat //jumlah itu boleh ditukar mengikut kemahuan sendiri }//END VOID SETUP void loop() { timer1.run();//program untuk aktifkan timer if (count == 1){ digitalWrite(2,HIGH); //LED akan menyala bila value count=1 } if (count == 0){ digitalWrite(2,LOW); //LED akan padam bila value count=0 } Serial.print("count = "); Serial.print(count); Serial.println(); }//END VOID LOOP //sub-routine yang akan diaktifkan mengikut masa yg kita tetapkan void LEDBLINK() { count = count + 1;//core routine untuk LEDBLINK if (count>1){ count=0; //limitkan jumlah count kepada 0 dan 1 sahaja } }//END REPEAT ME
Setelah coding diupload , LED pada pin 2 akan menyala selama 1 saat dan padam selama 1 saat kemudian proses ini akan berulang dan LED tersebut dapat dilihat berkelip-kelip.
BONUS – Running LED
SimpleTimer boleh mempunyai berbagai-bagai aplikasi. Salah satu aplikasi adalah Running LED yang akan diterangkan bagaimana Running LED dijalankan tanpa menggunakan delay.
LANGKAH #1: Sambungan Litar
Sambungkan litar anda seperti gambarajah berikut:
Jika anda menggunakan LED yang lebih banyak boleh sambungkan ke pin digital yang avaible.
LANGKAH #2: CODING/SKETCH
Copy sketch di bawah dan pastekan dalam Arduino IDE anda.
#include <SimpleTimer.h> //masukkan library SimpleTimer.h int count = 0; SimpleTimer timer1; // the timer object void setup() { Serial.begin(9600); pinMode(2,OUTPUT);//declare pin 2 sebagai output LED1 pinMode(3,OUTPUT);//declare pin 3 sebagai output LED2 pinMode(4,OUTPUT);//declare pin 4 sebagai output LED3 //jumlah pinMode bergantung kepada jumlah LED yg digunakan timer1.setInterval(500, RunningLED); //program ini menggunakan 0.5 saat time interval //bagi setiap LED menyala }//END VOID SETUP void loop() { //CODING TIMER timer1.run(); //CODING LED OUTPUT UNTUK RUNNING LED if (count == 0){ digitalWrite(2,HIGH); digitalWrite(3,LOW); digitalWrite(4,LOW); //LED1 akan menyala bila value count=0 } if (count == 1){ digitalWrite(2,LOW); digitalWrite(3,HIGH); digitalWrite(4,LOW); //LED2 akan menyala bila value count=1 } if (count == 2){ digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,HIGH); //LED3 akan menyala bila value count=2 } //SERIAL PRINT UNTUK CHECK KONDISI COUNT Serial.print("count = "); Serial.print(count); Serial.println(); }//END VOID LOOP //sub-routine yang akan diaktifkan mengikut masa yg kita tetapkan void RunningLED() { count = count + 1;//core routine untuk RunningLED if (count > 2){ count=0; //limitkan jumlah count kepada 0 hinggah 2 //limit ini boleh diubah suai bergantung kpd jumlah LED } }//END RUNNING LED
Coding di atas akan mengaktifkan running LED anda dan boleh diubah suai mengikut kreativiti dan keinginan anda. Refer instruction untuk mengenal pasti bahagian yang boleh diubah suai.
Anda boleh tinggalkan sebarang persoalan di ruangan komen tentang apa-apa yang berkaitan dengan SimpleTimer.
Selamat mencuba.