Elektrik Devreleri,Elektronik Devreler

Elektrik Dersleri, devre analiz dersleri, üniversite elektrik dersleri, üniversite elektrik elektronik dersleri,

Responsive Ads Here

11 Temmuz 2015 Cumartesi

ARDUINO ETHERNET SHIELD VE SD KART AYNI ANDA KULLANMA PROBLEMI


Merhabalar arkadaÅŸlar,

Hepimizin bildiği üzere arduinonun ethernet shield i üzerinde sd kart yuvası bulunmakta ve bizim sd kart üzerinden işlemler yapabilmemizi sağlamaktadır.Ethernet ve Sd kart çiplerini aynı anda kullanmak ise haberleşme problemlerine neden olmaktadır.Bu yazımızdan bunun nedenleriden bahsedeceğiz.

Ethernet shiled her ne kadar üzerinde bir sd kart yuvası bulundursa da arduino ile sd kart ve ethernet çiplerini aynı spi üzerinden haberleştirmektedir.Bu nedenle ne zaman ethernete ya da sd karta ihtiyacımız olsa kullanmadığımız çipi inaktif kullandığımız çipi ise aktif hale getirmemiz gerekmektedir.

Bunu nasıl sağlayacağız?

Ethernet shield üzerindeki ethernet çipini 10 numaralı pin aktif ya da inaktif yapar.Sd kart çipini ise 4 numaralı pin ethernet cipinde olduğu gibi kontrol eder.4 yada 10 numaralı pinlerin low olması durumunda ilgili çipi aktif etmiş ve o çipin arduino ile haberleşmesini sağlamış oluyoruz.

Burada göz ardı etmememiz gereken en önemli unsurlardan biri de bu shield ı kullanırken sd kart ve ethernet özelliklerini setup fonksiyonu içerisinde ön başlangıçlarını yapmamız gerektiğidir.Sonrasında ise hangisine ihtiyacımız olduğunda aşağıdaki kodları kullarak istediğimiz çip ile arduino arasındaki haberleşmeyi sağlayabiliriz.

#define SS_SD_CARD   4
#define SS_ETHERNET 10

void setup() {
    // ...
    pinMode(SS_SD_CARD, OUTPUT);
    pinMode(SS_ETHERNET, OUTPUT);
    digitalWrite(SS_SD_CARD, HIGH);  // SD Card aktif deÄŸil
    digitalWrite(SS_ETHERNET, HIGH); // Ethernet aktif deÄŸil
    // ...
}

void scCardCode() {
    // ...
    digitalWrite(SS_SD_CARD, LOW);  // SD Card aktif
    //Sd card üzerinde yapmak istediklerimizi yapıyoruz
    digitalWrite(SS_SD_CARD, HIGH); // SD Card inaktif duruma getiriyoruz.
    // ...
}

void ethernetCode() {
    // ...
    digitalWrite(SS_ETHERNET, LOW);  // Ethernet aktif
    // Ethernet üzerinde gerçekleştirmek istediklerimizi yapıyoruz
    digitalWrite(SS_ETHERNET, HIGH); // Ethernet inaktif
}

Hiç yorum yok:

Yorum Gönder