看各位大神玩NRF2401挺好玩的,所以就敗了一組回來玩玩看,我用RF24的範例做兩個NRF2401的傳輸,但是有發現一個問題,在正常傳輸下,按下主機的RESET後,從機可以很快的連上,但是按下從機的RESET後,卻要花上7~9秒才會處理主機發來的信號,我有嘗試過將IRQ的引腳拉低,也做過延遲時間,狠了狠心也試過兩個對調,但是好像沒什麼作用,請教各位大神有辦法讓這個情況改善嗎?我該從哪個地方去著手,也看過有人說要將FIFO清空,也順便請教各問論壇的大神們,怎麼做最基本的清空動作?
特別貼上影片,我的板子~~
http://v.youku.com/v_show/id_XNjk2NDk5MDUy.html
也試過這個外國人的作法,也如法炮製的修修改改....結果~~跟沒改過的狀況一樣
http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
ORZ 在Arduino前一個禮拜的新手......
使用器材
arduino UNR R3*2
NRF2401 *2
使用庫
RF24
RF24Network
因為改完後跟原版一樣...所以貼上原稿
(自己修修改改的程式碼,改得比阿拉伯文還要看不懂.....索性貼上原稿 )
//////////////////////////////////////主機-發送信號/////////////////////////////////////
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
// nRF24L01(+) radio attached using Getting Started board
RF24 radio(9,10);
// Network uses that radio
RF24Network network(radio);
// Address of our node
const uint16_t this_node = 1;
// Address of the other node
const uint16_t other_node = 0;
// How often to send 'hello world to the other unit
const unsigned long interval = 150; //ms
// When did we last send?
unsigned long last_sent;
// How many have we sent already
//unsigned long packets_sent;
// Structure of our payload
struct payload_t
{
uint32_t ms;
uint32_t sensorDataA;
uint32_t sensorDataB;
};
boolean power_SW;
int led_VOL;
void setup(void)
{
Serial.begin(115200);
Serial.println("RF24Network/examples/helloworld_tx/");
SPI.begin();
radio.begin();
radio.setDataRate( RF24_250KBPS ) ;
network.begin(/*channel*/ 50, /*node address*/ this_node);
randomSeed(analogRead(0));
pinMode(7,INPUT_PULLUP);
}
void loop(void)
{
power_SW=!digitalRead(7);
led_VOL=analogRead(A0)/4;
// Pump the network regularly
network.update();
// If it's time to send a message, send it!
unsigned long now = millis();
if ( now - last_sent >= interval )
{
last_sent = now;
Serial.print("power_SW:");
Serial.println(power_SW);
Serial.print("led_VOL:");
Serial.println(led_VOL);
Serial.print("Sending...");
payload_t payload = {
millis(),power_SW,led_VOL };
RF24NetworkHeader header(/*to node*/ other_node);
bool ok = network.write(header,&payload,sizeof(payload));
if (ok)
Serial.println("ok.");
else
Serial.println("failed.");
}
}
//////////////////////////////////////從機-接收信號/////////////////////////////////////
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
// nRF24L01(+) radio attached using Getting Started board
RF24 radio(9,10);
// Network uses that radio
RF24Network network(radio);
// Address of our node
const uint16_t this_node = 0;
// Address of the other node
const uint16_t other_node = 1;
// Structure of our payload
struct payload_t
{
uint32_t ms;
uint32_t sensorDataA;
uint32_t sensorDataB;
};
#define power_PIN 5
#define led_PIN 6
boolean power_SW;
int led_VOL;
void setup(void)
{
Serial.begin(115200);
SPI.begin();
radio.begin();
radio.setDataRate( RF24_250KBPS ) ;
network.begin(/*channel*/ 50, /*node address*/ this_node);
pinMode(power_PIN,OUTPUT);
pinMode(led_PIN,OUTPUT);
}
void loop(void)
{
// Pump the network regularly
network.update();
// Is there anything ready for us?
while ( network.available() )
{
// If so, grab it and print it out
RF24NetworkHeader header;
payload_t payload;
network.read(header,&payload,sizeof(payload));
power_SW=payload.sensorDataA;
led_VOL=payload.sensorDataB;
Serial.print("power_SW:");
Serial.println(power_SW);
Serial.print("led_VOL:");
Serial.println(led_VOL);
}
digitalWrite(power_PIN,power_SW);
analogWrite(led_PIN,led_VOL);
}
|