Здравствуйте!
Всю голову сломал, заставляя спарится nrf+arduino и esp+nrf.
В одно время заработало, рано радовался. Выключил питание на первом передатчике включил другой передатчик. Ничего не передается, включил обратно первый, рабочий, тоже не передается. они такие капризные?! Провода и настройки не трогал.
/*
Пример работы клиента
*/
/**
*
* Pins:
* Hardware SPI:
* MISO -> 12
* MOSI -> 11
* SCK -> 13
*
* Configurable:
* CE -> 8
* CSN -> 7
*
*/
/* Arduino Sparkfun WRL-00691
* 3V3 or 5V----VCC (3.3V to 7V in)
* pin D8-----------CE (chip enable in)
* SS pin D10----------CSN (chip select in)
* SCK pin D13----------SCK (SPI clock in)
* MOSI pin D11----------SDI (SPI Data in)
* MISO pin D12----------SDO (SPI data out)
* IRQ (Interrupt output, not connected)
* GND----------GND (ground in)
and initialise the NRF24 object like this to explicitly set the SS pin NRF24 nrf24(8, 10);
*/
#define chclient 1 // номер клиента 1...
#define timesend 300 // интервал отправки данных,для обычных датчиков можно установить время выше.
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
unsigned long time1=0;
unsigned long time2=0;
//
// Set up nRF24L01 radio on SPI bus plus pins 9 & 10
RF24 radio(8,10);
//
// 0 -прием , 1 -передача
const uint64_t pipes[2] = {0xF0F0F0F0E1LL,0xF0F0F0F0D2LL};
//
// структура отправляемых данных.Изменяемые данные.Размер структуры должен быть не больше 32 байт !
typedef struct{
byte identifier;// номер передатчика.МЕНЯТЬ НЕЛЬЗЯ
int Analog;
boolean test_data;
unsigned int Error_Message; // счетчик ошибок
unsigned long count;// счетчик передач для контроля качества канала
}
nf1;
nf1 clientnf;
void setup() {
radio.begin();
Serial.begin(9600);
// выбор скорости
radio.setDataRate(RF24_250KBPS);
//radio.setDataRate(RF24_1MBPS);
// radio.setDataRate(RF24_2MBPS);
radio.setPALevel(RF24_PA_MAX);
radio.setChannel(100); //тут установка канала
radio.setCRCLength(RF24_CRC_16);
// radio.setAutoAck(false); // выключить аппаратное потверждение
radio.setRetries(15,15);
radio.openWritingPipe(pipes[1]); // Открываем канал передачи
//radio.openReadingPipe(1,pipes[0]); // Открываем канал приема
clientnf.identifier = chclient;
}
byte errorstate;
void loop() {
//---------------------------------для чтения сенсоров--------------------------
if ((millis()-time1) >= 1000) { // обновляем сенсоры раз в секунду (1000млс)
// тут будут опросы сенсоров
clientnf.Analog=analogRead(0); //пример передачи int данных
Serial.println (analogRead(0));
time1 = millis();
}
//************************************************************************************************/
if ((millis() - time2) >= timesend) {
radio.stopListening();
bool ok = radio.write( &clientnf, sizeof(clientnf) );
Serial.println ("Otpravil");
radio.startListening();
time2 = millis();
}
} // конец loopпомогите советом