8 Ocak 2015 Perşembe

ARDIUNO İLE PROCESSİNG ARASINDA ADC UYGULAMASI

 
 
   Bu çalışmam da Ardiuno Uno kitini kullanarak ADC yardımıyla potansiyometreden alınan giriş sinyalini serial port yardımıyla bilgisayara gönderilerek orada Processing diliyle tasarlamış olduğum basit bir yazılım yardımıyla  alınan giriş sinyalini açılan pencerenin arka planın da renk dönüştürücü olarak tasarladım. Bu çalışmanın amacı aslında Processing dilinin nasıl çalıştığını anlamak basit bir böyle çalışma yaparak.
 
 
 

Devre şeması
 
 
 

 Aşağıdaki Processing kodun da yer alan ilk komut şu işe yarar, eğer siz tasarlamış olduğunuz ara yüzün dış ortamla bağlantıda olmasını istiyorsanız import komutuyla "processing.serial.*" kütüphanesi çağırılır.  Ayrıca bir çok kütüphane bu komut ile çağırılır. Sonra onun alt komutunda yer alan Serial port yazılır. Bu komut serial portumuzu tanımlı hale getirilir. Serial port üzerinden aldığımız datayı "parlaklik adlı" değişkenimiz içinde saklarız. " Size" komutu açılan pencerenin boyutunu bize verir. Şu komut "port=new Serial(this,"COM7",9600) " serial port için iletişim aralıkları belirlendi. Dikkat edilmesi gereken nokta Ardiuno'yu PC bağlayınca Ardiuno'nun com portunu doğru şekilde yazmak. Örneğin benim Ardiuno, bilgisayara COM7 diye tanımlı olduğundan  tırnak içinde "COM7" yazıldı. Amacım Processing'in play butonuna basıldığında açılan pencerenin potansiyometreden alınan sinyale göre değiştmirmek olduğundan " background(parlaklik*3,parlaklik/3,parlaklik)" komutu kullanıldı. Yani açılan pencerenin  arkaplanın rengi background ile kontrol edilir. Son olarak bu komut;

void serialEvent(Serial port){

      parlaklik=float(port.readStringUntil('\n'));

}

Serial port'dan verileri almak için kullanılır.  Alınan veri string ifade olduğundan float() komutu ile normal decimal sayıya çevrilir ve onun üzerinde işlem yapılır. Dikkat edilmesi gereken yer, ('\n') bu ifadedir. Her string null karakteri yada diğer ifadeyle "\n" böyle bitiğinden Ardiuno'dan farklı datalar geldiğinden bir önceki ve bir sonraki data bir birinden ayırt edilmesi için kullanılır.



Processing Kodu;

import processing.serial.*; // kütüphane dosyası eklendi
Serial port;

float parlaklik=0;

void setup(){

      size(500,500);
      port=new Serial(this,"COM7",9600);// COM PORT VE ONA UYGUN BAUDRATE AYARLANDI
      port.bufferUntil('\n');
     
}

void draw(){

     background(parlaklik*3,parlaklik/3,parlaklik);

}

void serialEvent(Serial port){

      parlaklik=float(port.readStringUntil('\n'));

}






Ardiuno Kod;

int potPin=0; // ANALOG GİRİŞ YAPILDI.

void setup(){
    Serial.begin(9600); // SERİAL PORT İÇİN İLETİŞİM KURULDU,
}

void loop(){
 
  int val=map(analogRead(potPin),0,1023,0,255);
  //MAP FONKSİYONU İLE POT İLE OKUNAN ADC DEGERİ 0 İLE 1023 ARASINDADIR FAKAT
  //BİZİM İHTİYACIMIZ 0 İLE 255 ARASINDA OLMASI BUNUN İÇİN MAP FONK. KULLANARAK
  //ADCDEN OKUNAN DEĞERİ 0 İLA 255 ARASINDA EŞİT PAYLAŞTIRIR.

  Serial.println(val);// DEĞERİ YAZ.

  delay(50);// ADC BİRAZ YAVAŞ İŞLEM YAPTIGI İÇİN BİRAZ GEÇİKME EKLENDİ.

}

 


Çalışma Videosu;







Hiç yorum yok:

Yorum Gönder