Fungsi untuk Memanipulasi Waktu dalam Arduino

Arduino menyediakan empat fungsi manipulasi waktu, yaitu delay(), delayMicroseconds(), millis(), dan micros().

Fungsi delay()

Cara kerja fungsi Delay () cukup sederhana. Fungsi ini menerima argumen bilangan bulat (bilangan). Bilangan ini merepresentasikan waktu (diukur dalam milidetik). Program harus menunggu sampai pindah ke baris kode berikutnya ketika bertemu fungsi ini. Namun, masalahnya adalah, fungsi delay() bukanlah cara yang baik untuk membuat program menunggu, karena dikenal sebagai fungsi “blocking”.

Sintaks : delay (ms) ;

dimana, ms merupakan waktu dalam milisekon untuk tunda (unsigned long).

Contoh

/* LED Berkedip
   * Menyalakan dan mematikan LED yang terhubung ke pin digital dalam interval 2 detik. *
*/

int ledPin = 13; // LED terhubung ke pin 13

void setup() {
   pinMode(ledPin, OUTPUT); // mengatur pin digital sebagai output
}

void loop() {

   digitalWrite(ledPin, HIGH); // mengatur LED menyala
   delay(1000); // menunggu satu detik
   digitalWrite(ledPin, LOW); // mengatur LED mati
   delay(1000); // menunggu satu detik

}

Fungsi delayMicroseconds()

Fungsi delayMicroseconds() menerima argumen integer tunggal (bilangan). Bilangan ini menunjukkan waktu dan diukur dalam mikrodetik. Ada seribu mikrodetik dalam milidetik, dan sejuta mikrodetik dalam satu detik. Saat ini, nilai terbesar yang dapat menghasilkan penundaan akurat adalah 16383. Ini mungkin berubah dalam rilis Arduino masa depan. Untuk penundaan lebih lama dari beberapa ribu mikrodetik, maka harus menggunakan fungsi delay() sebagai gantinya.

Sintaks : delayMicroseconds (us) ;

dimana, us merupakan bilangan mikrodetik untuk tunda (unsigned int)

Contoh

/* LED Berkedip
  * Menyalakan dan mematikan LED yang terhubung ke pin digital
  * dalam interval 1 detik. *
*/

int ledPin = 13; // LED terhubung ke pin digital 13

void setup() {

   pinMode(ledPin, OUTPUT); // mengatur pin digital sebagai output

}

void loop() {

   digitalWrite(ledPin, HIGH); // LED menyala

   delayMicroseconds(1000); // tunda 1000 mikrodetik

   digitalWrite(ledPin, LOW); // LED mati

   delayMicroseconds(1000); // tunda 1000 mikrodetik

}

Fungsi millis()

Fungsi ini digunakan untuk menghasilkan jumlah milidetik yang berlalu sejak Arduino mulai menjalankan program saat ini. Jumlah ini akan melimpah (kembali ke nol), setelah sekitar 50 hari.

Sintaks : time = millis()

Contoh kode program di bawah ini akan mencetak pada port serial jumlah milidetik yang dilewati sejak Arduino mulai menjalankan kode tersebut.

unsigned long time;
void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print("Time: ");
  time = millis();
  Serial.println(time); //mencetak waktu sejak program dijalankan
  delay(1000); // menunggu satu detik agar tidak mengirimkan data dalam jumlah yang besar
}

Harap dicatat bahwa nilai hasil untuk millis () adalah tipe data unsigned long, kesalahan logika dapat terjadi jika seorang programmer mencoba melakukan aritmatika dengan tipe data yang lebih kecil seperti int. Bahkan yang tipe signed long dapat mengalami kesalahan.

Fungsi micros()

Fungsi micros() menghasilkan jumlah mikrodetik dari waktu, papan Arduino mulai menjalankan program saat ini. Jumlah ini kembali ke nol setelah sekitar 70 menit. Pada papan Arduino 16 MHz (misalnya Duemilanove dan Nano), fungsi ini memiliki resolusi empat mikrodetik (misalnya Nilai yang dikembalikan selalu kelipatan empat). Pada Arduino 8 MHz (misalnya LilyPad), fungsi ini memiliki resolusi delapan mikrodetik.

Sintaks : time = micros()

Contoh

unsigned long time;
void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print("Time: ");
  time = micros();
  Serial.println(time); //mencetak waktu sejak program mulai
  delay(1000);      // menunggu satu detik agar tidak mengirimkan data dalam jumlah yang besar
}

 

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top
× How can I help you?