Merhaba arkadaşlar arduino ile projelerde olabildiğince hızlı ilerlemeye çalışıyoruz… Bugün ki konumuz Arduino ile Nrf24l01 kullanarak Joystick ile servo motor kontrolü nasıl yapılır bunu öğreneceğiz 🙂
Bu proje ile rc araç yada robot kol yapımına bir adım daha yaklaştık arkadaşlar. 🙂
Çalışma mantığı basit Joystickten aldığımız analog değerleri Nrf24l01 aracılığıyla servonun bağlı olduğu arduinoya göndererek direkt servo motora yazdırıyoruz. 🙂
Kısa bilgilendirmenin ardından isterseniz zaman kaybetmeden yazımıza geçelim 🙂
Her şeyden önce bir kaç malzeme lazım bunlar;
İçindekiler
Malzeme Listesi
1- Herhangi bir Arduino Modeli 2 Adet
2- Nr24l01 Modül 2 Adet
3- Joystick Modülü
4- Servo Motor
5- Breadboard ve Jumper Kablolar
Not: Tüm bu malzemeleri elektronik parça satan yerlerde bulabilirsiniz yada şu ve bu adreslerden internet üzerinden güvenle sipariş edebilirsiniz
Ayrıca eğer zamanım bol diyorsanız Çin’den de Aliexpress vasıtasıyla getirtebilirsiniz. Daha uygun fiyata gelecektir. 🙂
Devre Şeması
Alt tarafta çizdiğimiz devre şemasına bakarak uygun arduino modeline göre devremizi breadboard’umuza kuralım.
Alıcı Devresi
Ben bu projede tek servo motor kontrolünü sağladım ancak siz isterseniz bu sayıyı yazılımda yapacağınız basit değişikliklerle çok kolay bir şekilde artıra bilirsiniz. 🙂
Verici Devresi
Dikkat: Bütün bağlantıları yapıp arduino kodlarını da yükledikten sonra modüller arasında iletişim sağlanmaz ise her iki modülün de VCC ve GND pinleri arasına 10 uF değerinde kondansatör yerleştirerek tekrar deneyiniz. Yada daha önceki yazımda anlattığım gibi adaptör alınız
Yazılım
Bu modülle çalışabilmek için bir kütüphaneye ihtiyaç duyuyoruz öncelikle kütüphanemizi aşağıdan indirip aşağıda belirtilen yoldaki klasöre rar dosyasından dan çıkarıp atın.
Rar Şifresi: donanimplus.com
Belgeler > Arduino > libraries
Bu projede 2 farklı kod kullanacağız biri alıcı haliyle biride verici
Verici Kodu
//DONAIM PLUS ELEKTRONİK
// MODİFİKASYON TOLGA SOYTEPE
// İNSTAGRAM TOLGASYTP
// TWİTTER TSytpp
// Arduino, Nrf24l01 ile uzaktan joystick ile servo kontrolü
// 2019
// VERİCİ YAZILIMI
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
//Pins....
#define CE_PIN 9
#define CSN_PIN 10
#define JOYSTICKX A0
#define JOYSTICKY A1
#define BUTTON 8
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE_PIN, CSN_PIN);
int joystick[3];
void setup()
{
radio.begin();
radio.openWritingPipe(pipe);
pinMode(BUTTON, INPUT);
}
void loop()
{
joystick[0] = analogRead(JOYSTICKX);
joystick[1] = analogRead(JOYSTICKY);
joystick[2] = digitalRead(BUTTON);
radio.write( joystick, sizeof(joystick) );
}
Kodu aşağıdan indirebilirsiniz 🙂
Alıcı Kodu
//DONAIM PLUS ELEKTRONİK
// MODİFİKASYON TOLGA SOYTEPE
// İNSTAGRAM TOLGASYTP
// TWİTTER TSytpp
// Arduino, Nrf24l01 ile uzaktan joystick ile servo kontrolü
// 2019
// ALICI YAZILIMI
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include<Servo.h>
Servo servo;
#define CE_PIN 9
#define CSN_PIN 10
#define led 4
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE_PIN, CSN_PIN);
int joystickData[3];
void setup() {
pinMode(4, OUTPUT);
radio.begin();
radio.openReadingPipe(1, pipe);
radio.startListening();;
servo.attach(6);
Serial.begin(9600);
}
void loop() {
if ( radio.available() )
{
radio.read( joystickData, sizeof(joystickData) );
int xpos = joystickData[1];
int button = joystickData[2];
int xpos1 = map(xpos, 0, 1023, 0, 180);
bool done = false;
while (!done) {
done = radio.read(joystickData, 1);
servo.write (xpos1);
delay(10);
}
if (button == 0) { //led
digitalWrite(4, HIGH);
}
else {
digitalWrite(4, LOW);
}
}
}
Kodu aşağıdan indirebilirsiniz 🙂
Bir yazının daha sonuna geldik umarım faydalı olmuştur arkadaşlar anlamadığınız yada kafanıza takılan yerler olursa lütfen yorumda yada kişisel sosyal medya hesaplarımdan ulaşmayı ihmal etmeyin.. Kolay Gelsin.. 🙂
Ben çalıştıramadım. Yardımcı olabilirmisiniz
Alıcı kod da hata var.
C:\Users\tsivm\Downloads\Arduino_ile_Nrf24l01_Joystick_ile_Servo_Kontrol__al_c_\Arduino_ile_Nrf24l01_Joystick_ile_Servo_Kontrol__al_c_.ino: In function ‘void loop()’:
C:\Users\tsivm\Downloads\Arduino_ile_Nrf24l01_Joystick_ile_Servo_Kontrol__al_c_\Arduino_ile_Nrf24l01_Joystick_ile_Servo_Kontrol__al_c_.ino:39:39: error: void value not ignored as it ought to be
done = radio.read(joystickData,1);
^
exit status 1
Compilation error: void value not ignored as it ought to be