4 Eylül 2026 Cuma

Program Kodları
//___________________MASTER_________________
#include<SPI.h>
void setup()
{
  SPI.setClockDivider(SPI_CLOCK_DIV4);  //clock bölme 4 yapıldı.
  SPI.begin();  //SPI iletişim başlatıldı
}

void loop()
{
  digitalWrite(SS, LOW);  //slave seçme biti LOW yapılarak slave cihaz ile iletişim başladı.
  SPI.beginTransaction(SPISettings(16000000, MSBFIRST, SPI_MODE0)); //Max SPI hızı:16Mhz, Bitlerin gönderim sırası, SPI iletişim modu.
  SPI.transfer(48);
  delay(1000);
  SPI.transfer(49);
  delay(1000);
  SPI.endTransaction();
  digitalWrite(SS, HIGH); //slave seçme biti HIGH yapılarak slave cihaz ile iletişim kapatıldı.
}


//______________________SLAVE___________________
#include<SPI.h>
int gelen;
void setup()
{
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  SPCR = (1 << SPE) | (0 << MSTR); //SPE=1  ile SPI iletişim etkinleştirildi.
                                   //MSTR=0 ile Arduino slave moda alındı.
                                   
  SPI.attachInterrupt();           //SPI kesmesi aktif edildi. Kesmeyi aktif
                                   //etmek için SPCR kayıtçısnın 7. biti olan
                                   //SPIE=1 yapılarak da SPI kesmesi aktif edilebilir.
}

void loop()
{
  if (gelen == 48)
  {
    digitalWrite(7, HIGH);
    digitalWrite(6, LOW);
  }
  else
  {
    digitalWrite(7, LOW);
    digitalWrite(6, HIGH);
  }
}

//slave Arduino'ya veri geldiğinde çalışan kesme fonksiyonu
ISR(SPI_STC_vect)
{
  gelen = SPDR;   //slave cihaza gelen veri SPDR kayıtçısına kaydedilir. 
                  //Buradaki veri gelen değişkenine atandı.
}



Devre Şeması



0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

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

Sensörler ve Aygıtların Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com