Hello there,
I've written a code to send a number from an arduino nano to an arduino uno. The number will always be a whole number and will be between 1-48. I cant seem to get the nrf units to talk to eachother. Ive been through example codes, multiple libraries and the nrf guide on here with no avail.
Here is the code that takes care of the TX:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8);
const byte rxAddr[6] = "96920";
int data[1];
//devices
int vibe = 4;
int fire = 3;
int select = 2;
int mode = 5;
int fled = 6;
int lsw = 9;
int laser = 10;
//variables
int total = 12;
int fval = 0;
int charge = 0;
int mval = 0;
int lsval = 0;
int sval = 0;
void setup()
{
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(rxAddr);
radio.stopListening();
pinMode(vibe, OUTPUT);
pinMode(fire, INPUT);
digitalWrite(fire, HIGH);
pinMode(select, INPUT);
pinMode(mode, INPUT);
pinMode(fled, OUTPUT);
pinMode(lsw, INPUT);
pinMode(laser, OUTPUT);
digitalWrite(vibe, LOW);
digitalWrite(fled, LOW);
digitalWrite(laser, LOW);
delay(200);
digitalWrite(vibe, HIGH);
digitalWrite(fled, HIGH);
//digitalWrite(laser, HIGH);
delay(200);
digitalWrite(vibe, LOW);
digitalWrite(fled, LOW);
digitalWrite(laser, LOW);
delay(200);
digitalWrite(vibe, HIGH);
digitalWrite(fled, HIGH);
// digitalWrite(laser, HIGH);
delay(200);
digitalWrite(vibe, LOW);
digitalWrite(fled, LOW);
digitalWrite(laser, LOW);
delay(200);
}
void loop() {
rs();
sval = digitalRead(select);
Serial.print("Select: ");
Serial.println(sval);
if (sval == 1) {
charge = ++charge;
sv();
}
Serial.print("Charge: ");
Serial.println(charge);
if (charge >= (total + 1) && charge != 86) {
charge = 1;
}
fval = digitalRead(fire);
Serial.print("Fire: ");
Serial.println(fval);
if (fval == 1) {
detonate();
}
delay(50);
}
void rs() {
mval = digitalRead(mode);
lsval = digitalRead(lsw);
Serial.print("Mode: ");
Serial.println(mval);
Serial.print("Laser: ");
Serial.println(lsval);
if (mval == 1) {
charge = 86;
}
}
void detonate() {
data[0] = charge;
radio.write(&data, sizeof(data));
Serial.print("Firing: ");
Serial.println(charge);
digitalWrite(vibe, HIGH);
digitalWrite(fled, HIGH);
if (lsval == 1) {
digitalWrite(laser, HIGH);
}
delay(200);
digitalWrite(vibe, LOW);
digitalWrite(fled, LOW);
// delay(200);
digitalWrite(laser, LOW);
charge = ++charge;
}
void sv() {
if (charge > total) {
digitalWrite(vibe, HIGH);
delay(350);
digitalWrite(vibe, LOW);
delay(50);
digitalWrite(vibe, HIGH);
delay(350);
digitalWrite(vibe, LOW);
return;
}
int i = 0;
while (i < charge) {
digitalWrite(vibe, HIGH);
delay(150);
digitalWrite(vibe, LOW);
delay(100);
i = ++i;
}
}
and for now all i am trying to do with the RX is display the number in the serial window
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); // CE, CSN
const byte rxAddr[6] = "96920";
int data[1];
void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, rxAddr);
radio.startListening();
}
void loop() {
if (radio.available()) {
radio.read( &data, sizeof(data));
//Serial.println(data);
int val = data;
Serial.println(val);
}
}
Any help would be greatly appreciated.