PDA

Orijinalini görmek için tıklayınız : 10. Arduino ile RGB Led Kontrolü



bolubeyi
11.Haziran.2015, 17:40
Processing arayüzünü kullanarak tüm renkleri tek led ile elde edebiliyoruz.
https://temrinlerim.org/images/arduino-duemilanove-triled-small.jpg

Devre Şeması:
https://temrinlerim.org/images/arduino7.PNG

Processing kodu:

/**
* Processing Örneği - 4
* Processing ver ControlP5 Kütüphanesi ile
* RGB LED Kontrolü
*/

import controlP5.*;
import processing.serial.*;

ControlP5 controlP5;
Serial seriPort;
ColorPicker cp; // Renj seçim nesnesi

int kirmiziDeger;
int yesilDeger;
int maviDeger;

void setup() {
size(400, 100);
controlP5 = new ControlP5(this);
cp = controlP5.addColorPicker("renkSecici", 0, 0, 255, 20);
seriPort = new Serial(this, "COM7", 9600);
}

void draw() {
background(cp.getColorValue()); // Arka plan rengini değiştir
/*
Renk seçici nesnesindek rengin kırmızı,yeşil ve
mavi bileşenlerini ayırıp ilgili değişkenlere atıyoruz
*/
kirmiziDeger = int(red(cp.getColorValue()));
yesilDeger = int(green(cp.getColorValue()));
maviDeger = int(blue(cp.getColorValue()));
delay(50);
}

/* Renk seçideki değerler değiştiğinde
otomatik olarak çağırılan fonksiyon ile
renk değerlerini konsola yazdırıyoruz
*/
void renkSecici(int renk) {
println("KIRMIZI "+kirmiziDeger + " YESIL "+yesilDeger + " MAVI "+maviDeger);
RenkGonder();
}

/* Renk değerleri,
önce R karakter sonrasında kırmızı,yeşil,mavi
sırasıyla gönderiliyor
*/
void RenkGonder()
{
seriPort.write('R');
seriPort.write(kirmiziDeger);
seriPort.write(yesilDeger);
seriPort.write(maviDeger);
}


Arduino kodu:

/*
* Processing Örneği - 4
* Processing ver ControlP5 Kütüphanesi ile
* RGB LED Kontrolü
*/

// LED bağlantı pinleri
const int kirmiziPin = 11; // kırmızı
const int yesilPin = 10; // yeşil
const int maviPin = 9; // mavi

int kirmizi=0, yesil=0, mavi=0; // renk değerleri
int durum = 1; // gelen verileri işlemede kullanılacak
byte gelen = 0;

void setup()
{
Serial.begin(9600);

}

void loop()
{
while(Serial.available()>0)
{
/*
Gelen veriler işleniyor
R karakteri geldikten sonra sırasıyla
kirmizi,yeşil ve mavi baytları okunuyor.
*/
gelen = Serial.read();
switch(durum)
{
case 1:
if(gelen == 'R'){
durum = 2;
}
break;

case 2:
kirmizi = gelen;
durum = 3;
break;

case 3:
yesil = gelen;
durum = 4;
break;

case 4:
mavi = gelen;
durum = 1;
break;
}
}

// Ortak anot için
analogWrite(kirmiziPin, 255 - kirmizi);
analogWrite(yesilPin, 255 - yesil);
analogWrite(maviPin, 255 - mavi);

// Ortak katot için
/*
analogWrite(rpin, r);
analogWrite(gpin, g);
analogWrite(bpin, b);
*/
delay(20);
}


Orjinal konu: https://temrinlerim.org/index.php?topic=177.0