Arduino RGB LED Kullanımı | Kod ve Devre
Evet arkadaşlar Arduino ile tasarlayacağınız bu devre ile RGB LED’ inizi hem dijital hemde analog şekilde çalıştırabileceksiniz.
Devre:
Kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
//pin tanımı const int KIRMIZI = 11; const int YESIL = 10; const int MAVI = 9; int ZAMAN = 10;//gecisli kullanım için süre void setup() { pinMode(KIRMIZI, OUTPUT); pinMode(YESIL, OUTPUT); pinMode(MAVI, OUTPUT); } void loop() { anaRenkler();//dijital şekilde çalıştıran fonksiyon gecisliRenkler();//analog şekilde çalıştıran fonksiyon } void anaRenkler() { //kapali digitalWrite(KIRMIZI, LOW); digitalWrite(YESIL, LOW); digitalWrite(MAVI, LOW); delay(1000); //kirmizi digitalWrite(KIRMIZI, HIGH); digitalWrite(YESIL, LOW); digitalWrite(MAVI, LOW); delay(1000); //yesil digitalWrite(KIRMIZI, LOW); digitalWrite(YESIL, HIGH); digitalWrite(MAVI, LOW); delay(1000); //mavi digitalWrite(KIRMIZI, LOW); digitalWrite(YESIL, LOW); digitalWrite(MAVI, HIGH); delay(1000); //sari digitalWrite(KIRMIZI, HIGH); digitalWrite(YESIL, HIGH); digitalWrite(MAVI, LOW); delay(1000); //siyan digitalWrite(KIRMIZI, LOW); digitalWrite(YESIL, HIGH); digitalWrite(MAVI, HIGH); delay(1000); //magenta digitalWrite(KIRMIZI, HIGH); digitalWrite(YESIL, LOW); digitalWrite(MAVI, HIGH); delay(1000); //beyaz digitalWrite(KIRMIZI, HIGH); digitalWrite(YESIL, HIGH); digitalWrite(MAVI, HIGH); delay(1000); } void gecisliRenkler() { for (int x = 0; x < 768; x++) {// fonksiyona artarda değer yollamak için kullanılır goster(x);//renk ayarlar delay(ZAMAN); } } void goster(int renk) { //alınan parametre ile oluşacak rengin miktarları (yoğunlukları) int kirmiziMiktar; int yesilMiktar; int maviMiktar; /*aşağıda var olan koşullar matematiksel birer algoritma kullanırlar ve döngü ile gönderilen parametreye karşılık rengi oluşturacak yoğunlukları belirlerler*/ if (renk <= 255) { kirmiziMiktar = 255 - renk; yesilMiktar = renk; maviMiktar = 0; } else if (renk <= 511) { kirmiziMiktar = 0; yesilMiktar = 255 - (renk - 256); maviMiktar = (renk - 256); } else { kirmiziMiktar = (renk - 512); yesilMiktar = 0; maviMiktar = 255 - (renk - 512); } analogWrite(KIRMIZI, kirmiziMiktar);//analog çıkış analogWrite(MAVI, maviMiktar);//analog çıkış analogWrite(YESIL, yesilMiktar);//analog çıkış } |