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