PIC Programlama Dersleri 14: Butonla İki LED'i Sırayla Yakma
Bu derste PIC16F628A mikrodenetleyicisi ile iki LED'i sırayla kontrol edeceğiz. Butona her basıldığında yanan LED değişecek. Böylece önceki derslerde öğrendiğimiz giriş, çıkış, koşul ve değişken konularını tek bir uygulamada birleştireceğiz.
1. Gerekli Malzemeler
- PIC16F628A mikrodenetleyici
- 2 adet LED
- 2 adet 330 Ω seri direnç
- 1 adet buton
- 1 adet 10 kΩ direnç
- Deney kartı ve bağlantı kabloları
2. Devre Bağlantıları
- RB0: 330 Ω direnç üzerinden birinci LED'e bağlanır.
- RB1: 330 Ω direnç üzerinden ikinci LED'e bağlanır.
- LED'lerin katot uçları GND'ye bağlanır.
- RA0: Butonun bir ucuna bağlanır.
- Butonun diğer ucu +5 V'a bağlanır.
- RA0 ile GND arasına 10 kΩ pull-down direnci bağlanır.
3. MikroC PRO for PIC Programı
Kod:
unsigned char led_secimi = 0;
unsigned char onceki_buton = 0;
void main() {
CMCON = 0x07;
TRISA = 0b00000001;
TRISB = 0b00000000;
PORTB = 0x01;
while (1) {
if (PORTA.F0 == 1 && onceki_buton == 0) {
Delay_ms(30);
if (PORTA.F0 == 1) {
led_secimi = !led_secimi;
PORTB.F0 = !led_secimi;
PORTB.F1 = led_secimi;
onceki_buton = 1;
}
}
if (PORTA.F0 == 0) {
onceki_buton = 0;
}
}
}
4. Program Nasıl Çalışır?
- Başlangıçta RB0 üzerindeki birinci LED yanar.
- Butona ilk kez basıldığında birinci LED söner, ikinci LED yanar.
- Butona tekrar basıldığında ikinci LED söner, birinci LED yanar.
- led_secimi değişkeni hangi LED'in yanacağını belirler.
- onceki_buton değişkeni, buton basılı tutulduğunda sürekli geçiş yapılmasını engeller.
5. Dikkat Edilmesi Gerekenler
Buton bırakılmadan yeni bir geçiş yapılmaz. Bu sayede LED'ler her basışta bir kez değiştirilir. Yazılımdaki 30 ms gecikme mekanik buton sıçramalarını azaltmaya yardımcı olur.
6. Kendin Dene
- İki LED yerine üç LED kullanarak sırayla yakmayı deneyin.
- Başlangıçta ikinci LED'in yanmasını sağlayın.
- LED'lerin değişme sırasını tersine çevirin.
Sonuç
Bu uygulamayla bir butonun basılma anını algılamayı ve değişken kullanarak LED sırasını değiştirmeyi öğrendik. Aynı mantık, basit menülerde ve çalışma modu seçen elektronik cihazlarda da kullanılabilir.