SHARE
TWEET

Untitled

a guest Oct 15th, 2014 37 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * Project: nRF905 AVR/Arduino Library/Driver
  3.  * Author: Zak Kemble, contact@zakkemble.co.uk
  4.  * Copyright: (C) 2013 by Zak Kemble
  5.  * License: GNU GPL v3 (see License.txt)
  6.  * Web: http://blog.zakkemble.co.uk/nrf905-avrarduino-librarydriver/
  7.  */
  8.  
  9. /*
  10.  * Wait for data and reply.
  11.  *
  12.  * 7 -> CE
  13.  * 8 -> PWR
  14.  * 9 -> TXE
  15.  * 2 -> CD
  16.  * 3 -> DR
  17.  * 10 -> CSN
  18.  * 12 -> SO
  19.  * 11 -> SI
  20.  * 13 -> SCK
  21.  */
  22.  
  23. #include <nRF905.h>
  24. #include <SPI.h>
  25.  
  26. #define RXADDR {0x58, 0x6F, 0x2E, 0x10} // Address of this device (4 bytes)
  27. #define TXADDR {0xFE, 0x4C, 0xA6, 0xE5} // Address of device to send to (4 bytes)
  28.  
  29. void setup()
  30. {
  31.         // Start up
  32.         nRF905_init();
  33.        
  34.         // Set address of this device
  35.         byte addr[] = RXADDR;
  36.         nRF905_setRXAddress(addr);
  37.  
  38.         // Put into receive mode
  39.         nRF905_receive();
  40.  
  41.         Serial.begin(9600);
  42.  
  43.         Serial.println(F("Server started"));
  44. }
  45.  
  46. void loop()
  47. {
  48.         Serial.println(F("Waiting for ping..."));
  49.  
  50.         // Make buffer for data
  51.         byte buffer[NRF905_MAX_PAYLOAD];
  52.  
  53.         // Wait for data
  54.         while(!nRF905_getData(buffer, sizeof(buffer)));
  55.  
  56.         Serial.println(F("Got ping"));
  57.  
  58.         // Set address of device to send to
  59.         byte addr[] = TXADDR;
  60.         nRF905_setTXAddress(addr);
  61.  
  62.         // Set payload data (reply with data received)
  63.         nRF905_setData(buffer, sizeof(buffer));
  64.        
  65.         Serial.println(F("Sending reply..."));
  66.  
  67.         // Send payload (send fails if other transmissions are going on, keep trying until success)
  68.         while(!nRF905_send());
  69.  
  70.         // Put back into receive mode
  71.         nRF905_receive();
  72.  
  73.         Serial.println(F("Reply sent"));
  74.  
  75.         // Print out ping contents
  76.         Serial.print(F("Data: "));
  77.         Serial.write(buffer, sizeof(buffer));
  78.         Serial.println();
  79.  
  80.        
  81.         // Read config
  82.         byte config[10];
  83.         memset(config, 0, sizeof(config));
  84.        
  85.         digitalWrite(CSN, LOW);
  86.         SPI.transfer(NRF905_CMD_R_CONFIG);
  87.  
  88.         for(uint8_t i=0;i<sizeof(config);i++)
  89.                 config[i] = SPI.transfer(NRF905_CMD_NOP);
  90.  
  91.         digitalWrite(CSN, HIGH);
  92.        
  93.         // Print out config
  94.         Serial.println("CONFIG: ");
  95.         for(uint8_t i=0;i<sizeof(config);i++)
  96.         {
  97.                 Serial.print(config[i], HEX);
  98.                 Serial.print(' ');
  99.         }
  100.         Serial.println();
  101. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top