По сути, у меня есть два nRF24 с антеннами, и я пытаюсь заставить их общаться.
Передатчик подключен к сольному atmega328p с внешними часами 16 МГц, приемник на плате Arduino UNO. Это код для передатчика, на выводе 8 у меня есть светодиод, который мигает каждую секунду.
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7,8); //CE - CSN
const byte address[6] = "00001"; //Pipe
void setup() {
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MAX);
radio.setDataRate(RF24_250KBPS);
radio.stopListening();
}
void loop() {
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(1000);
const char text[] = "nrftest";
radio.write(&text, sizeof(text));
}
А вот код для получателя:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7,8); //CE - CSN
const int led1 = 5;
const int led2 = 3;
const byte address[6] = "00001";
void setup() {
// put your setup code here, to run once:
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
radio.begin();
radio.openReadingPipe(1,address);
radio.setPALevel(RF24_PA_MAX);
radio.setDataRate(RF24_250KBPS);
radio.startListening();
}
void loop() {
char text[32] = "";
String transData = "Yolo";
if (radio.available()) {
radio.read(&text, sizeof(text));
transData = String(text);
if (transData == "nrftest") {
digitalWrite(led1, HIGH);
delay(500);
digitalWrite(led1, LOW);
delay(500);
}
else{
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led2, LOW);
delay(500);
}
}
}
Теперь вот что происходит:
1) Когда я включаю приемник, но индикатор передатчика 2 не начинает мигать, поэтому radio.available () == true, это первое, что я не понимаю;
2) При включении питания передатчик тоже светодиод2 перестает мигать и ничего не происходит;
3) Led1 (сообщение успешно) никогда не мигает;
Может ли кто-нибудь помочь мне заставить их общаться должным образом и объяснить, что происходит? Большое спасибо.
Это схемы, я знаю, что это довольно плохо, но я не смог найти другое программное обеспечение, извините:
Передатчик слева, Приемник справа