Joystick ile Uzaktan Dc motor Hız kontrolü

Bu projemizle  Joystick kullanarak uzaktan dc motor kontrolünün mümkün olduğunu görebilirsiniz. Projemizde kullanacağımız bir adet Joystick ile NRF24L01 ile bilgileri uzaktaki diğer NRF24l01 kablosuz iletişim modülüne göndererek hız kontrolü yapacağız

Kullanılan Malzemeler

  1. 2 adet NRF24L01
  2. 2 Adet Arduino
  3. 1 Adet Joystick
  4. 1 Adet DC Motor (Kullanacağınız Dc motor yüksek akım çektiğinden dolayı Burada LED kullanacağım. Motor kullanabilmek için MOTOR sürücü devresi yapmanız yada motor modülü temin etmelisiniz.)Bağlantı şemasını programda ayrıntılarıyla görebilirsiniz

Programımız

Verici


/* Example: nRF24L01 */

   1 - GND 
   2 - VCC 3.3V /* WARNING SHOULD BE 3.3v Not 5V */
   3 - CE - Arduino pin 9
   4 - CSN - Arduino pin 10
   5 - SCK - Arduino pin 13
   6 - MOSI - Arduino pin 11
   7 - MISO - Arduino pin 12
   8 - UNUSED 

 /* You can used an Analog Joystick or 2 10K potentiometers */

   GND - Arduino GND 
   VCC - Arduino +5V
   X Pot - Arduino A0
   Y Pot - Arduino A1

/*----- Import all required Libraries -----*/

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

/*----- Declare all constant pin to be used ----*/

#define CE_PIN   9
#define CSN_PIN 10
#define JOYSTICK_X A0
#define JOYSTICK_Y A1


const uint64_t pipe = 0xE8E8F0F0E1LL; // This is the transmit pipe to communicate the two module


/*-----Object Declaration ----*/

RF24 radio(CE_PIN, CSN_PIN); // Activate  the Radio

/*-----Declaration of Variables -----*/

int joystick[2];  // Two element array holding the Joystick readings

void setup()   
{
  Serial.begin(9600); /* Opening the Serial Communication */
  radio.begin();
  radio.openWritingPipe(pipe);
}//--(end setup )---


void loop()   /* Runs Continuously */
{
  joystick[0] = analogRead(JOYSTICK_X); /* Reading Analog X
  joystick[1] = analogRead(JOYSTICK_Y); /* Reading Analog Y
  
  radio.write( joystick, sizeof(joystick) );

}//--(end main loop )---

 

Alıcı


/* Testing nRF24L01 Receive Joystick values to NRF24l01 Module
  
   1 - GND 
   2 - VCC 3.3V /* WARNING SHOULD BE 3.3v Not 5V */
   3 - CE - Arduino pin 9
   4 - CSN - Arduino pin 10
   5 - SCK - Arduino pin 13
   6 - MOSI - Arduino pin 11
   7 - MISO - Arduino pin 12
   8 - UNUSED 

/*----- Import all required Libraries -----*/

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

/*----- Declare all constant pin to be used ----*/

#define CE_PIN   9
#define CSN_PIN 10

const uint64_t pipe = 0xE8E8F0F0E1LL; // This is the transmit pipe to communicate the two module


/*-----Object Declaration ----*/

RF24 radio(CE_PIN, CSN_PIN); // Activate the Radio

/*-----Declaration of Variables -----*/

int joystick[2];  //  Two element array holding the Joystick readings

int hizkontrol = 2; // herhangi pwm cikisi yazilmalidir 

void setup()  
{
  Serial.begin(9600); /* Opening the Serial Communication */
  delay(1000);
  Serial.println("Nrf24L01 Receiver Starting");
  radio.begin();
  radio.openReadingPipe(1,pipe);
  radio.startListening();;
}//--(end setup )---


void loop()   
{
  if ( radio.available() )
  {
    // Reading the data payload until the RX received everything
    bool done = false;
    while (!done)
    {
      // Fetching the data payload
      done = radio.read( joystick, sizeof(joystick) );
      Serial.print("X = ");
      Serial.print(joystick[0]);
      Serial.print(" Y = ");      
      Serial.println(joystick[1]);
    }
///////// Buraya if dongüsü ile PWM kontrolü yapabilirsiniz.
int hiz =map(joystick[0],0,1023,0,255);// burada gonderilen deger pwm cevrildi
// cikis icin verilen pwm degerini 0-255  AnalogWrite komutuyla cikisa vermek  

analogWrite(hiskontrol, hiz);

  }
  else
  {    
      Serial.println("No radio available");
  }

}

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.