hey yall
so ive been working on a rc tank project. the issue is that the radio.write for the nrf24l01 causes the code not to run. if i remove the radio.write the code runs fine except i cant transmit. ive double and triple checked connections and have tried 5-6 different modules and same result. even a generic hello world code doesnt run. cant check if radio.read has same issue since cant send data.
ive verified that the 2 switches and the pot are being read via serial monitor, but as soon as i load code with radio.write monitor doesnt display anything even if doing a serial print before the radio write
controller code
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
RF24 radio(9, 8);
byte address[6] = "00001";
byte pos1 = 2;
byte pos2 = 3;
byte pos3 = 4;
byte pos4 = 5;
int pot = A0;
void setup() {
pinMode(pos1, INPUT_PULLUP);
pinMode(pos2, INPUT_PULLUP);
pinMode(pos3, INPUT_PULLUP);
pinMode(pos4, INPUT_PULLUP);
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MAX);
radio.stopListening();
delay(100);
}
void loop() {
int spd = analogRead(pot);
spd = map(spd, 0, 1023, 0, 254);
byte state1 = digitalRead(pos1);
byte state2 = digitalRead(pos2);
byte state3 = digitalRead(pos3);
byte state4 = digitalRead(pos4);
radio.write(&spd, sizeof(spd));
radio.write(&state1, sizeof(state1));
radio.write(&state2, sizeof(state2));
radio.write(&state3, sizeof(state3));
radio.write(&state4, sizeof(state4));
Serial.println(spd);
Serial.println(state4);
Serial.println(state3);
Serial.println(state2);
Serial.println(state1);
}
tank code
#include <SPI.h>
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
RF24 radio(4, 5);
byte address[6] = "00001";
int m1 = 6; // motor 1 enable
int in1 = 8; // motor 1 input 1
int in2 = 7; // motor 1 input 2
int m2 = 5; // motor 2 enable
int in3 = 6; // motor 2 input 1
int in4 = 12; // motor 2 input 2
void setup() {
pinMode(m1, OUTPUT); // set pin as output
pinMode(in1, OUTPUT); // set pin as output
pinMode(in2, OUTPUT); // set as output
pinMode(m2, OUTPUT); // set as output
pinMode(in3, OUTPUT); // set as output
pinMode(in4, OUTPUT); // SET AS output
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MAX);
radio.startListening();
delay(100);
}
void loop() {
byte state1;
byte state2;
byte state3;
byte state4;
int spd;
if (radio.available()) {
radio.read(&state1, sizeof(state1));
radio.read(&state2, sizeof(state2));
radio.read(&spd, sizeof(spd));
radio.read(&state3, sizeof(state3));
radio.read(&state4, sizeof(state4));
Serial.println(spd);
}
if (state1 == LOW && state2 == HIGH) { // if swith in forward postion run motor forward a set speed
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(m1, spd); // set motor 1
}
if (state2 == LOW && state1 == HIGH) { // if switch in rear position run motor backwards at set speed
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(m1, spd);
}
if (state1 == HIGH && state2 == HIGH) {
analogWrite(m1, 0);
}
if (state3 == LOW && state4 == HIGH){
analogWrite(m2, spd);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
if (state3 == HIGH && state4 == LOW){
analogWrite(m2, spd);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
if (state3 == HIGH && state4 == HIGH){
analogWrite(m2, 0);
}
}