Saturday, June 4, 2011

Attempt at UDP nRF2401a

Not having much luck with my TCP implementation, I decided to go back and try the UDP implementation.



#include "Nrf2401.h"

Nrf2401 Radio;
unsigned char SyncByte = 128;
long LastReceiveTime=0;

void setup(void)
{
Serial.begin(9600);
pinMode(13, OUTPUT);
randomSeed(analogRead(7)); // start the random number generator
attachInterrupt(0, messageReceived, RISING); // look for rising edges on digital pin 2
Serial.println("RC Ping");
Radio.txMode(1);

}


void loop(void)
{

//While in rxMode (1)
if (Radio.mode==1)
{
if ((millis()-LastReceiveTime)>5000)
{
Serial.println("Connection Timed Out.");
LastReceiveTime=millis();

Radio.txMode(1);
Serial.print("Attempting to Re-Send: ");
Serial.println(SyncByte,HEX);
Radio.write(SyncByte);
Radio.rxMode(1);
}
// block (or do something else) here while the radio is
// in rxMode (Radio.mode is 1 in rxMode, 0 in txMode)
}
else
{
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);

Serial.print("Sending: ");
Serial.println(SyncByte,HEX);
Radio.write(SyncByte);
delay(100);
Radio.rxMode(1);
}
}

void messageReceived(void)
{
while(Radio.available())
{
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);

Radio.read();
byte MyByte=Radio.data[0];
Serial.print("Received:");
Serial.println(MyByte,HEX);
LastReceiveTime=millis();
}
Radio.txMode(1);
delay(100);
}

No comments:

Post a Comment