4 Ağustos 2014 Pazartesi

Arduino - Processing Arayüzü ile RGB Led Sürme

Merhabalar,
Bu yazıda Processing üzerinden oluşturduğumuz arayüz ile Arduino'ya bağlı RGB ledi süreceğiz.

Öncelikle Processing ile ilgili bilgi vereceğim ama şunu belirtmek istiyorum ki Processing ilgilenmek ve öğrenmek istediğim bir dil fakat ne yazık ki çok bir bilgim yok. O yüzden bu uygulamam Coşkun TAŞDEMİR'in Arduino Uygulama kitabından hoşuma giden ve sizinle paylaşmak istediğim bir uygulama. Şayet hoşunuza giderse (ki gidecek :D) Processing ile ilgilenmek isteyebilirsiniz.Arduino Uygulama Kitabı burda imdadınıza yetişebilecek nitelikte. En azından başlangıç için. 






PROCESSING NEDİR ?
Processing açık kaynaklı görsel bir yazılım programıdır. Kodlarla dijital sanat icra edebilir veya da mikrodenetleyiciler ile seri haberleşme sağlayarak onları yönetebilirsiniz.

Download linki Processing İndir

RGB LED
RGB Led ortak anot ve ortak katot olmak üzere 2 çeşidi bulunan bir led türüdür. Çalışma mantığı sağ tarafta bulunan Venn şemasıdır. Kırmızı Mavi Yeşil tonları 8 bitte karıştırırak (0-255) diğer doğal renklerin elektronik ortamda oluşturulmasını sağlar.
Processing ile de bu programı oluşturacağız ve Arduino'ya bağladığımız RGB ledi süreceğiz.

RGB Ledi dirençsiz sürmek istiyorsanız ki ben öyle yaptım, Arduino'nun 3,3V pini ile besleyin. Ben ortak anot kullandım ve RGB ledin uzun bacağını 3,3 V'a bağladım. Ayrıca ledler standart değil renkleri teker teker deneyin !!!



Processing'e yazılımı yazmadan önce Sketch>Import Library bölümünden CONTROLP5 kütüphanesini indiriyoruz.Böylelikle renk seçimi yapabileceğiz. 

Çok bir bilgim yok tüm kodlar hakkında buyrun;

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

ControlP5 controlP5;
Serial seriPort;
ColorPicker cp;

int kirmizi;
int yesil;
int mavi;

void setup () {
  size(400,100);
  controlP5=new ControlP5(this);
  cp = controlP5.addColorPicker("renksecici",0,0,255,20);
  seriPort = new Serial(this,"COM30",9600); // COM30 yerine kendi seriportunuzu yazın.
}

void draw() {
  background(cp.getColorValue());
  
  kirmizi=int(red(cp.getColorValue()));
  yesil=int(green(cp.getColorValue()));
  mavi=int(blue(cp.getColorValue()));
  delay(50);
}

void renksecici(int renk){
  println("KIRMIZI" +kirmizi + "YEŞİL" +yesil + "MAVİ" +mavi);
  RenkGonder();
}

void RenkGonder() {
  seriPort.write('R');
  seriPort.write(kirmizi);
  seriPort.write(yesil);
  seriPort.write(mavi);

}

Bu da Arduino kodumuz ;

const int kirmizipin=11;
const int yesilpin=10;
const int mavipin=9;
int kirmizi=0;
int mavi=0;
int yesil=0;

int durum=1;
byte gelen = 0;

void setup(){
Serial.begin(9600);
}
void loop() {
while(Serial.available()>0)
{
  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;
  }}
  
  analogWrite(kirmizipin,255-kirmizi);
  analogWrite(yesilpin,255-yesil);
  analogWrite(mavipin,255-mavi);
  
  delay(20);
}

Şayet Processing programınız yok ,fakat yine de denemek istiyorsanız buyrun program linki.
https://drive.google.com/file/d/0B7Iv2kkg1He_blQ1ZUJUX1lmWkE/edit?usp=sharing

Bu da videomuz, 








1 yorum: