1000 Proyek Arduino : Proyek 7 — Mengubah Kecepatan Kedip LED

Pada Proyek 7 dari seri 1000 Proyek Arduino, kita mengubah kecepatan kedip LED dengan beberapa nilai delay. Percobaan ini memperkenalkan hubungan antara waktu ON-OFF, periode, frekuensi, dan duty cycle sebagai dasar untuk memahami PWM dan sistem kendali berikutnya.

Pada Proyek 6 kita telah membuat LED menyala dan mati secara berulang menggunakan digitalWrite() dan delay().

Sekarang kita akan melakukan eksperimen lebih lanjut dengan mengubah kecepatan kedip LED. Dari percobaan ini kita akan melihat hubungan antara nilai delay(), periode, dan frekuensi kedipan.

Tujuan Percobaan

  • Mengubah kecepatan kedip LED melalui program.
  • Memahami pengaruh nilai delay().
  • Mengenal konsep periode.
  • Mengenal konsep frekuensi.
  • Membandingkan hasil perhitungan dengan pengamatan langsung.

Alat dan Bahan

  • 1 Arduino Uno atau board yang kompatibel.
  • 1 breadboard.
  • 1 LED.
  • 1 resistor 220 Ω atau 330 Ω.
  • Kabel jumper.
  • Kabel USB.

Rangkaian

Gunakan rangkaian LED yang sama seperti pada proyek sebelumnya.

Arduino D9
    |
  330 Ω
    |
LED anoda (+)
    |
LED katoda (-)
    |
Arduino GND

Program Dasar

const int led = 9;

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  digitalWrite(led, HIGH);
  delay(1000);

  digitalWrite(led, LOW);
  delay(1000);
}

Dengan program tersebut, LED menyala selama 1 detik dan mati selama 1 detik.

Percobaan 1 — Kedip 1 Detik

Gunakan:

delay(1000);

LED akan:

  • ON selama 1 detik,
  • OFF selama 1 detik.

Satu siklus lengkap membutuhkan:

1 detik + 1 detik = 2 detik

Percobaan 2 — Kedip 0,5 Detik

Ubah kedua nilai delay menjadi:

delay(500);

Program menjadi:

void loop() {
  digitalWrite(led, HIGH);
  delay(500);

  digitalWrite(led, LOW);
  delay(500);
}

Sekarang satu siklus memerlukan:

0,5 detik + 0,5 detik = 1 detik

LED terlihat berkedip lebih cepat.

Percobaan 3 — Kedip 0,25 Detik

Ubah nilai menjadi:

delay(250);

Maka:

Waktu ON  = 0,25 detik
Waktu OFF = 0,25 detik

Satu siklus:

0,25 + 0,25 = 0,5 detik

Percobaan 4 — Kedip 0,1 Detik

Gunakan:

delay(100);

LED akan menyala dan mati sangat cepat.

Satu siklus:

0,1 detik + 0,1 detik = 0,2 detik

Catat Hasil Pengamatan

delay() Waktu ON Waktu OFF Periode
1000 ms 1 detik 1 detik 2 detik
500 ms 0,5 detik 0,5 detik 1 detik
250 ms 0,25 detik 0,25 detik 0,5 detik
100 ms 0,1 detik 0,1 detik 0,2 detik

Mengenal Periode

Periode adalah waktu yang dibutuhkan untuk menyelesaikan satu siklus penuh.

Dalam percobaan LED kita:

Periode = waktu ON + waktu OFF

Jika LED menyala selama 500 ms dan mati selama 500 ms:

T = 500 ms + 500 ms
T = 1000 ms
T = 1 detik

Mengenal Frekuensi

Frekuensi menunjukkan berapa banyak siklus yang terjadi setiap detik.

Hubungan antara frekuensi dan periode adalah:

f = 1 / T

dengan:

  • f = frekuensi dalam Hertz (Hz),
  • T = periode dalam detik.

Contoh Perhitungan

Jika periode LED adalah 2 detik:

f = 1 / 2

f = 0,5 Hz

Artinya terdapat setengah siklus setiap detik, atau satu siklus lengkap setiap dua detik.

Jika periode adalah 1 detik:

f = 1 / 1

f = 1 Hz

Jika periode adalah 0,5 detik:

f = 1 / 0,5

f = 2 Hz

Perbandingan Kecepatan Kedip

delay() Periode Frekuensi
1000 ms 2 detik 0,5 Hz
500 ms 1 detik 1 Hz
250 ms 0,5 detik 2 Hz
100 ms 0,2 detik 5 Hz

Apa yang Terjadi Jika delay() Semakin Kecil?

Semakin kecil nilai delay(), semakin cepat Arduino mengubah kondisi LED dari HIGH menjadi LOW dan kembali lagi.

delay semakin kecil
        ↓
periode semakin pendek
        ↓
frekuensi semakin tinggi
        ↓
LED berkedip semakin cepat

Percobaan 5 — Kedipan Tidak Simetris

Sampai sekarang waktu ON dan OFF selalu sama.

Coba gunakan:

void loop() {
  digitalWrite(led, HIGH);
  delay(100);

  digitalWrite(led, LOW);
  delay(900);
}

LED hanya menyala selama 0,1 detik tetapi mati selama 0,9 detik.

Walaupun satu siklus tetap berlangsung:

0,1 + 0,9 = 1 detik

pola kedipnya terlihat sangat berbeda dibandingkan LED yang ON 500 ms dan OFF 500 ms.

Mengenal Duty Cycle secara Sederhana

Perbandingan antara waktu LED ON terhadap satu periode disebut duty cycle.

Jika:

ON  = 500 ms
OFF = 500 ms

maka LED menyala selama setengah dari keseluruhan periode.

Duty Cycle = 50%

Jika:

ON  = 100 ms
OFF = 900 ms

maka LED hanya menyala selama 10% dari satu siklus.

Konsep ini nantinya akan sangat penting ketika kita mempelajari PWM atau Pulse Width Modulation.

Percobaan 6 — Cari Batas Mata Kita

Cobalah memperkecil nilai delay secara bertahap:

100 ms
50 ms
20 ms
10 ms
5 ms

Amati pada nilai berapa kedipan LED mulai sulit dilihat sebagai kondisi menyala dan mati yang terpisah.

Pada frekuensi yang cukup tinggi, mata manusia dapat mulai melihat LED seperti menyala terus-menerus.

Fenomena ini nantinya membantu kita memahami mengapa PWM dapat digunakan untuk mengatur terang LED.

Pertanyaan Pengamatan

  1. Apa yang terjadi ketika nilai delay() diperkecil?
  2. Apa hubungan antara nilai delay dan periode?
  3. Apa hubungan antara periode dan frekuensi?
  4. Berapa frekuensi jika satu periode berlangsung 0,5 detik?
  5. Apakah LED dengan periode sama selalu mempunyai pola kedip yang sama?
  6. Apa perbedaan pola 500 ms ON + 500 ms OFF dengan 100 ms ON + 900 ms OFF?
  7. Mengapa LED terlihat seperti terus menyala ketika kedipannya sangat cepat?

Kesimpulan

Pada Proyek 7 kita tidak hanya mengubah kecepatan kedip LED, tetapi mulai menghubungkan program Arduino dengan konsep waktu dalam elektronika.

Nilai delay() menentukan lamanya kondisi HIGH dan LOW. Dari waktu tersebut kita dapat menentukan periode dan frekuensi sebuah pola kedipan.

Kita juga mulai mengenal duty cycle, yaitu perbandingan antara waktu ON dengan keseluruhan periode.

Konsep periode, frekuensi, dan duty cycle akan terus digunakan pada berbagai pembahasan selanjutnya, termasuk buzzer, PWM, motor, komunikasi digital, sensor, dan sistem kendali.

Proyek berikutnya: 1000 Proyek Arduino : Proyek 8 — Menyalakan Dua LED Secara Bergantian.