What is auto-acknowledge? ill pin my code here and tell me if I have it, and if so what part that is.
RX(car)
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 3
#define CSN_PIN 4
const byte address[5] = {'R', 'x', 'A', 'A', 'A'};
RF24 radio(CE_PIN, CSN_PIN);
bool newData = false;
int text;
int m11 = 9;
int m12 = 8;
int m21 = 7;
int m22 = 6;
int en1 = 10;
int en2 = 5;
void setup() {
Serial.begin(9600);
Serial.println("SimpleRx Starting");
radio.begin();
radio.setDataRate( RF24_250KBPS );
radio.setPALevel(RF24_PA_LOW);
radio.openReadingPipe(1, address);
radio.startListening();
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(5, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
analogWrite(en1, 255);
analogWrite(en2, 255);
}
void loop() {
if ( radio.available() ) {
radio.read( &text, sizeof(text) );
newData = true;
}
//else if (!radio.available()) {
// text = 0;
// Serial.print ("unav");
// }
if (newData == true) {
//Serial.print("Data received ");
//Serial.println(text);
newData = false;
}
// Serial.print(millis());
switch (text) {
case 1 : // Forward
digitalWrite(m11, HIGH);
digitalWrite(m12, LOW);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
break;
case 2 : //backward
digitalWrite(m11, LOW);
digitalWrite(m12, HIGH);
digitalWrite(m21, LOW);
digitalWrite(m22, HIGH);
break;
case 3 : //left
digitalWrite(m11, LOW);
digitalWrite(m12, HIGH);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
break;
case 4 : //right
digitalWrite(m11, HIGH);
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, HIGH);
break;
case 5 : //forward right
digitalWrite(m11, HIGH);
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
break;
case 6 : //forward left
digitalWrite(m11, LOW);
digitalWrite(m12, LOW);
digitalWrite(m21, HIGH);
digitalWrite(m22, LOW);
break;
case 7 : //backward right
digitalWrite(m11, LOW);
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, HIGH);
break;
case 8 : //backward left
digitalWrite(m11, LOW);
digitalWrite(m12, HIGH);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
break;
case 0 : //nothing
digitalWrite(m11, LOW);
digitalWrite(m12, LOW);
digitalWrite(m21, LOW);
digitalWrite(m22, LOW);
break;
}
// Serial.print(" ");
// Serial.println(millis());
}
TX(remote)
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 9
#define CSN_PIN 10
const byte address[5] = {'R', 'x', 'A', 'A', 'A'};
RF24 radio(CE_PIN, CSN_PIN);
unsigned long currentMillis;
unsigned long prevMillis;
unsigned long txIntervalMillis = 50; // send once per second
int text = 0;
int rlt;
int bu = 7;
int bd = 8;
int bl = 6;
int br = 5;
void setup() {
Serial.begin(9600);
Serial.println("SimpleTx Starting");
radio.begin();
radio.setDataRate( RF24_250KBPS );
radio.setPALevel(RF24_PA_LOW);
// radio.setRetries(3, 5); // delay, count
radio.openWritingPipe(address);
pinMode(bu, INPUT_PULLUP);
pinMode(bd, INPUT_PULLUP);
pinMode(bl, INPUT_PULLUP);
pinMode(br, INPUT_PULLUP);
}
void loop() {
if (digitalRead(bu) == 1 && digitalRead(bd) == 1 && digitalRead(bl) == 1 && digitalRead(br) == 1) {
//Serial.println("0, nothing");
text = 0;
} else if (digitalRead(bu) == 0 && digitalRead(bd) == 1 && digitalRead(bl) == 1 && digitalRead(br) == 1) {
//Serial.println("1, forward");
text = 1;
} else if (digitalRead(bu) == 1 && digitalRead(bd) == 0 && digitalRead(bl) == 1 && digitalRead(br) == 1) {
//Serial.println("2, backward");
text = 2;
} else if (digitalRead(bu) == 1 && digitalRead(bd) == 1 && digitalRead(bl) == 0 && digitalRead(br) == 1) {
//Serial.println("3, left");
text = 3;
} else if (digitalRead(bu) == 1 && digitalRead(bd) == 1 && digitalRead(bl) == 1 && digitalRead(br) == 0) {
//Serial.println("4, right");
text = 4;
} else if (digitalRead(bu) == 0 && digitalRead(bd) == 1 && digitalRead(bl) == 1 && digitalRead(br) == 0) {
//Serial.println("5, forward right");
text = 5;
} else if (digitalRead(bu) == 0 && digitalRead(bd) == 1 && digitalRead(bl) == 0 && digitalRead(br) == 1) {
//Serial.println("6, forward left");
text = 6;
} else if (digitalRead(bu) == 1 && digitalRead(bd) == 0 && digitalRead(bl) == 1 && digitalRead(br) == 0) {
//Serial.println("7, backward right");
text = 7;
} else if (digitalRead(bu) == 1 && digitalRead(bd) == 0 && digitalRead(bl) == 0 && digitalRead(br) == 1) {
//Serial.println("8, backward left");
text = 8;
}
currentMillis = millis();
if (currentMillis - prevMillis >= txIntervalMillis) {
bool rslt;
rslt = radio.write( &text, sizeof(text) );
Serial.println(text);
if (rslt) {
rlt = 0;
}
else {
rlt = 1;
}
prevMillis = millis();
}
}
one more question, I want to make a failsafe, so if the radio loses connection i want the 'text' variable on the rx to go to zero... I tried to do "!radio.available()" , but it didnt work. Help on this too