Elektrik Elektronik Teknolojisi Alanı Temrinleri

 
Hoşgeldiniz Ziyaretçi. Lütfen giriş yapın veya kayıt olun.

Kullanıcı adınızı, şifrenizi ve aktif kalma süresini giriniz

Gönderen Konu: Arduino+nRF24L01 Çift Yönlü haberlşeme Sorunu  (Okunma sayısı 8173 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

02 Şubat 2019, 02:26:46
Çevrimdışı burakoyke
*
İleti: 2
Profili Görüntüle 
Öncelikle herkese merhabalar
Bitirme projemin bir parçasında çift yönlü haberleşme yapmak zorundayım ve kullandığım modül nRF24L01 bu modülü arduinoda kullanmak için 3 farklı kütüphane denedim ve herbirinde çeşitli sorunlar yaşadım.
1-İlk kütüphane (RF24.h ve nrf24l01.h)
bu kütüphanede çift yönlü haberleşme hiç yapamadım
2 ikinci kütüphane(nrf24l01p.h)
bu kütüphanede çift tönlü haberleşmeyi yapabiliyorum ama haberleşme bir süre sonra kesiliyor yani sürekli değil aynı zamanda isteiğim zaman ararıklarında çalıştıramadım.
3 son kütüphane(Enrf24.h)
çift yönlü haberleşme yaptım ama bazen çalışıyor bazen çalışmıyor.
Gerçekten çok yardıma ihtiyacım var sadece 1 aydır bununla uğraşıyorum programımın çok gerisinde kaldım bana lütfen yardım edin eminim bir yerde minik bir atladığım sorun var. Teşekkürler.


 

02 Şubat 2019, 10:19:04
Yanıtla #1
Merhaba. Ben uygulamalarımda RF24-master kütüphanesini kullanıyorum. Örnek uygulama kodları aşağıda mevcut. Kütüphaneyi ekten indirebilirsin.

Alıcı kodları
#include <SPI.h>
#include &#38;#38;#38;#34;RF24.h&#38;#38;#38;#34;
int bilgi[1];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int reset = 5;
int motor = 4;

void setup() 
{
  radio.begin();
  radio.openReadingPipe(1,pipe);
  radio.startListening();
  Serial.begin(9600);
  pinMode(reset, OUTPUT);
  pinMode(motor, OUTPUT);
} 

void loop()
{

   if (radio.available())
 {
  bool done = false;    
  done = radio.read(bilgi, 1);
  Serial.println(bilgi[0]);
  delay(10);
  
 } 

  if (bilgi[0] == 252) &#38;#38;#38;#47;&#38;#38;#38;#47; baslat
     {
        digitalWrite(motor, HIGH);   
        delay(5000);           
        digitalWrite(motor, LOW);
        digitalWrite(reset,HIGH);
        delay(1000);
        digitalWrite(reset,LOW);
        delay(1000);
      }

  if (bilgi[0] == 251) &#38;#38;#38;#47;&#38;#38;#38;#47; durdur
     {
        digitalWrite(motor, LOW);
        digitalWrite(reset,HIGH);
        delay(1000);
        digitalWrite(reset,LOW);
        delay(1000);
      }      

  if (bilgi[0] == 250) &#38;#38;#38;#47;&#38;#38;#38;#47; calistir
     {
        digitalWrite(motor, HIGH);
     }        
  
} 


Verici kodları:
#include <SPI.h>
#include &#38;#38;#34;RF24.h&#38;#38;#34;
int bilgi[1]; 
RF24 radio(9,10); 
const uint64_t pipe = 0xE8E8F0F0E1LL;
#include <Keypad.h>
#include <Wire.h>
char customKey;
const byte ROWS = 3;
const byte COLS = 1;
char keys[ROWS][COLS] = 
{
 {&#38;#38;#39;3&#38;#38;#39;},
 {&#38;#38;#39;6&#38;#38;#39;},
 {&#38;#38;#39;9&#38;#38;#39;}
};
byte rowPins[ROWS] = {4, 3, 7}; 
byte colPins[COLS] = {2};  
Keypad customKeypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); 
int reset = 5;

void setup() {
  Serial.begin(9600); 
   radio.begin(); 
 radio.openWritingPipe(pipe); 
 pinMode(reset, OUTPUT);

}

void loop()
{

  customKey = customKeypad.getKey();
  if (customKey == &#38;#38;#39;3&#38;#38;#39;) {baslat();}  
  if (customKey == &#38;#38;#39;6&#38;#38;#39;) {durdur();} 
  if (customKey == &#38;#38;#39;9&#38;#38;#39;) {calistir();} 
} 

void baslat()
{
  Serial.println(&#38;#38;#34;Baslat&#38;#38;#34;);
      for (int RobotikCenter = 1; RobotikCenter <= 20; RobotikCenter ++)
        {
          bilgi[0] = 252; 
          radio.write(bilgi, 1);
          Serial.println(bilgi[0]);
        } 
        digitalWrite(reset, HIGH);
        delay(500);
        digitalWrite(reset, LOW);
        delay(500);
} 

void durdur()
{
  Serial.println(&#38;#38;#34;Durdur&#38;#38;#34;);
      for (int RobotikCenter = 1; RobotikCenter <= 20; RobotikCenter ++)
        {
          bilgi[0] = 251; 
          radio.write(bilgi, 1);
          Serial.println(bilgi[0]);
        }  
        digitalWrite(reset, HIGH);
        delay(500);
        digitalWrite(reset, LOW);
        delay(500);
} 

void calistir()
{
  Serial.println(&#38;#38;#34;Calistir&#38;#38;#34;);
      for (int RobotikCenter = 1; RobotikCenter <= 20; RobotikCenter ++)
        {
          bilgi[0] = 250; 
          radio.write(bilgi, 1);
          Serial.println(bilgi[0]);
        }  
        digitalWrite(reset, HIGH);
        delay(500);
        digitalWrite(reset, LOW);
        delay(500);
} 



« Son Düzenleme: 02 Şubat 2019, 10:23:53 Gönderen: Hasan ERTÜRK »
iletişim: 0542 343 09 15
 
Bu iletiye teşekkür edenler: burakoyke

03 Mart 2019, 01:40:54
Yanıtla #2
Çevrimdışı burakoyke
*
İleti: 2
Profili Görüntüle 
Merhaba Hasan bey cevabınız için teşekkür ederim ama ben bu kütüphaneyle çift yönlü haberleşme yapamıyorum. Bu kütüphaneye ait çift yönlü haberleşme örneğiniz varsa paylaşabilir misiniz ?