I have tried to get the radio and card to work for days. Can someone PLEASE HELP ! Here is a sample
#include <SPI.h>
#include <SD.h>
#include <SPI.h>
#include <mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
//boolean b = 0;
byte thisChar[16]; // incoming wireless data
// On the Ethernet Shield, CS is pin 4. Note that even if it's not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.
const int chipSelect = SS;
int data[16];
File dataFile;
void setup()
{
Mirf.cePin = 8;
Mirf.csnPin = 7;
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("Initializing SD card...");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
while (1) ;
}
Serial.println("card initialized.");
// Open up the file we're going to log to!
dataFile = SD.open("datalog.txt", FILE_WRITE);
if (! dataFile) {
Serial.println("error opening datalog.txt");
// Wait forever since we cant write data
while (1) ;
}
delay(50);
Mirf.spi = &MirfHardwareSpi;
/*
- Setup pins / SPI.
*/
Mirf.init();
/*
- Configure reciving address.
*/
Mirf.setRADDR((byte *)"serv1");
/*
- Set the payload length to sizeof(unsigned long) the
- return type of millis().
- NB: payload on client and server must be the same.
*/
Mirf.payload = sizeof(int);
data[Mirf.payload];
/*
- Write channel and payload config then power up reciver.
*/
Mirf.config();
Serial.println("Listening...");
}
void loop()
{
delay(50);
data[Mirf.payload];
/*
- If a packet has been recived.
- isSending also restores listening mode when it
- transitions from true to false.
*/
// Mirf.send(data);
if(!Mirf.isSending() && Mirf.dataReady()){
Serial.println("Got packet");
//Mirf.send(data);
/*
- Get load the packet into the buffer.
*/
Mirf.getData((byte *)&data);
Serial.println(thisChar[16]);
// make a string for assembling the data to log:
String dataString = "";
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}
dataFile.println(dataString);
// print to the serial port too:
Serial.println(dataString);
// The following line will 'save' the file to the SD card after every
// line of data - this will use more power and slow down how much data
// you can read but it's safer!
// If you want to speed up the system, remove the call to flush() and it
// will save the file only every 512 bytes - every time a sector on the
// SD card is filled with data.
dataFile.flush();
}
// Take 1 measurement every 500 milliseconds
delay(50);
}