RGB red (kırmızı), green (yeşil), blue (mavi)
renklerin baş harfleri birleştirilerek oluşturulmuştur. RGB
LED‘ler, bir kontrol devresi yardımıyla 16 farklı renk verebilmektedirler.
RGB şerit LED‘lerde her renk için bir kanal
vardır. Bu kanallar sayesinde birçok renk elde etmek mümkündür. Bir
kontrol devresi yardımıyla, ilgili renk kanalının voltajı düzenlenerek,
tamamen yanması, tamamen sönmesi ya da kısmen yanması sağlanır. Aynı anda
ihtiyaç duyulan diğer kanallarda da bu işlem sürdürülerek, istenen rengin
oluşması sağlanır.
RGB şerit LED‘ler 3 renkli olması
dolayısıyla 3 çiplidir. Tek SMD pakete paketlenerek oluşturulmuştur.
3 çipli şerit LED‘lerden tek farkı aynı SMD içinde tek renk değil, 3 ayrı
renkte çip olmasıdır. Farklı renk kombinasyonları söz konusu olduğundan, anlık
ihtiyaç duyulan güç miktarı değişiklik gösterir. Tabi ki kullanılan metraj
burada oldukça önemlidir. İstenilen renge ve kullanılan metraja göre akım gücü değişmektedir.
RGB Led Simülasyonu |
Processing özellikle programlamaya yeni başlamış
insanların kullanabileceği bir tümleşik geliştirme ortamıdır. Bu IDE kolay
bir şekilde programlamayı öğretirken aynı kolaylıkla zengin görsellikler
oluşturmaya yardımcı oluyor. Processing Java tabanlı, 2001 yılında başlatılan
bir projedir.
Processing open-source(açık kaynaklı) bir yazılımdır. Processing'in Arduino IDE arayüzleri arası
benzerlikler vardır. Bunun sebebi Arduino'nun Processing temel alarak
oluşturulmasıdır.
Processing ile Oluşturulmuş Color Range |
Processing Sketch:
import processing.serial.*; Serial port; void setup() { size(400, 500); //ekran boyutu noStroke(); // arkaplan colorMode(HSB, 400); for (int i = 0; i < 400; i++) { for (int j = 0; j < 400; j++) { stroke(i, j, 400); point(i, j); } } port = new Serial(this, Serial.list()[0], 115200); //seri port ayarlanır } void draw() { // Mouse ile çizimlerde kullanılır } void mouseClicked() { processColor(); } void mouseDragged() { processColor(); } void processColor() { color c = get(mouseX, mouseY); noStroke(); fill(c); rect(0, 400, 400, 100); sendColorToSerial(c); } void sendColorToSerial(color colour) { // HEX çevir String hexColor = hex(colour, 6); // HEX'i sayıya çevir long numColor = unhex(hexColor); // seri port üzerinden rengi gönder port.write("(" + numColor + ")"); }
Arduino Sketch:
char mesaj[8]; unsigned int okunanKarakter, sayac, r, g, b; unsigned long color; boolean serialOkunan; void setup() { Serial.begin(115200); //baud rate serialOkunan = false; } void loop() { if (Serial.available() > 0 && !serialOkunan) { /*başlangıçta okunan false ise ve başlangıç karakterine eşitse*/ if (Serial.read() == '(') { renkOku(); } } } void renkOku() { serialOkunan = true; sayac = 0; oku: if (Serial.available() > 0) { okunanKarakter = Serial.read(); if (okunanKarakter == ')' || sayac == 8) { goto bitir; } else { mesaj[sayac++] = okunanKarakter; goto oku; } } goto oku; bitir: serialOkunan = false; mesaj[sayac] = '\0'; setColor(mesaj); } void setColor(char* _income) { // Long'a çevir color = atol(_income); //değerleri aktar r = color >> 16 & 0xFF; g = color >> 8 & 0xFF; b = color >> 0 & 0xFF; //pinlere gönder analogWrite(9, r); analogWrite(11, g); analogWrite(10, b); }
RGB LED Fritzing Şeması |
Bir sonraki yazımda görüşmek üzere…