Programlama Kodları
//AÇIKLAMA
//Bu uygulamada analog karşılaştırıcının pozitif giriş ucuna olan AIN0 pininden gelen voltaj
//yerine Bandgap Referance'den gelen voltaj kullanıldı. Bandgap Referance voltajı sabit 1.1V'dur.
//Bu nedenle analog karşılaştırıcının negatif girişi ve referans voltajı olan AIN1'in voltajı
//değiştirilerek ACO bitinin durumunun değişmesi ve buna bağlı olarak LED'in yanması veya sönmesi sağlandı.
//Uygulama hem fiziksel Arduino'da hem de Proteus'ta çalıştı.
#define LED 2
bool deger;
void setup()
{
Serial.begin(9600);
pinMode(7, INPUT); //AIN1 pini. Karşılaştırıcının - ucu.
pinMode(LED, OUTPUT);
ACSR |= (0 << ACIE); //karşılaştırıcı kesmesi kapatıldı
ACSR |= (1 << ACBG); //Bandgap Referance Voltajı açıldı
ACSR |= (0 << ACD); //Analog Karşılaştırıcıya güç verildi
ACSR |= (0 << ACIC); //Timer1'deki giriş yakalama işlevi kapatıldı
ADCSRB |= (0 << ACME); //ADC açıldı
ADCSRA |= (1 << ADEN); //Multiplex Input kapatıldı
DIDR1 |= (1 << AIN1D) | (1 << AIN0D); //AIN1 ve AIN0 pinleri digital girişe kapatıldı
}
void loop()
{
deger = bitRead(ACSR, 5); //ACSR kayıtçısının 5. biti olan ACO bitinin durumu(1 yada 0) değişkene atandı
if (deger == 1)
{
digitalWrite(LED, HIGH);
Serial.print("ACO biti = "); Serial.println(deger);
delay(1000);
}
else if (deger == 0)
{
digitalWrite(LED, LOW);
Serial.print("ACO biti = "); Serial.println(deger);
delay(1000);
}
}
Devre Şeması
0 comments:
Yorum Gönder