PIC Programlama Dersleri 12 – Butonla LED Kontrolü

guclusat

Tanınmış Üye
Süper Moderatör

PIC Programlama Dersleri 12: Butonla LED Kontrolü ve Durum Değiştirme​


Bu uygulamada PIC16F628A mikrodenetleyicisine bağlanan bir butonla LED'in durumunu değiştireceğiz. Butona her basıldığında LED'in durumu değişecek: LED sönükse yanacak, yanıyorsa sönecek.

Bu örnekte giriş/çıkış tanımları, if koşulu, değişkenler ve while döngüsü birlikte kullanılacaktır.

1. Gerekli Malzemeler​


  • PIC16F628A mikrodenetleyici
  • 1 adet LED
  • LED için uygun seri direnç
  • 1 adet buton
  • Buton girişi için 10 kΩ pull-down direnç
  • Deney kartı ve bağlantı kabloları

2. Devre Bağlantıları​


  • RB0 pinini LED'e uygun seri direnç üzerinden bağlayın.
  • LED'in diğer ucunu GND'ye bağlayın.
  • RA0 pinini butonun bir ucuna bağlayın.
  • Butonun diğer ucunu +5 V'a bağlayın.
  • RA0 ile GND arasına 10 kΩ pull-down direnç bağlayın.
  • PIC'in VDD ve VSS besleme bağlantılarını doğru yapın.
Bu bağlantıda buton bırakıldığında RA0 lojik 0, basıldığında lojik 1 olur.

3. MikroC PRO for PIC Programı​


Kod:
unsigned char led_durumu = 0;

void main() {
CMCON = 0x07;        // Karşılaştırıcıları kapat
TRISA = 0b00000001;  // RA0 giriş
TRISB = 0b00000000;  // PORTB çıkış
PORTB = 0x00;

while (1) {
    if (PORTA.F0 == 1) {
        Delay_ms(30); // Buton sıçramasını azalt

        if (PORTA.F0 == 1) {
            led_durumu = !led_durumu;
            PORTB.F0 = led_durumu;

            while (PORTA.F0 == 1) {
                // Buton bırakılana kadar bekle
            }

            Delay_ms(30);
        }
    }
}
}

4. Program Nasıl Çalışır?​


  1. RA0 giriş, RB0 çıkış olarak ayarlanır.
  2. Program sürekli butonun durumunu kontrol eder.
  3. Butona basıldığında kısa bir gecikme ile girişin kararlı olup olmadığı kontrol edilir.
  4. led_durumu = !led_durumu; komutu LED'in durumunu tersine çevirir.
  5. PORTB.F0 = led_durumu; komutu yeni durumu RB0 çıkışına uygular.
  6. Buton bırakılana kadar beklenir. Böylece buton basılı tutulduğunda LED'in art arda değişmesi önlenir.

5. Önemli Bilgi​


Bu örnekte yazılımsal buton sıçraması önleme yöntemi kullanılmıştır. Butonun bırakılması beklenirken program başka işler yapamaz. Daha gelişmiş sistemlerde bu işlem zamanlayıcılarla veya durum makineleriyle yapılabilir.

PIC16F628A'da RA0 pininin dijital giriş olarak kullanılabilmesi için karşılaştırıcıların kapatılması amacıyla CMCON = 0x07 ayarlanmıştır.

6. Kendin Dene​


  1. LED'i RB1 pinine taşıyın ve programı buna göre değiştirin.
  2. Gecikme süresini 30 ms yerine 50 ms yaparak sonucu gözlemleyin.
  3. İkinci bir LED ekleyerek bir LED yanarken diğerinin sönük kalmasını sağlayın.

Sonuç​


Bu uygulamayla buton girişini okumayı, koşul kullanmayı ve LED durumunu değiştirmeyi öğrendik. Bu temel yapı; röle kontrolü, menü butonları ve elektronik cihazların kullanıcı kontrolleri gibi projelerde kullanılabilir.
 
Geri
Yukarı