Potensiometer: Mengatur Frekuensi Kedipan LED
Praktik Arduino untuk membaca sinyal analog dan menggunakannya untuk mengatur kecepatan kedipan LED secara dinamis.
🎯 Tujuan Praktik
Pada praktik ini kita akan menggunakan potensiometer sebagai sumber input analog.
Posisi potensiometer dibaca oleh Arduino melalui pin analog A0. Nilai tersebut kemudian dikonversi menjadi waktu tunda (delay) untuk mengatur frekuensi kedipan LED.
Potensiometer
│
▼
A0
│
▼
Arduino
│
│ nilai 0 - 1023
▼
map()
│
│ delay 50 - 1000 ms
▼
LED
🧰 Komponen
| Komponen | Jumlah | Fungsi |
|---|---|---|
| Arduino UNO | 1 | Mikrokontroler |
| Potensiometer | 1 | Input analog |
| LED | 1 | Output |
| Resistor 220 Ω | 1 | Pembatas arus LED |
| Breadboard | 1 | Media rangkaian |
| Kabel jumper | Secukupnya | Penghubung rangkaian |
🔌 Rangkaian
Potensiometer mempunyai tiga kaki. Dua kaki luar dihubungkan ke 5V dan GND, sedangkan kaki tengah atau slider dihubungkan ke A0.
+5V
│
┌────┴────┐
│ POTENSIO│
│ METER │
└────┬────┘
│
├──────────── A0
│
GND
D9 ─────────[ 220 Ω ]────────►|──────── GND
LED
Hubungan Pin
| Komponen | Koneksi |
|---|---|
| Potensiometer kaki kiri | 5V |
| Potensiometer kaki tengah | A0 |
| Potensiometer kaki kanan | GND |
| Anoda LED | D9 melalui resistor 220 Ω |
| Katoda LED | GND |
🧠 Memahami Potensiometer
Potensiometer dapat dipahami sebagai pembagi tegangan yang dapat diatur.
Ketika knop diputar, tegangan pada kaki tengah berubah. Arduino membaca tegangan tersebut melalui pin analog A0.
Potensiometer diputar
5V
│
│
[ POT ]
│
├──────► A0
│
│
GND
Tegangan A0 berubah
↓
analogRead()
↓
Nilai 0 - 1023
Pada Arduino Uno, pembacaan analog menghasilkan nilai dari 0 sampai 1023.
Tegangan A0 mendekati 0V.
Nilai pembacaan mendekati 0.
Tegangan A0 mendekati 5V.
Nilai pembacaan mendekati 1023.
💻 Program Arduino
const int sensorPin = A0; // Pin potensiometer
const int ledPin = 9; // Pin LED
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
int sensorValue = analogRead(sensorPin); // Baca nilai analog (0 - 1023)
int delayTime = map(sensorValue, 0, 1023, 50, 1000); // Konversi ke waktu tunda
digitalWrite(ledPin, HIGH);
delay(delayTime);
digitalWrite(ledPin, LOW);
delay(delayTime);
}
🔍 Memahami Program
1. Menentukan Pin
const int sensorPin = A0;
const int ledPin = 9;
Potensiometer dibaca melalui A0, sedangkan LED dikendalikan melalui pin digital 9.
2. Membaca Nilai Analog
int sensorValue = analogRead(sensorPin);
Fungsi analogRead() membaca tegangan pada A0 dan
menghasilkan nilai antara 0 sampai 1023.
Tegangan A0
│
▼
analogRead()
│
▼
0 ─────────────── 1023
minimum maksimum
3. Mengubah Nilai dengan map()
int delayTime = map(sensorValue, 0, 1023, 50, 1000);
Fungsi map() mengubah rentang nilai dari satu rentang
menjadi rentang lainnya.
| Nilai Potensiometer | Delay |
|---|---|
| 0 | 50 ms |
| Nilai tengah | Sekitar 525 ms |
| 1023 | 1000 ms |
Artinya, semakin besar nilai potensiometer, semakin besar nilai
delayTime.
4. Mengatur Kedipan LED
digitalWrite(ledPin, HIGH);
delay(delayTime);
digitalWrite(ledPin, LOW);
delay(delayTime);
LED menyala selama delayTime, kemudian mati selama
delayTime.
Karena nilai delayTime berasal dari potensiometer,
kecepatan kedipan LED dapat berubah ketika knop diputar.
🧪 Langkah Hands-on
- Pasang potensiometer pada breadboard.
- Hubungkan salah satu kaki luar potensiometer ke 5V.
- Hubungkan kaki luar lainnya ke GND.
- Hubungkan kaki tengah potensiometer ke A0.
- Hubungkan D9 ke resistor 220 Ω.
- Hubungkan resistor ke anoda LED.
- Hubungkan katoda LED ke GND.
- Upload program ke Arduino UNO.
- Putar knop potensiometer secara perlahan.
- Amati perubahan kecepatan kedipan LED.
Ketika posisi potensiometer berubah, kecepatan kedipan LED juga berubah secara dinamis.
💡 Challenge: Mengatur Kecerahan LED
Pada program sebelumnya, potensiometer digunakan untuk mengatur kecepatan kedipan.
Sekarang ubah program sehingga potensiometer digunakan untuk mengatur kecerahan LED secara langsung.
Gunakan fungsi analogWrite() dan
map().
Nilai dari
analogRead() berada pada rentang
0–1023, sedangkan nilai PWM untuk
analogWrite() berada pada rentang 0–255.
int brightness = map(sensorValue, 0, 1023, 0, 255);
Kemudian gunakan nilai tersebut untuk mengatur PWM LED:
analogWrite(ledPin, brightness);
Potensiometer
│
▼
analogRead()
│
▼
0 - 1023
│
▼
map()
│
▼
0 - 255
│
▼
analogWrite()
│
▼
Kecerahan LED
🎓 Inti Pembelajaran
Pada praktik ini kita mulai berpindah dari dunia digital ke analog.
| Konsep | Fungsi |
|---|---|
analogRead() |
Membaca nilai analog dari A0 |
0–1023 |
Rentang hasil pembacaan analog Arduino Uno |
map() |
Mengubah satu rentang nilai menjadi rentang lainnya |
delay() |
Mengatur waktu tunggu kedipan LED |
analogWrite() |
Menghasilkan PWM untuk mengatur output |
Potensiometer menghasilkan tegangan analog yang dibaca Arduino melalui A0. Nilai tersebut dapat diproses menggunakan
map() untuk
mengendalikan parameter lain, seperti kecepatan kedipan atau tingkat
kecerahan LED.
0 Comments