Malzemeler
1 adet Arduino (örnekte uno kullandım)
1 adet RGB led (örnekte katot kullandım, anot kullanırken GND yerine 5v yada 3V3 e bağlayın)
3 adet direnç(Ben 270 ohm kullandım, 1k ya kadar yolu var, eğer direnç değeri az olursa RGB Led bozulabilir)(eğer 5V yerine 3V3 e bağlıyacaksanız gerek yok)
1 adet Breadboard (kullanmadan da yapabilirsiniz ama zor olur )
Jumper yada kablo
Devre Şeması
Ortak anot RGB de uzun bacak güç girişi olacak ve direnç sadece burada kullanılacak(şemada 1K), ortak katot için ise uzun bacak GND ye gidecek ve 3 adet direnç (270 lik kullandım) renk bacaklaına bağlanacak.
Ortak Katot Arduino Devresi
Ortak Anot RGB Arduino devresi
Programlama
Devremizi kurduk sıra geldi kodlamaya. Kod yazmaya başlamadan önce RGB ledimizin Anot veya Katot olmasının burada da fark yaratacığını belirtmek isterim. Aşağıda ki kod Anot için olacak ancak siz katot kullanacaksanız ters düşünmeniz gerekecek yani Anot ta HIGH kapatmak için, LOW açmak için kullanılacak, tabi PWM ile işlem yaparken 0 en yüksek değer 255 ise en düşük değer olacak. Aşağıdaki örnek için katot kullanıcıları PWM değeri X(mesela 100) iken 255-X(255-100) yazarsanız da aynı sonucu alırsınız. Anot ile katot ayırt etme işini ürün alırken öğrenmeniz iyi olacak.
int yesil = 9; //yesil bacağın 9. pinde olacağını belirtiyoruz int mavi = 10; //mavi 10 da int kirmizi = 11; // kırmızı 11 de int bekleme = 5; //renk geçişleri arası beklenecek süreyi yazıyoruz void setup() { //pinleri çıkış olarak ayarlıyoruz pinMode(yesil, OUTPUT); pinMode(mavi, OUTPUT); pinMode(kirmizi, OUTPUT); } void loop() { // her bir bacak için ilk değer oluşturuyoruz int kirmizi_degeri = 255; int mavi_degeri = 0; int yesil_degeri = 0; //bir for göngüsü oluşturuyoruz ve i değerini 255 e kadar birer birer artmasında for içindeki görevler yapılacak for( int i = 0 ; i < 255 ; i += 1 ){ yesil_degeri += 2; // yeşil değeri iki iki artacak mavi_degeri += 1; //mavi bir bir azalacak kirmizi_degeri -= 1; // kırmızı bir bir azalacak //daha sonra değerler bacaklara yazılıyor analogWrite( yesil, yesil_degeri ); analogWrite( kirmizi, kirmizi_degeri ); analogWrite( mavi, mavi_degeri); // eğer ortak katot ise //analogWrite( yesil, 255 - yesil_degeri); gibi yazılacak //bekleme süresi kadar bekleniyor delay( bekleme ); } }int redPin = 11;
int greenPin = 10;
int bluePin = 9;
int brightness = 0; // ilk parlaklık değeri sıfır yaptık
int fadeAmount = 5; // parlaklık adımları değeri. her seferinde 5 birim artar azalır demek.
//ilk kurulum değerleri. Resetten sonra bir kez yapılır.//Ortak anot led kullanıyorsanız alttaki satırı yorum satırından çıkartın
//#define COMMON_ANODEvoid setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}void loop()
{
setColor(255, 0, 0); // red
delay(1000);
setColor(0, 255, 0); // green
delay(1000);
setColor(0, 0, 255); // blue
delay(1000);
setColor(255, 255, 0); // yellow
delay(1000);
setColor(80, 0, 80); // purple
delay(1000);
setColor(0, 255, 255); // aqua
delay(1000);
setColor(80, 80, 80); // farklı renkler
delay(1000);
setColor(255, 255, 255); // beyaz
delay(1000);
setColor(255, 0, 255); // güçlü mor
delay(1000);}
void setColor(int red, int green, int blue)
{
#ifdef COMMON_ANODE
red = 255 – red;
green = 255 – green;
blue = 255 – blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}