#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
int mavi_led = 13;
int kirmizi_led = 12;
int kirmizi_buton = 4;
int mavi_buton = A0;
//pin değişim kesmesi ayarlanıyor
void pciSetup(byte pin)
{
//enable pin
*digitalPinToPCMSK(pin) |= bit (digitalPinToPCMSKbit(pin));
//askıdaki tüm interruptları temizle
PCIFR |= bit (digitalPinToPCICRbit(pin));
//tekrar interruptları enable et
PCICR |= bit (digitalPinToPCICRbit(pin));
}
void setup()
{
//kullanılacak led ve buton tanımları
pinMode(mavi_led, OUTPUT);
pinMode(kirmizi_led, OUTPUT);
pinMode(kirmizi_buton, INPUT);
pinMode(mavi_buton, INPUT);
//9 nolu pin için pci ayarlandı
pciSetup(kirmizi_buton);
//A0 pini için pci ayarlandı
pciSetup(mavi_buton);
}
//Pin değişim kesmelerinin vektörleri
//kullanılacak pine göre vektör tanımı yapılmalıdır
//Örneğin burada D9 pinini kullanmak için "PCINT0_vect" vektörü tanımlanır
ISR (PCINT0_vect)
{
//D9 butonuna basıldıyda kırmızı led söner
if (!digitalRead(kirmizi_buton))
{
digitalWrite(mavi_led, LOW);
lcd.begin(20, 4);
lcd.setCursor(3, 0);
lcd.print("mavi isik sondu");
}
}
//Pin değişim kesmelerinin vektörleri
//kullanılacak pine göre vektör tanımı yapılmalıdır
//Örneğin burada A0 pinini kullanmak için "PCINT1_vect" vektörü tanımlanır
ISR (PCINT1_vect)
{
//A0 butonuna basıldıysa kırmızı led yanar
if (!analogRead(mavi_buton))
{
digitalWrite(mavi_led, HIGH);
lcd.begin(20, 4);
lcd.setCursor(3, 0);
lcd.print("mavi isik yandi");
}
}
void loop()
{
//mavi led 1 sn aralıklar ile yanıp söner
digitalWrite(kirmizi_led, !digitalRead(kirmizi_led));
delay(1000);
}