22.02.2012

Arduino Project 7 Led Show

Herkese Merhaba

Bu projede yeni birşey birşey yapmayacağım. Henüz elimde çok fazla sensör ve elektronik cihaz çeşidi olmadığı için farklı projeler yapamıyorum :( Fakat su süreyide boş geçirmemek gerekiyor. Bu nedenle basit projeler yaparak paslanmamakta fayda var :P Bu çalışmada bir potansiyometre ve yan yana dizilmiş olan sekiz tane led ile potansiyometrenin sağa ve sola çevrilmesini baz alarak ışığı sağa sola hareket ettirmeye çalışacağım. Kısacağı ben potansiyometreyi hareket ettirdikçe ışık sağa ve sola gidiyomuş gibi görünecek. Bir nevi ünlü karaşimşek devresinin kontrolü benim elimde olan versiyonu :D


Diğer Arduino projelerime de bakmak isterseniz technologylaboratory.blogspot.com/search/label/Arduino

Gerekliler Listesi :


- 1x1K Ohm Potansiyometre
- 8x 220 Ohm Direnç
- 8x Led
- 1x Breadboard
- Arduino Mega 2560 ya da diğer Arduino boradlarından biri
- Arduino Yazılımı

Kod :

/*
Project 7
Name: Led Show
*/
int value;         
// potansiyometreden okuduğum değer
int adc_value; 
// potansiyometreden okuduğum değer değerin dijital karşılığı
int potPin = 0;     
// potansiyometreyi bağlayacağım pin numarası
int ledPin1 = 13; 
// LED leri bağladığım pin numaraları
int ledPin2 = 12;
int ledPin3 = 11;
int ledPin4 = 10;
int ledPin5 = 9;
int ledPin6 = 8;
int ledPin7 = 7;
int ledPin8 = 6;

void setup (){ 
 analogReference(DEFAULT);
 pinMode(ledPin1, OUTPUT);
// led leri bağladığım bacakları çıkış olarak bildiriyorum.
 pinMode(ledPin2, OUTPUT);
 pinMode(ledPin3, OUTPUT);
 pinMode(ledPin4, OUTPUT);
 pinMode(ledPin5, OUTPUT);
 pinMode(ledPin6, OUTPUT);
 pinMode(ledPin7, OUTPUT);
 pinMode(ledPin8, OUTPUT);
}

// Işığın sağa sola hareket ediyomuş şekilde görünmesini sağlayan hazırladığım foksiyon. Bu fonksiyonu çağırırken gönderdiğim parametreler ile gerekli olan ledin bağlı olduğu pini HIGH yaparken diğer ledlerin bağlı olduğu pinleri LOW yapıyorum.
int queue(int q){
  digitalWrite(ledPin1,LOW); 
// Ledlerin bağlı olduğu bütün pinler LOW yani hiç bir led ışık vermiyor.
  digitalWrite(ledPin2,LOW); 
// Yani ışığı sağa sola kaydırmak için ilk olarak için hepsini söndürüyorum.
  digitalWrite(ledPin3,LOW);
  digitalWrite(ledPin4,LOW);
  digitalWrite(ledPin5,LOW);
  digitalWrite(ledPin6,LOW);
  digitalWrite(ledPin7,LOW);
  digitalWrite(ledPin8,LOW);
 
  if(q==1){  
// eğer fonksiyona gelen değer 1 ise
  digitalWrite(ledPin1,HIGH);
// 1. ledin bağlı olduğu pini HIGH yapıyorum. Yani 1. LED ışık veriyor.
  }
  else if(q==2){
// eğer fonksiyona gelen değer 2 ise
  digitalWrite(ledPin2,HIGH); // 2. ledin bağlı olduğu pini HIGH yapıyorum. Yani 2. LED ışık veriyor.
  }
  else if(q==3){
// eğer fonksiyona gelen değer 3 ise
  digitalWrite(ledPin3,HIGH); // 3. ledin bağlı olduğu pini HIGH yapıyorum. Yani 3. LED ışık veriyor.
  }
  else if(q==4){
// eğer fonksiyona gelen değer 4 ise
  digitalWrite(ledPin4,HIGH); // 4. ledin bağlı olduğu pini HIGH yapıyorum. Yani 4. LED ışık veriyor.
  }
  else if(q==5){
// eğer fonksiyona gelen değer 5 ise
  digitalWrite(ledPin5,HIGH); // 5. ledin bağlı olduğu pini HIGH yapıyorum. Yani 5. LED ışık veriyor.
  }
  else if(q==6){
// eğer fonksiyona gelen değer 6 ise
  digitalWrite(ledPin6,HIGH); // 6. ledin bağlı olduğu pini HIGH yapıyorum. Yani 6. LED ışık veriyor.
  }
  else if(q==7){
// eğer fonksiyona gelen değer 7 ise
  digitalWrite(ledPin7,HIGH); // 7. ledin bağlı olduğu pini HIGH yapıyorum. Yani 7. LED ışık veriyor.
  }
  else if(q==8){
// eğer fonksiyona gelen değer 8 ise
  digitalWrite(ledPin8,HIGH); // 8. ledin bağlı olduğu pini HIGH yapıyorum. Yani 8. LED ışık veriyor.
  }
}
void loop(){
 value = analogRead(potPin);
// potansiyometreden gelen analog değeri okuyorum.
 adc_value = map(value,0,1023,255,0);
// analog değeri 256 bitlik dijital değere dönüştürüyorum.

 if(adc_value>=0 && adc_value<32){
// eğer değer 0-32 arası ise 8.led ışık versin.
 queue(8);
// fonksiyona 8. pini "HIGH" yapması için sekiz değerini gönderiyorum
 }

// eğer değer 32-64 arası ise 7.led ışık versin.
 else if (adc_value>=32 && adc_value<64){
 queue(7); // fonksiyona 7. pini "HIGH" yapması için yedi değerini gönderiyorum
 }
 else if(adc_value>=64 && adc_value<96){
 queue(6);
// fonksiyona altı değerini gönderiyorum
 }
 else if (adc_value>=96 && adc_value<128){
 queue(5);
// fonksiyona beş değerini gönderiyorum
 }
 else if(adc_value>=128 && adc_value<160){
 queue(4);
// fonksiyona dört değerini gönderiyorum
 }
 else if (adc_value>=160 && adc_value<192){
 queue(3);
// fonksiyona üç değerini gönderiyorum
 }
 else if (adc_value>=192 && adc_value<224){
 queue(2);
// fonksiyona iki değerini gönderiyorum
 }
 else if (adc_value>=224 && adc_value<256){
 queue(1);
// fonksiyona bir değerini gönderiyorum
 }
}


Kurulması gerekn devre şeması aşağıdaki resimdedir. Kendi yazılımınıza uygun olan devreyi tasarlayabilirsiniz.


Proejnin hazırlanmış halinin fotoğrafları aşağıdadır.






Projenin çalıştırılmış halini aşağıdaki videoda izleye bilirsiniz. Daha farklı projeler yapmak dileğim ile birlikte herkese iyi seyirler :)



Diğer Arduino projelerine de bakmak isterseniz technologylaboratory.blogspot.com/search/label/Arduino


2 yorum:

  1. melih sanırım acilen sponsora ihtiyacın war :D

    YanıtlaSil
    Yanıtlar
    1. Evet şuan için aciliyeti olmasa da sponsorlar mükemmel olurdu :)

      Sil