Bu uygulamada; Arduino B portuna bağlı ledler kayar şekilde çalışırken 2 nolu uçtaki butona basıldığında kesme meydana gelir ve kayma işlemi durur. Kesme fonksiyonu çalışarak yeşil led yanar, butondan elimizi çekinceye kadar yeşil led yanmaya devam eder. Butondan elimizi çektiğimizde yeşil led söner ve program kesmeye gittiği noktaya geri dönerek devam eder.
Program Kodları:
int kayan;
#define kesme_led 4
void setup()
{
pinMode(kesme_led, OUTPUT);
DDRB = 0b11111111; //B portu çıkış yapıldı.
kayan = 0b00000001;
attachInterrupt(0, kesme, FALLING); //0: 2 nolu pinden kesme yap. kesme: kesme fonksiyonu. FALLING: düşen kenarda kesme yap.
}
void loop()
{
do
{
PORTB = kayan;
kayan = kayan << 1; //kayan değişkeninin değerini 1 bit sola kaydır ve sonucu tekrar kayan değişkenine ata.
delay(500);
} while (bitRead(kayan, 6) != 1); //kayan değişkeninin 6 nolu biti 1'e eşit olmadığı müddetçe döngüye devam et.
kayan = 0b00000001;
}
void kesme()
{
digitalWrite(kesme_led, HIGH);
while (digitalRead(2) == 0); //butona basık olduğu sürece bekle.
digitalWrite(kesme_led, LOW);
}
Devre Şeması:
________________________________________________________________________________________________________________________________________________________
0 comments:
Yorum Gönder