nRF24L01 Komutları

TMRh20 versiyon KÜTÜPHANE FONKSİYONLARI

Ä°lgili resim

 

Standart fonksiyonlar;
 Aşağıdaki fonksiyonlar, wifi modülün çalıştırılması için kullanılacak standart fonksiyonlardır. İleri seviye işlemler için kullanılacak olan fonksiyonlar belirtilmeyecektir. Bu fonksiyonlar için RF24.h kütüphanesi incelenebilir.
 
RF24(uint16_t _cepin, uint16_t _cspin);
Yeni bir cihaz tanımlar ve cihazın ce – cs pinlerinin arduino da nereye bağlandığını belirtir.
 Örnek=
RF24 radio(9, 10); // raido isimli bir cihaz tanımla ve ce pini arduino 9 nolu pine, cs pini ise arduino 10 nolu                                          //pine bağlı olsun

 
bool begin(void);
 nRF24L01 modülü işletmeye başlar. Bu fonksiyonu setup() içerisinde çalıştırmalıyız.
Örnek=
 radio.begin()  //radio isimli modülü çalıştırır. “Radio çalışmaya başlasın”
  

 
bool isChipConnected();
 nRF24L01 modülün SPI hattına bağlı olup olmadığını kontrol eder. True veya false değer geri döndürür.

 


void startListening(void);
Okuma yapmak için açılmış olan data hatlarını dinlemeye başlar.
  1. Bu fonksiyondan önce openReading() fonksiyonunu başlatmanız gerekiyor, bunu yaptığınızdan emin olun
  2. Bu fonksiyon modundayken (dinleme yaparken), write() fonksiyonunu çağırmayın. Bundan önce stopListening() fonksiyonunu çağırmalısınız.
     3. Bir bilgi akışı – trafiği olup olmadığını kontrol etmek için available() fonksiyonunu          çağırın, bilgiyi okumak için read() fonksiyonunu çağırın.
Örnek = CCCECCCECC adresini kullanan 1 nolu data hattından okuma yapmak için kodalama aşağıdaki gibi;
 byte address[] = { 0xCC,0xCE,0xCC,0xCE,0xCC };
 radio.openReadingPipe(1,address);
 radio.startListening();

void stopListening(void);
Gelen mesaj için dinleme yapmayı durdurur ve transmit mod’a (gönderme modu) geçer. write() fonksiyonunu çağırmadan önce bu fonksiyon kullanılır.
Örnek=
Radio.stopListening();
Radio.write(&data, sizeof(data));

bool available(void);
Okumaya müsait mesaj (byte cinsinden) olup olmadığını kontrol eder. Buffer’da bir mesaj varsa true, yoksa false değeri döndürür
Örnek=
if(radio.available()){
radio.read(&data,sizeof(data));

void read( void* buf, uint8_t len );
 
buf= okunan verinin nereye yazılacağını işaret eder
len= belirtilen değişkenin içine yazılacak olan verinin max. Uzunluğunu byte cinsinden belirtir. Yani kısaca derki; (örneğin)data değişkeni içerisine şu kadar byte lık bir bilgi yazabilirsin Bu fonksiyon boolean cinsinden (true veya false) bilgi geri döndürmez.
Bu fonksiyon okunmaya müsait olan veriyi okur ve 1. parametrede gösterilen değişkene yazar. Bu parametrede void* veri tipi belirteci olarak gösterilmiştir, cast operatörü belirtmeye gerek yoktur. Verinin yazılacağı değişkeni işaret eden bir pointer’dir.
Örnek =
char data[32]={0};
if(radio.available()){                          // gelen mesaj varmı? Varsa aşağıda belirtilenleri yap
radio.read(&data,sizeof(data));  // mesajı oku,sizeof(data) ile belirtilen sayıdaki byte kadar (32) adetteki
}                                                                       // bilgiyi   &data ile gösterilen yere yaz,

bool write( const void* buf, uint8_t len );
 
buf= gönderilecek olan mesajın bulunduğu değişkene işaret eden bir pointerdır.
Len= gönderilecek olan verinin uzunluğunu byte cinsinden belirtir
 Gönderilecek olan veriyi, veri hattına yazar.  Bu fonksiyon çağırılmadan önce, hangi veri hattına yazma yapılacağını belirtmek için openWrtingPipe() fonksiyon uçağrılmalı ve adres belirtilmelidir. Mesajın sağlıklı bir şekilde gönderildiğine dair onay bilgisi alınana kadar veya timeout yada max tekrar gönderim sayıları aşıldı bilgisi alınana kadar programı bloke eder. Öntanımlı geçerli gecikme süresi 60-70ms’dir.
Yazılan max. data boyutu, sabit yük boyutu kadardır, bunu görmek için getPaylodSize() komutunu kullanabilirisiniz. İsterseniz daha az boyutuna da yazabilrsiniz, geri kalan boş kısımlar 0 (sıfır) ile doldurulacaktır.
Write() fonksiyonu her çağrıldığında, TX/RX/RT kesme bayrakları temizlenecektir.
Payload başarılı bir şekilde yerine ulaştığında true geri döndürür, değilse false geri döndürür
Örnek=
radio.stopListening();
radio.write(&data,sizeof(data));

void openWritingPipe(const uint8_t *address);
 
address= açılacak olan veri hatının adresini belirtir.
byte array aracılığıyla, yazma yapılacak olan data hatı açılmasını sağlar. Yani, göndereceğimiz veriyi belirttiğimiz adresteki veri hattını kullanarak yollayacağımızı beyan etmiş oluyoruz. Bir seferde sadece 1 adet data hattı açılabilir ancak yazma yapılacak olan adres değiştirilebilir. Bu fonksiyondan önce stopListening() fonksiyonu çağırılmış olmalıdır.  Adresler, byte array aracılığıyla ataması yapılır, öntanımlı (default) adres uzunluğu 5 byte olarak belirlenmiştir. Bu ayarı değiştirmek için setAddressWidth() fonksiyonuna bakın.
Haberleşme yapılacak olan networkteki tüm cihazların veri hattı adresleri bizim tarafımızdan koordine edilmelidir.
Örnek=
  1. örnek
uint8_t addresses[][6] = {“1Node”,”2Node”};
radio.openWritingPipe(addresses[0]);
  1. örnek
uint8_t address[] = { 0xCC,0xCE,0xCC,0xCE,0xCC };
radio.openWritingPipe(address);
address[0] = 0x33;
radio.openReadingPipe(1,address);

void openReadingPipe(uint8_t number, const uint8_t *address);
 
number= hangi veri hattını kullanacağımızı seçiyoruz. 0-5 arasındaki veri hatlarından bir tanesini yazıyoruz.
address= açılacak olan veri hattının adresini yazıyoruz. 24,32 veya 40 bitlik bir adres belirtiyoruz. Bu fonksiyonla bağlantılı diğer fonksiyonlar, openWritingPipe() ve setAddressWidth() fonksiyonlarıdır.
Okuma yapılması için, okumanın yapılacağı bir veri hattı açar. Okuma için  6 taneye kadar veri hattı açılabilir. Önce okuma yapılmak istenilen veri hatlarının hepsi açılır ve daha sonra startListening() fonksiyonu çalıştırılır.
Veri hattı 0 ‘ın kandi ayır 5 byte lık bir adresi olmalıdır. Veri hattı 1-5 arası olanlar ise son 4 baytı aynı adres olacak ve sadece 1. byte ları birbirlerinden farklı olacak şekilde adreslenmelidir.
Veri hattı 0 aynı zamanda yazma veri hattı için de kullanılıyor. Eğer Veri hattı 0’ı okuma yapmak üzere açtığımızda bu durumu da göz önünde bulundurmakta yarar var.
Örnek=
uint8_t addresses[ ][6] = {“1Node”,”2Node”};
openReadingPipe(1,addresses[0]);
openReadingPipe(2,addresses[1]);

Yorum bırakın