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.
- Diskusi umum dan tanya jawab praktik: https://t.me/edukasielektronika
- Kendala spesifik dan kasus tertentu: http://bit.ly/Chatarduino



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