Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Selasa, 02 Juni 2026

Mengatur Kecerahan LED Menggunakan Rotary Encoder dan Arduino

Rotary encoder merupakan komponen input yang sering digunakan untuk mengatur nilai secara bertahap, seperti volume audio, pengaturan menu, kecepatan motor, hingga tingkat kecerahan lampu. Berbeda dengan potensiometer yang menghasilkan tegangan analog, rotary encoder menghasilkan pulsa digital yang dapat dihitung oleh Arduino untuk mengetahui arah dan jumlah putaran.

 

Pada tutorial ini, Anda akan mempelajari cara menggunakan rotary encoder untuk mengontrol tingkat kecerahan LED. Setiap kali encoder diputar searah jarum jam, kecerahan LED akan meningkat. Sebaliknya, ketika encoder diputar berlawanan arah jarum jam, kecerahan LED akan berkurang. Metode ini banyak digunakan pada panel kontrol elektronik, perangkat audio, serta antarmuka pengguna berbasis mikrokontroler.

Perangkat Keras yang Dibutuhkan

Arduino Uno R3

- Kabel USB 

Rotary Encoder Module

LED 5 mm (merah atau warna lainnya)

Resistor 220 Ohm

Breadboard

Kabel jumper

Cara Kerja Sistem

Pada proyek ini, Arduino membaca sinyal pulsa yang dihasilkan oleh pin CLK dan DT pada rotary encoder. Dari urutan perubahan sinyal yang terjadi pada kedua pin tersebut, Arduino dapat menentukan apakah encoder diputar searah atau berlawanan arah jarum jam. Setiap putaran encoder akan mengubah nilai variabel brightness, yang digunakan untuk mengatur tingkat kecerahan LED.

 

Nilai brightness tersebut kemudian dikirim ke pin LED dalam bentuk sinyal PWM (Pulse Width Modulation). Pada Arduino, nilai PWM memiliki rentang dari 0 hingga 255, di mana nilai 0 membuat LED mati, nilai 255 membuat LED menyala dengan kecerahan maksimum, sedangkan nilai di antara keduanya menghasilkan tingkat kecerahan yang bervariasi. Dengan cara ini, pengguna dapat mengatur intensitas cahaya LED secara bertahap hanya dengan memutar rotary encoder. Semakin besar nilai PWM yang diberikan, semakin terang cahaya LED yang dihasilkan.

 

Baca juga: Arduino Potensiometer Trigger Motor Servo - Mengontrol Posisi Servo Berdasarkan Nilai Potensiometer 

Wiring Diagram Rotary Endocder LED

Kode Program Arduino

Kode berikut digunakan untuk membaca putaran rotary encoder dan mengubah kecerahan LED secara bertahap.

 

#define CLK_PIN 2

#define DT_PIN 3

#define LED_PIN 9


#define DIRECTION_CW 0

#define DIRECTION_CCW 1


int counter = 0;

int direction = DIRECTION_CW;

int CLK_state;

int prev_CLK_state;

int brightness = 125;   // nilai awal kecerahan


void setup() {

  Serial.begin(9600);


  pinMode(CLK_PIN, INPUT);

  pinMode(DT_PIN, INPUT);


  pinMode(LED_PIN, OUTPUT);


  prev_CLK_state = digitalRead(CLK_PIN);


  analogWrite(LED_PIN, brightness);

}


void loop() {


  CLK_state = digitalRead(CLK_PIN);


  if (CLK_state != prev_CLK_state && CLK_state == HIGH) {


    if (digitalRead(DT_PIN) == HIGH) {

      direction = DIRECTION_CCW;

      counter--;

      brightness -= 10;

    }

    else {

      direction = DIRECTION_CW;

      counter++;

      brightness += 10;

    }


    if (brightness < 0)

      brightness = 0;

    else if (brightness > 255)

      brightness = 255;


    analogWrite(LED_PIN, brightness);


    Serial.print("Counter: ");

    Serial.print(counter);

    Serial.print(" | Brightness: ");

    Serial.println(brightness);

  }


  prev_CLK_state = CLK_state;

}


Penjelasan Program

Program diawali dengan mendefinisikan pin CLK dan DT yang terhubung ke rotary encoder, serta pin PWM yang digunakan untuk mengendalikan LED.

 

#define CLK_PIN 2

#define DT_PIN 3

#define LED_PIN 9


Variabel brightness digunakan untuk menyimpan tingkat kecerahan LED saat ini.

 

int brightness = 125;


Nilai awal 125 dipilih agar LED langsung menyala dengan tingkat terang sedang ketika Arduino dinyalakan. Saat encoder diputar, program akan memeriksa perubahan sinyal pada pin CLK. Jika terjadi perubahan, Arduino akan membaca kondisi pin DT untuk menentukan arah putaran. Jika encoder diputar berlawanan arah jarum jam, nilai kecerahan akan dikurangi:

 

brightness -= 10;


Jika encoder diputar searah jarum jam, nilai kecerahan akan ditambah:

 

brightness += 10;


Agar nilai PWM tetap valid, program membatasi nilai kecerahan antara 0 hingga 255.

 

if (brightness < 0)

  brightness = 0;

else if (brightness > 255)

  brightness = 255;


Nilai tersebut kemudian dikirim ke LED menggunakan fungsi PWM:

 

analogWrite(LED_PIN, brightness);


Hasil Pengujian

1. Hubungkan Arduino ke komputer menggunakan kabel USB.

2. Buka Arduino IDE dan pilih board serta port yang sesuai.

3. Upload program ke Arduino.

4. Buka Serial Monitor dengan baud rate 9600.

5. Putar rotary encoder searah jarum jam.

6. Perhatikan bahwa LED akan semakin terang.

7. Putar rotary encoder berlawanan arah jarum jam.

8. LED akan semakin redup hingga akhirnya mati.

9. Nilai penghitung dan tingkat kecerahan dapat dilihat pada Serial Monitor.        

Contoh tampilan Serial Monitor:

Counter: 1 | Brightness: 135

Counter: 2 | Brightness: 145

Counter: 3 | Brightness: 155

Counter: 2 | Brightness: 145

Counter: 1 | Brightness: 135

Pengembangan Proyek

Setelah memahami dasar penggunaan rotary encoder untuk mengontrol LED, Anda dapat mengembangkan proyek ini menjadi lebih menarik, misalnya:

Mengatur volume speaker menggunakan rotary encoder.

Membuat dimmer lampu LED berbasis Arduino.

- Membuat menu navigasi pada LCD atau OLED. 

Mengontrol kecepatan motor DC.

Mengatur posisi motor servo melalui encoder.

- Membuat panel kontrol elektronik seperti pada perangkat audio profesional.

 

Baca juga: Arduino Rotary Encoder - Cara Menggunakan Rotary Encoder untuk Membaca Arah dan Posisi Putaran

 

 

 

Dalam praktik, hasil dan kendala yang ditemui bisa berbeda tergantung perangkat, konfigurasi, versi library, dan sistem yang digunakan.  

0 on: "Mengatur Kecerahan LED Menggunakan Rotary Encoder dan Arduino"