Pencampur Warna LED RGB Arduino – Proyek DIY Untuk Pemula
Komponen dan Perlengkapan
| Nama Bagian | Jumlah |
| Arduino UNO | 1 |
| LED RGB (4 pin common ground) | 1 |
| Potensiometer rotary (generik) | 3 |
| Saklar Pushbutton SparkFun 12mm | 1 |
| Resistor 10k ohm | 1 |
| Resistor 221 ohm | 3 |
| Breadboard (generik) | 1 |
| Kabel jumper (generik) | 1 |
Aplikasi dan Layanan Online
Tentang Proyek
Untuk siapa ini?: Proyek pencampur warna LED RGB ini sempurna untuk pengguna Arduino pemula yang ingin mencoba membuat gawai interaktif ini tidak hanya menyenangkan dan mudah dibuat, tetapi juga berguna untuk siapa pun yang menggunakan warna RGB, seperti seniman, pengembang web dan pengontrol penerangan interaktif.
Apa yang dilakukan: Rangkaian sederhana ini menggabungkan tiga potensiometer untuk menetapkan kecerahan untuk masing-masing LED merah, hijau dan biru di dalam LED RGB.
Saklar pushbutton ditambahkan sebagai fitur tambah untuk menyalakan dan mematikan rangkaian.
Bagaimana saya membangunnya? Pasang diagram seperti yang ditunjukkan dalam skematik. LED RGB dihubungkan ke pin PMW 9, 10 dan 11 pada Arduino. Saklar push dihubungkan ke pin 7 dan 3 potensiometer ke A0, A1 dan A2. Ingat untuk menambahkan resistor pull up 10K ohm ke koneksi ground pada saklar push. Untuk penjelasan tentang cara kerjanya, lihat di sini https://playground.arduino.cc/CommonTopics/PullUpDownResistor
Pastikan juga untuk menghubungkan 3 resistor 220 ohm antara LED dan pin output, ini akan memastikan LED Anda tidak terbakar.
Nilai setiap Potensiometer dicetak ke serial monitor, jadi jika Anda memutar LED dan menemukan warna yang Anda sukai, Anda dapat mencatat nilai RGB untuk digunakan nanti.
Setelah Anda merakit rangkaian dan mengunggah sketsa, coba putar knob pada potensiometer. Tidak akan terjadi apa-apa pada awalnya hingga Anda menekan tombol. Sekarang coba putar knob lagi. LED sekarang akan menyala. Saatnya bermain dengan cahaya! Ingat cahaya RGB bukan seperti mencampur cat. saat semua potensiometer diatur penuh, cahaya harus putih. Coba biarkan salah satu potensiometer mati atau sangat rendah, dan variasi dua lainnya.
Ekstensi untuk proyek ini adalah untuk hard code beberapa nilai RGB untuk warna tertentu yang Anda sukai, dan tambahkan beberapa tombol push tambahan yang, saat ditekan, akan mengatur LED RGB ke warna-warna tersebut. Jangan ragu untuk berbagi kode jika Anda mencoba ekstensi seperti ini!
Nikmati!
Kode
Pencampur Warna RGBC/C++
int blue = 9; // Define Digital Pins for each colour of the LED
int green = 10;
int red = 11;
int redPot = A0;
int greenPot = A1; //Define Analog Pins for the 3 potentiometers
int bluePot = A2;
int greenVal = 0; //Create a variable to store the state of each Potentiometer
int blueVal = 0;
int redVal = 0;
const int BUTTON = 7; //Define the button Pin
int state = 0; //Create a variable to store wether button is on or off
int val = 0; //Create a variable to store the momentary state of the button
int old_val = 0; //create a variable to store the previous state of the button
void setup() {
// put your setup code here, to run once:
pinMode(green, OUTPUT); //Set LED's as output's, button as input
pinMode(blue, OUTPUT);
pinMode(red, OUTPUT);
pinMode(BUTTON, INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.begin(9600); //Open the serial monitor at 9600 baud
val = digitalRead(BUTTON); // Check state of button
if ((val == HIGH) && (old_val == LOW)) {
//Check to see if state of button has changed
state = 1 - state; //Set the button as either on (1) or off (0)
delay(10);
}
old_val = val; // Save the previous button reading to compare next time through loop
greenVal = analogRead(greenPot); //Read the position of the potentiometers
blueVal = analogRead(bluePot);
redVal = analogRead(redPot);
if (state == 1) {
//If button is on, set the state of each LED according to position
analogWrite(green, greenVal / 4); //of its correspoding potentiometer. Anolog inputs range from 0-1023, analogWrite(blue, blueVal / 4);
// while anolog outputs as PMW can be from 0-255. Therefore we must analogWrite(red, redVal / 4);
// divide the potentiometer readings by 4 to set the state correctly
Serial.print("RGB(");
Serial.print(redVal/4);
Serial.print(",");
Serial.print(greenVal/4);
Serial.print(",");
Serial.print(blueVal/4);
//Print the RGB Code, resuable in any RGB application
Serial.println(")");
delay(50);
} else {
// If button is off, set all LED's to LOW/off
analogWrite(green, 0);
analogWrite(blue, 0);
analogWrite(red, 0);
delay(50);
}
}
Skematik