I have these 4 working codes for nrf24l01. 2 transmitter codes and 2 receiver codes. But I want to combine them but when I do, they do not work. Please help.
Combined Code RX
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <Servo.h>
Servo FTHROWER;
Servo BLDC;
int DataMsg[1];
RF24 radio(7,8);
const uint64_t pipe = 0xE14BC8F482LL;
int Relay1 = 2;
int Relay2 = 3;
int data;
int pos;
void setup()
{
FTHROWER.attach(9);
BLDC.attach(10);
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
Serial.begin(57600);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
digitalWrite(Relay1, HIGH);
digitalWrite(Relay2, HIGH);
}
void loop()
{
if (radio.available())
{
bool done = false;
while (!done)
{
radio.read(DataMsg, 1);
Serial.print("NRF24L01 Receiver: ");
Serial.println(DataMsg[0]);
if (DataMsg[0] == 254)
{
delay(10);
digitalWrite(Relay1, LOW);
digitalWrite(Relay2, HIGH );
}
if (DataMsg[0] == 255)
{
delay(10);
digitalWrite(Relay2, LOW );
digitalWrite(Relay1, HIGH );
}
delay(100);
}
}
else
{
Serial.println("Waiting for signal...");
}
radio.read(msg, 1);
if (DataMsg[0] <128 && DataMsg[0] >-1)data = DataMsg[0], pos = map(data, 0, 127, 7, 177),FTHROWER.write(pos);
if (DataMsg[0] >127 && DataMsg[0] <250)data = DataMsg[0], pos = map(data, 128, 250, 9, 177),BLDC.write(pos);
}
Combined Code TX
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int DataMsg[1];
int potpin_1 = A0;
int val_1;
int potpin_2 = A1;
int val_2;
RF24 radio(7, 8);
const uint64_t pipe = 0xE14BC8F482LL;
int RVS = 4;
int FWARD = 5;
int LEFT = 2;
int RIGHT = 3;
int FTHROW = 6;
void setup()
{
//ativa pull-up
pinMode(5, INPUT);
digitalWrite(5, HIGH);
pinMode(2, INPUT);
digitalWrite(2, HIGH);
pinMode(4, INPUT);
digitalWrite(4, HIGH);
pinMode(3, INPUT);
digitalWrite(3, HIGH);
pinMode(6, INPUT);
digitalWrite(6, HIGH);
Serial.begin(57600);
Serial.println("NRF24L01 Transmitter");
radio.begin();
radio.openWritingPipe(pipe);
}
void loop()
{
if (digitalRead(RIGHT) == LOW)
{
Serial.println("RIGHT pressed");
DataMsg[0] = -2;
radio.write(DataMsg, 1);
}
if (digitalRead(LEFT) == LOW)
{
Serial.println("LEFT Button pressed");
DataMsg[0] = 2559;
radio.write(DataMsg, 1);
}
if (digitalRead(FWARD) == LOW)
{
Serial.println("FORWARD pressed");
DataMsg[0] = -3;
radio.write(DataMsg, 1);
}
if (digitalRead(RVS) == LOW)
{
Serial.println("REVERSE pressed");
DataMsg[0] = -5;
radio.write(DataMsg, 1);
}
if (digitalRead(FTHROW) == LOW)
{
Serial.println("FTHROWER pressed");
DataMsg[0] = -4;
radio.write(DataMsg, 1);
}
val_1 = analogRead(potpin_1), val_1 = map(val_1, 0, 1023, 0, 127), DataMsg[0] = val_1, radio.write(DataMsg, 1);
val_2 = analogRead(potpin_2), val_2 = map(val_2, 0, 1023, 128, 250), DataMsg[0] = val_2, radio.write(DataMsg, 1);
}
The negative values send data to the receiver from 251 - 255. When I only use this:
val_1 = analogRead(potpin_1), val_1 = map(val_1, 0, 1023, 0, 127), DataMsg[0] = val_1, radio.write(DataMsg, 1);
val_2 = analogRead(potpin_2), val_2 = map(val_2, 0, 1023, 128, 250), DataMsg[0] = val_2, radio.write(DataMsg, 1);
It works well with controlling the servos but when I combine them with the working buttons code, only the buttons work and I lose control of the servos