LED etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
LED etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

22 Haziran 2018 Cuma

7 Mart 2014 Cuma

Arduino - Buton ile Çıkışları Değiştirme

Butonların öneminden daha önceki yazımda bahsetmiştim. Burada da yine bir öncekine benzer bir uygulama yapacağız. Bu uygulamanın yapılış amacını aslında 7 segment display uygulamalarına giriş için yaptığımızı düşünebiliriz.

Kısaca uygulamadan söz etmek gerekirse amacımız burda 1 sayısal giriş ile  2 sayısal çıkışı yönetmek olacak. Butona her bastığımızda çıkışın yeri değişecek. Yani çıkış olarak kullandığımız yeşil ve turuncu ledleri sırayla butona basarak yanmasını sağlayacağız.

Bu uygulamaya geçmeden önce size aritmetik bir operatör olan " mod " almayı anlatacağım.

Arduino'da ve bir çok C tabanlı dilde mod  " % " ifadesi ile alınmakta. Yani biz herhangi bir integer değerin herhangi bir sayı modunda almak istersek şu şekilde kullanmamız gerekiyor.



Integer değeri= sayi , mod=5 olsun;

" sayi%5 " 

Uygulamamızda  bu kavramın daha iyi anlaşılacağını düşünüyorum.

int led1=8;  //yeşil led
int led2=7;  //turuncu led
int buton=4;
int ledsirasi=0; //modunu alacağımız sayi

void setup () {
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(buton,INPUT_PULLUP);}
  
void loop () {
    int butondurumu=digitalRead(buton);
    if (butondurumu==0)
    {ledsirasi=ledsirasi+1;}
    
    if (ledsirasi%2==0)
    {digitalWrite(led1,HIGH);
     digitalWrite(led2,LOW);}
     else
     {digitalWrite(led2,HIGH);
     digitalWrite(led1,LOW);}
     
     delay(100);
}

Programda çıkışları seçmeyi (aslında 1 olanı seçmeyi) mod2ye bağlı olarak ledsirasi integer değerine göre seçtim. ledsirasi 0'dan başlamak üzere her butona basıldığında 1 artacak ve mod2ye göre de ya "1" ya da "0" olacak. Buna göre de ya yeşil led ya da kırmızı led in yanması sağlanmış olacak.




Bir sonraki uygulamamızda 7 segmentli gösterge ile 0-9 arası sayıcı yapacağız. Daha önce CMOS 4026 entegresi ile hazır olarak bunu yapmıştım bu sefer arduinoyu kendimiz programlayarak bunu yapacağız.









22 Temmuz 2013 Pazartesi

Arduino - Analog Çıkışlara Hükmetmek (PWM & Ledler)

Daha önce dijital çıkışlara hakim olmuştuk. "1" ve "0" mantığı ile ledimizi yakmış ve söndürmüştük.Fakat hayatta ki ölçülebilen değerler sadece "1" ve "0" lardan oluşmuyor. Bu yazımda analog çıkışlarla ilgili çalışma yapacağız. Arduino UNO ve türevleri bu özelliği barındırmakta.




Bu özellik elbette ki tüm çıkış pinlerinde yok. Üzerinde ~ işareti bulunan pinleri kullanırsak analog özelliğini de kullanabiliriz.

Dijital çıkışlarda " digitalWrite(10, HIGH ), digitalWrite(10, LOW) " komutunu kullanıyorduk. Çıkışımız ya "1" ya da "0" oluyordu. Analog özelliğini kullanabilmemiz için ise aşağıdaki komuta ihtiyacımız olacak.

analogWrite( )

Öncelikle devremizi aşağıdaki gibi kuruyoruz.Tabi siz isterseniz üzerinde "~" işareti bulunan herhangi bir pini de kullabilirsiniz.

Kodlar ve açıklaması :


int led=9;
  
void setup()
{
  pinMode(led, OUTPUT);

}
void loop()
{
  int parlaklik;
  {
  for (parlaklik=0;parlaklik<=255;parlaklik+=5)
  {analogWrite(led,parlaklik);
  delay(100);
  }
  for(parlaklik=255;parlaklik>=0;parlaklik-=5)
  {
    analogWrite(led,parlaklik);
    delay(100);
  }
}
}


  • 9. pinimizi çıkış olarak ayarladık
  • Parlaklık ismiyle integer bir değer okuttuk.Bu değerimiz analog çıkış almamızı sağlayacak.
  • 8 bitlik dijital değeri analog değere çevirmiş olduk 2^8=256 formülünden analog çıkışımız 0-255 arasında değişecek.
  • Biz bu değeri 5'er 5'er 255'e kadar arttırdık ve sonra da 255'ten 5'er 5'er azalttık.
  • Böylece analog olarak ledimizin parlaklığını arttırmış ve azaltmış olduk.




17 Temmuz 2013 Çarşamba

Arduino - Dijital Çıkışlara Hükmetmek (Led Yakma)

Elektronik dünyasına giriş için bir mikroişlemci seçmemiz gerektiğinden bahsetmiştim . Tercihimi Arduino UNO'dan yana kullandım. Elimde PIC programlayıcım var fakat hazır bir launchpadi olan Arduino ile bu dünyaya giriş yapmak bana daha cazip geldi. 

Ardunio, kodların yazıldığı sayfaya sketch adını veriyor yani karalama.Setup() ve Loop() bölümeri bu karalamalarda mutlaka olmak zorunda.

void setup ()
          { ilk değerler ve ilk başta bir kere çalışacak kodlar 
      }
         void loop() 
      {
// devamlı tekrarlanarak sırasıyla çalışacak  kodları burada yazıyoruz     } 

Bu yazımda Arduino'nun çıkışlarına led bağlayarak, bir kaç örnekle çıkışlara hükmedeceğiz.Yazımda yapacağımız uygulamalardaki malzemeler ise şunlar:

- 4 adet Led (Farklı renklerde olursa güzel olur.)
- Jumper Kablolar
- Direnç (İsteğe bağlı ben şahsen kullanmadım.)


Öncelikle her mikroişlemciye girişte olduğu gibi klasik bir giriş ile yani led flaşör ile giriş yapalım.

Launchpad 10.pinini çıkış olarak aldım ve oraya bir led bağladım. Dileyen ledin önüne direnç de koyabilir.

İsteğimiz şu olacak, led 1 saniye yanacak ve 1 saniye sönecek. Kodlar ve şeması;


void setup() {                
  // Pinler Çıkış olarak belirleniyor
  pinMode(10, OUTPUT);       // MAVI LED
}
void loop() {
  digitalWrite(10, HIGH);    // LED yanik
  delay(500);                // 500mS bekle 
  digitalWrite(10, LOW);     // LED sonuk
  delay(500);                // 500ms bekle

}







Biraz daha görsel tabiri caizse cix birşey yapalım :) . 4 adet ledi yanyana sırayla yakalım ve 4'ü aynı anda yanmadan hiçbiri sönmesin. Kodlar ve Şema :

int led1=7;
int led2=8;
int led3=9;
int led4=10;

void setup() 
{
  pinMode(led1, OUTPUT); //7.pin led1
  pinMode(led2,OUTPUT);  //8.pin led2
  pinMode(led3,OUTPUT);  //9.pin led3
  pinMode(led4,OUTPUT); //10.pin led4
}
int i;
void loop() {

 for(i=0;i<=1;i++) 
 {
   digitalWrite(led1,HIGH); //1.ledi yak
   delay(250);              // 0.25 saniye bekle
   digitalWrite(led2,HIGH); //2.ledi de yak
   delay(250);              // 0.25 saniye bekle
   digitalWrite(led3,HIGH); // 3.ledi de yak
   delay(250);              // 0.25 saniye bekle  
   digitalWrite(led4,HIGH); // 4.ledi de yak
   
 }
for(i=0;i<=1;i++) 
 {
   digitalWrite(led1,LOW); //1.ledi söndür
   delay(250);             //0.25 saniye bekle
   digitalWrite(led2,LOW); //2.ledi de söndür
   delay(250);             //0.25 saniye bekle
   digitalWrite(led3,LOW); //3.ledi de söndür
   delay(250);             //0.25 saniye bekle
   digitalWrite(led4,LOW); //4.ledi de söndür
   

}}

Videosunu şu linkten izleyebilirsiniz. 





Arduino ile güzel bir giriş yaptığımızı düşünüyorum ve umuyorum ki bu konuda daha hızlı ilerleyeceğiz.