Arduino NRF24LO1
У меня проблема с передатчиком (Arduino uno) и приемником (Arduino nao). Когда я trsmiting, что я получаю это:
Это мой код для приемника
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 7
#define CSN_PIN 8
const byte thisSlaveAddress[5] = {'R','x','A','A','A'};
RF24 radio(CE_PIN, CSN_PIN);
char dataReceived[10]; // это должно совпадать с dataToSend в TX
bool newData = false;
//===========
void setup() {
Serial.begin(9600);
Serial.println("Запуск Starting");
radio.begin();
radio.setDataRate( RF24_250KBPS );
radio.openReadingPipe(1, thisSlaveAddress);
radio.startListening();
}
//=============
void loop() {
getData();
showData();
}
//==============
void getData() {
if ( radio.available() ) {
radio.read( &dataReceived, sizeof(dataReceived) );
newData = true;
}
}
void showData() {
if (newData == true) {
Serial.print("Полученные данные ");
Serial.println(dataReceived);
newData = false;
}
}
и передатчик
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 7
#define CSN_PIN 8
const byte slaveAddress[5] = {'R','x','A','A','A'};
RF24 radio(CE_PIN, CSN_PIN); // Создать радио
char dataToSend[10] = "Message 0";
char txNum = '0';
unsigned long currentMillis;
unsigned long prevMillis;
unsigned long txIntervalMillis = 1000; // отправка один раз в секунду
void setup() {
Serial.begin(9600);
Serial.println("SimpleTx Starting");
radio.begin();
radio.setDataRate( RF24_250KBPS );
radio.setRetries(3,5); // delay, count
radio.openWritingPipe(slaveAddress);
}
//====================
void loop() {
currentMillis = millis();
if (currentMillis - prevMillis >= txIntervalMillis) {
send();
prevMillis = millis();
}
}
//====================
void send() {
bool rslt;
rslt = radio.write( &dataToSend, sizeof(dataToSend) );
// Всегда используйте sizeof (), так как он дает размер как количество байтов.
// Например, если dataToSend был int sizeof() будет правильно возвращать 2
Serial.print("Data Sent ");
Serial.print(dataToSend);
if (rslt) {
Serial.println(" Acknowledge received");
updateMessage();
}
else {
Serial.println(" Tx failed");
}
}
//================
void updateMessage() {
// таким образом, вы можете видеть, что новые данные передаются
txNum += 1;
if (txNum > '9') {
txNum = '0';
}
dataToSend[8] = txNum;
}
Вы видите ошибку?
@jaqb, 👍2
0
Смотрите также:
- Проблемы передачи NRF24L01 между Arduino UNO и Arduino Nano
- NRF24L01 PA+LNA с Arduino
- nRF24L01+ Невозможно установить адрес
- nrf24l01+ противоречит самому себе?
- Не вызовут ли помехи одновременно работающие радиомодули nrf24L01 ?
- Состояние цифрового вывода Arduino не передается через NRF24L01, тогда как состояние аналогового вывода передается, почему?
- Использую передатчик + Arduino *Uno*..и приемник + arduino *nano* будет ли это работать?
- Код правильный? Nrf24l01