C18 Diliyle Robot Programlama – Led Yakma

Led yakmak için öncelikle ledlerin bağlı bulunduğu mikrodenetleyici bacakları belirlenir.  Benim kullandığım deneme kartında lede giden uçlar PIC18F4585’in 38,37 ve 36. uçları olarak görünüyor. Datasheet’ten PIC18F4585’in pin diyagramlarına bakarsak bu uçların B portunun 3,4 ve 5. çıkışları olduğunu görebiliriz.

Temel olarak yapacağımız işlem RB5, RB4 ve RB3 uçlarından ledlere sırasıyla 5 volt göndermek olacak (3 tane ledi ardarda yakmak istiyoruz). Bunun için öncelikle bu 3 pinin çıkış için ayarlanması gerekir. Daha sonra yaktığımız her bir ledi söndürüp bir sonrakini yakacağız. Her bir led yanmadan önce ve yandıktan sonra belirli bir zaman kadar (~100ms) beklememiz gerekir -ki ledlerin sırayla yanıp söndüğünü görelim. Yoksa çok hızlı yanıp söndüğünden gözümüz hep ledler  yanıyormuş gibi algılar- Bu bekleme işlemi için “delays.h” kütüphanesini kullanacağız.

Program kodları aşağıdaki gibi olacak.

<pre>/*
 * File: newmainp18.c
 * Author: cagatay
 *
 * Created on 11 Kas?m 2011 Cuma, 18:47
 */

#include <p18f4585.h>
#include <stdio.h>
#include <delays.h>

#pragma config OSC = HS, WDT = OFF, LVP = OFF

void main(void) {

     TRISBbits.RB5 = 0;
     TRISBbits.RB4 = 0;
     TRISBbits.RB3 = 0;

     PORTB = 0;

     while(1) {
          Delay10KTCYx(10);
          PORTBbits.RB5 = 1;
          Delay10KTCYx(10);
          PORTBbits.RB5 = 0;

          Delay10KTCYx(10);
          PORTBbits.RB4 = 1;
          Delay10KTCYx(10);
          PORTBbits.RB4 = 0;

          Delay10KTCYx(10);
          PORTBbits.RB3 = 1;
          Delay10KTCYx(10);
          PORTBbits.RB3 = 0;
     }

     return;
}

10. satırda delays.h kütüphanesini kodumuza dahil ettik. Böylece artık Delay10KTCYx() fonksiyonunu kullanabiliriz. Bu fonksiyon aldığı parametre kadar milisaniyelik gecikme yaratır.

16, 17 ve 18. satırlarda ledlere giden RB5, RB4 ve RB3 pinlerini output yapacağımızı belirtmek için “0” yaptık. TRIS‘in anlamı budur. Belirtilen pinler “1” olursa input, “0” olursa output için kullanılır. (İstersek direk TRISB = 0 da diyebilirdik. Bu da tüm B portunu –RB0 – RB7– çıkış için ayarlardı.)

20. satırda bütün B çıkışları 0 volt olacak şekilde ayarlanmıştır. PORTB = 1 olması bütün çıkışlara 5 volt verileceği anlamına gelir. Aynı şekilde bu da her bir pin için özelleştirilebilir (Ör: PORTBbits.RB5 = 0)

22. satırda while(1) ile sonsuz döngü açılmaktadır -ki yazdığımız program sürekli çalışabilsin. Yoksa 1 defa çalışır ve biz olan biteni anlayamadan program sonlanır.- Bu döngünün içerisinde her bir pin önce yakılır (PORTBbits.RB5= 1) daha sonra görebilmemiz için belli bir süre beklenir (Delay10KTCYx(100)) en sonda da yakılan led söndürülerek bir sonraki lede geçilir. (PORTBbits.RB5= 0)

Yapılan her işlemin arasında delay fonksiyonu koyularak ledlerin yanıp sönmesi gözlemlenmiş olur.

One thought on “C18 Diliyle Robot Programlama – Led Yakma

  1. hocam çok iyi paylaşım. fakat bende delays.h kütüphanesini tanımıyo. galba programın dosyalarıdan bulup library kısmına eklemem gerek ama olmuyo . nasıl tanımlıcagımı sölerseniz sevinirim

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s