GyverMotor lib + NRF24 + joystic (TX)
/*
Arduino PV2 robot NRF24L01
*/
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(9,10); // CE, CSN
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
char xyData[32] = "";
int joystick[2];
void setup() {
Serial.begin(9600);
radio.begin();
radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток)
radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(32); //размер пакета, в байтах
radio.openWritingPipe(address[0]); //мы - труба 0, открываем канал для передачи данных
radio.setChannel(0x60); //выбираем канал (в котором нет шумов!)
radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
radio.powerUp(); //начать работу
radio.stopListening(); //не слушаем радиоэфир, мы передатчик
///_______________________________________________________________________________///
}
void loop() {
// джойстик на А0 и А1 //
int signalX = 255 - analogRead(0) / 2;
int signalY = 255 - analogRead(1) / 2;
joystick[0] = signalX ;
joystick[1] = signalY ;
radio.write( joystick, sizeof(joystick) );
}
RX
/*
Arduino PV2 robot NRF24L01
*/
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "GyverMotor.h"
GMotor motorR(DRIVER3WIRE, 2, 4, 6, (LOW/HIGH) );
GMotor motorL(DRIVER3WIRE, 7, 8, 5, (LOW/HIGH) );
RF24 radio(9, 10);
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
char recieved_data[32] = "" ;
int xAxis, yAxis;
int joystick[2];
int signalY = 0 ;
int signalX = 0 ;
void setup() {
motorR.setMode(FORWARD);
motorL.setMode(FORWARD);
Serial.begin(9600);
radio.begin();
///_________________________________________________________________///
radio.begin(); //активировать модуль
radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл
radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток)
radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал
radio.setPayloadSize(32); //размер пакета, в байтах
radio.openReadingPipe(1, address[0]); //хотим слушать трубу 0
radio.setChannel(0x60); //выбираем канал (в котором нет шумов!)
radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
radio.powerUp(); //начать работу
radio.startListening(); //начинаем слушать эфир, мы приёмный модуль
///_________________________________________________________________________________________________________///
}
void loop() {
if (radio.available()) {
radio.read( joystick, sizeof(joystick) );
signalY = joystick[0];
signalX = joystick[1];
/// relay = sw[3];
Serial.println(signalY);
Serial.println(signalX);
//__________________________________________________
// преобразуем по танковой схеме
int dutyR = signalY + signalX;
int dutyL = signalY - signalX;
//__________________________________________________
motorR.setSpeed(dutyR);
motorL.setSpeed(dutyL);
}
}