Оформи код соответствующим тэгом
Написал скетч радиоуправление на ардуино и NRF24 управление двумя моторами по танковой схеме одним джойстиком
При включении реагирует только на: джойстик вперёд машинка едет вперёд назад неработает поворачивает на право, а на лево не поворачивает.
Помогите пожалуйста!!!!
Скетч пульта
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <GyverMotor.h>
GMotor motorL(DRIVER2WIRE,2,3);
GMotor motorR(DRIVER2WIRE,4,5);
int Y = A1;
int X= A0 ;
int swit=8;
RF24 radio(9, 10);
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"};
byte transmit_data[3];
byte latest_data[3];
boolean flag;
void setup() {
pinMode(8,INPUT_PULLUP);
motorR.setMode(AUTO);
motorL.setMode(AUTO);
Serial.begin(9600);
radio.begin();
radio.setAutoAck(1);
radio.setRetries(0, 15);
radio.enableAckPayload();
radio.setPayloadSize(32);
radio.openWritingPipe(address[0]); radio.setChannel(102);
radio.setPALevel (RF24_PA_MAX);
radio.setDataRate (RF24_250KBPS);
radio.powerUp();
radio.stopListening();
}
void loop() {
X= 255-analogRead(0)/2;
Y = 255-analogRead(1)/2;
transmit_data[0] = X;
transmit_data[1] =Y;
transmit_data[2] = digitalRead (8);
for (int i = 0; i < 3; i++) {
if (transmit_data != latest_data) {
flag = 1;
latest_data = transmit_data;
}
}
if (flag == 1) { radio.powerUp();
radio.write(&transmit_data, sizeof(transmit_data));
flag = 0;
radio.powerDown();
}
}
Скетч приёмника
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(9, 10);
#include <GyverMotor.h>
GMotor motorL(DRIVER2WIRE,2,3);
GMotor motorR(DRIVER2WIRE,4, 5);
int led=8;
byte recieved_data[6];
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"};
void setup() {
pinMode(8,OUTPUT);
motorR.setMode(AUTO);
motorL.setMode(AUTO);
Serial.begin(9600);
radio.begin();
radio.setAutoAck(1);
radio.setRetries(0, 15);
radio.enableAckPayload(); radio.setPayloadSize(32);
radio.openReadingPipe(1, address[0]);
radio.setChannel(0x60);
radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS);
radio.powerUp();
radio.startListening();
}
void loop() {
byte pipeNo;
while ( radio.available(&pipeNo))
{
radio.read(&recieved_data, sizeof(recieved_data));
int R =recieved_data[0];
int L = recieved_data[1];
int pipR=R+L;
int pipL=L-R;
motorR.setSpeed(pipR);
motorL.setSpeed (pipL);
digitalWrite(8, recieved_data[2]);
}
}
При включении реагирует только на: джойстик вперёд машинка едет вперёд назад неработает поворачивает на право, а на лево не поворачивает.
Помогите пожалуйста!!!!
Скетч пульта
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <GyverMotor.h>
GMotor motorL(DRIVER2WIRE,2,3);
GMotor motorR(DRIVER2WIRE,4,5);
int Y = A1;
int X= A0 ;
int swit=8;
RF24 radio(9, 10);
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"};
byte transmit_data[3];
byte latest_data[3];
boolean flag;
void setup() {
pinMode(8,INPUT_PULLUP);
motorR.setMode(AUTO);
motorL.setMode(AUTO);
Serial.begin(9600);
radio.begin();
radio.setAutoAck(1);
radio.setRetries(0, 15);
radio.enableAckPayload();
radio.setPayloadSize(32);
radio.openWritingPipe(address[0]); radio.setChannel(102);
radio.setPALevel (RF24_PA_MAX);
radio.setDataRate (RF24_250KBPS);
radio.powerUp();
radio.stopListening();
}
void loop() {
X= 255-analogRead(0)/2;
Y = 255-analogRead(1)/2;
transmit_data[0] = X;
transmit_data[1] =Y;
transmit_data[2] = digitalRead (8);
for (int i = 0; i < 3; i++) {
if (transmit_data != latest_data) {
flag = 1;
latest_data = transmit_data;
}
}
if (flag == 1) { radio.powerUp();
radio.write(&transmit_data, sizeof(transmit_data));
flag = 0;
radio.powerDown();
}
}
Скетч приёмника
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(9, 10);
#include <GyverMotor.h>
GMotor motorL(DRIVER2WIRE,2,3);
GMotor motorR(DRIVER2WIRE,4, 5);
int led=8;
byte recieved_data[6];
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"};
void setup() {
pinMode(8,OUTPUT);
motorR.setMode(AUTO);
motorL.setMode(AUTO);
Serial.begin(9600);
radio.begin();
radio.setAutoAck(1);
radio.setRetries(0, 15);
radio.enableAckPayload(); radio.setPayloadSize(32);
radio.openReadingPipe(1, address[0]);
radio.setChannel(0x60);
radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS);
radio.powerUp();
radio.startListening();
}
void loop() {
byte pipeNo;
while ( radio.available(&pipeNo))
{
radio.read(&recieved_data, sizeof(recieved_data));
int R =recieved_data[0];
int L = recieved_data[1];
int pipR=R+L;
int pipL=L-R;
motorR.setSpeed(pipR);
motorL.setSpeed (pipL);
digitalWrite(8, recieved_data[2]);
}
}