manşet

Arduino ile Nrf24l01 Modül Haberleşmesi

      Nrf24l01 modülü piyasada rahatlıkla bulabileceğiniz , aynı anda çift yönlü olarak haberleştirebileceğiniz ,gerek haberleşme hızı gerekse fiyatı yüzünden benim gibi öğrencilerin ilk tercihidir J

Arduino uno joystick bağlantıları "alinti çizim"




Bu yapmış olduğum uygulamayı adım adım anlatmam gerekirse ;

Arduino RF24 kütüphanesini buradan indirebilisiniz.

. Röle ile dc motor kontrolü
.Arduino ile joystick kullanımı
. Arduino ile nrf24l01 haberleşmesi

Röle ile dc motor kontrolünü daha önceki dersimizde anlatmıştık , arduino ile joystick kullanımında dikkat etmemiz gerekenler ise joystick in verdiği değerlerdir bu yüzden elinize bir kalem kağıt alarak y ekseninde yönünde en yukarıda ve en aşağıda verdiği değerler ,  x ekseninde ise en sağda ve en solda verdiği değerleri not alınız.


Bağlantı şemaları aşağıdadır.
(Ufak bir hatırlatma , ben alıcı kısmında mega kullandığım için kodlarda ona göredir. Arduino uno kullanıcaksanız pin numaralarını değiştiriniz. )


Arduino mega nrf24l01 bağlantıları "alıntı çizim"



Robotun Alıcı Kodları :

#include <SPI.h>
#include "RF24.h"

 int msg[1];
 RF24 radio(6,7);
 const uint64_t pipe = 0xE8E8F0F0E1LL;

 int sagi=22;                                                     // MOTOR PİNLERİ
 int sagg=24;
 int solg=26;
 int soli=28;

void setup()

    {
   Serial.begin(9600);
   radio.begin();
   radio.openReadingPipe(1,pipe);
   radio.startListening();

   pinMode(sagi, OUTPUT);
   pinMode(sagg, OUTPUT);
   pinMode(solg, OUTPUT);
   pinMode(soli, OUTPUT);
   }

  void loop()
{
 if (radio.available())
 {
   bool done = false;   
   while (!done)
 {
     done = radio.read(msg, 1);     
     Serial.println(msg[0]);
    /////////////////////////////////////////////////////başlangıç//////////////////////////////////////////////
     if (msg[0] == 100)
 {
           ileri();  
 }

      if (msg[0] == 101)
 {
            dur();
 }
 
      if (msg[0] == 102)
 {
             sol();
 }
 
      if (msg[0] == 103)
 {
             sag();
 }
 
      if (msg[0] == 104)
 {
             geri();
 }
  }
 }}
 // robotun yön komutları
void ileri()
{
digitalWrite(solg, LOW);
digitalWrite(soli, HIGH);
digitalWrite(sagg, LOW);
digitalWrite(sagi, HIGH);
}
 
void geri()
{
digitalWrite(solg, HIGH);
digitalWrite(soli, LOW);
digitalWrite(sagg, HIGH);
digitalWrite(sagi, LOW);
}
 void sol()
{
digitalWrite(soli, LOW);
digitalWrite(solg, HIGH);
digitalWrite(sagg, LOW);
digitalWrite(sagi, HIGH);
 }
 void sag()
{
digitalWrite(solg, LOW);
digitalWrite(soli, HIGH);
digitalWrite(sagg, HIGH);
digitalWrite(sagi, LOW);
}
 void dur()
{
digitalWrite(solg, LOW);
digitalWrite(soli, LOW);
digitalWrite(sagg, LOW);
digitalWrite(sagi, LOW);
}
Robotun Verici Kodları :

#include <SPI.h>
#include "RF24.h"

#define X_AXIS    0  // ARACIN KONTROLÜ
#define Y_AXIS    1  // ARACIN KONTROLÜ

int mesaj[1];
RF24 radio(6,7);  // arducom bağlantıları
const uint64_t pipe = 0xE8E8F0F0E1LL;  // paralel veri yolu adresleri

int  Xdeger;
int  Ydeger;

void setup(void)
{
 Serial.begin(9600); // seri ha
 radio.begin();   // rf24 haberleşmesi baş.
 radio.openWritingPipe(pipe);
}

void loop(void)
{
 
  Xdeger = analogRead (X_AXIS);
 // Serial.print (Xdeger );
  Ydeger = analogRead (Y_AXIS);
 // Serial.print (Ydeger);
 
 if(Ydeger>900)                                                                   //  İLERİ
 {
  mesaj[0] = 100;
  radio.write(mesaj, 1);
 }


 if(Ydeger>490 && Ydeger <=510 && Xdeger>=520 && Xdeger<=540)                    //DURDUR
 {
 mesaj[0] = 101;
 radio.write(mesaj, 1);
 }

   if(Xdeger>=0 && Xdeger<30 && Ydeger>430 && Ydeger <=600 )                      //  sola dönme
 {
  mesaj[0] = 102;
  radio.write(mesaj, 1);
 }

   if(Xdeger>=990 &&  Ydeger>430 && Ydeger <=600 )                      //  sağa  dönme
 {
  mesaj[0] = 103;
  radio.write(mesaj, 1);
 }

  if(Ydeger>=0 && Ydeger<=200)                                                                   //  geri
 {
  mesaj[0] = 104;
  radio.write(mesaj, 1);
 }
 }


2 yorum:

  1. Teşekkürler Furkan, aktardıgın bilgiler çok yararlı oldu

    YanıtlaSil

  2. Arduino:1.6.11 (Windows 10), Kart:"Arduino Nano, ATmega328"

    C:\Users\Dj\Desktop\Pictures\BAÅ?ARISIZLIK\eksik joystick\joystick_alici\joystick_alici.ino: In function 'void loop()':

    joystick_alici:39: error: 'ileri' was not declared in this scope

    joystick_alici:44: error: 'dur' was not declared in this scope

    joystick_alici:49: error: 'sol' was not declared in this scope

    joystick_alici:54: error: 'sag' was not declared in this scope

    joystick_alici:59: error: 'geri' was not declared in this scope

    exit status 1
    'ileri' was not declared in this scope

    This report would have more information with
    "Show verbose output during compilation"
    option enabled in File -> Preferences.

    BU HATA MESAJINI VERİYOR NEYAPMALIYIM ?

    YanıtlaSil