6 Ekim 2026 Salı


Programlama Kodları

//AÇIKLAMA
//Bu uygulamada bir önceki uygulama gibi AIN0 ve AIN1 pinlerindeki karşılaştırma sonucu 
//kesmeye gidilerek LED'in yakılması ve söndürülmesi sağlandı. Burdaki fark, kayıtçılardaki 
//bitlerin durumlarını değiştirmek için; bitSet() ve bitClear() komutlarının kullanılmasıdır.

#define LED 2
bool ACO_biti;
void setup()
{
  Serial.begin(9600);
  pinMode(6, INPUT);    //AIN0 pini. Karşılaştırıcının + ucu.
  pinMode(7, INPUT);    //AIN1 pini. Karşılaştırıcının - ucu. Referans giriş ucu.
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);


  cli();    //Tüm kesmeleri kapat

  bitSet(ACSR, 3);        //ACIE = 1. karşılaştırıcı kesmesi açıldı.
  bitSet(ACSR, 1); bitSet(ACSR, 0); //ACIS1 = 1, ACIS0 = 1. Çıkışın yükselen kenarında karşılaştırma kesmesi olsun
  bitSet(ACSR, 4);        //ACI = 1. kesme bayrak biti sıfırlandı
  bitClear(ACSR, 6);      //ACGB = 0. Bandgap Referance Voltajı kapatıldı.
  bitClear(ACSR, 7);      //ACD = 0. Analog Karşılaştırıcıya güç verildi.
  bitClear(ACSR, 2);      //ACIC = 0. Timer1'deki giriş yakalama işlevi kapatıldı.
  bitSet(DIDR1, 0);       //AIN0D = 1. AIN0 pini digital girişe kapatıldı
  bitSet(DIDR1, 1);       //AIN1D = 1. AIN1 pini digital girişe kapatıldı
  bitClear(ADCSRB, 6);    //ACME = 0. ADC açıldı
  bitSet(ADCSRA, 7);      //ADEN = 1. Multiplex Input kapatıldı

  sei();    //Tüm kesmeleri aç
}

void loop()
{
  ACO_biti = bitRead(ACSR, 5);  //ACSR kayıtçısının 5. biti olan ACO bitinin durumu(1 yada 0) değişkene atandı
  if (ACO_biti == 1)
  {
    Serial.println("ACO Biti = 1");
    delay(1000);
  }
  else if (ACO_biti == 0)
  {
    Serial.println("ACO Biti = 0");
    delay(1000);
  }


}

ISR(ANALOG_COMP_vect)
{
  digitalWrite(LED, !digitalRead(LED));
  Serial.println("Kesmeye oluştu");
}



Devre Şeması




0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com