Guest User

Untitled

a guest
Oct 5th, 2018
191
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. * Project: nRF905 AVR/Arduino Library/Driver (Low power ping server example)
  3. * Author: Zak Kemble, contact@zakkemble.co.uk
  4. * Copyright: (C) 2017 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. * Low power ping server
  11. *
  12. * Similar to the pin server example
  13. * Output power is set to the lowest setting, receive sensitivity is lowered.
  14. *
  15. * 7 -> CE
  16. * 8 -> PWR
  17. * 9 -> TXE
  18. * 4 -> CD
  19. * 3 -> DR
  20. * 2 -> AM
  21. * 10 -> CSN
  22. * 12 -> SO
  23. * 11 -> SI
  24. * 13 -> SCK
  25. */
  26.  
  27. #include <nRF905.h>
  28. #include <Servo.h>
  29.  
  30. #define RXADDR 0x586F2E10 // Address of this device
  31. #define TXADDR 0xFE4CA6E5 // Address of device to send to
  32.  
  33. #define PACKET_NONE 0
  34. #define PACKET_OK 1
  35. #define PACKET_INVALID 2
  36.  
  37. int servoPin = 6;
  38.  
  39. Servo servo;
  40.  
  41. int servoAngle = 0;
  42.  
  43. static volatile uint8_t packetStatus;
  44.  
  45. void NRF905_CB_RXCOMPLETE(void)
  46. {
  47. packetStatus = PACKET_OK;
  48. nRF905_standby();
  49. }
  50.  
  51. void NRF905_CB_RXINVALID(void)
  52. {
  53. packetStatus = PACKET_INVALID;
  54. nRF905_standby();
  55. }
  56.  
  57. void setup()
  58. {
  59. Serial.begin(115200);
  60. servo.attach(servoPin);
  61. Serial.println(F("Server started"));
  62.  
  63. pinMode(A5, OUTPUT); // LED
  64.  
  65. // Start up
  66. nRF905_init();
  67.  
  68. // Set address of this device
  69. nRF905_setListenAddress(RXADDR);
  70.  
  71. // Lowest transmit level -10db
  72. nRF905_setTransmitPower(NRF905_PWR_n10);
  73.  
  74. // Reduce receive sensitivity to save a few mA
  75. nRF905_setLowRxPower(NRF905_LOW_RX_ENABLE);
  76.  
  77. // Put into receive mode
  78. nRF905_RX();
  79. }
  80.  
  81. void loop() // Loop > while / if
  82. {
  83. static uint32_t pings;
  84. static uint32_t invalids;
  85. static uint32_t volts;
  86.  
  87. Serial.println(F("---- Incoming Message ----"));
  88.  
  89. // Wait for data
  90. while(packetStatus == PACKET_NONE);
  91.  
  92. if(packetStatus != PACKET_OK)
  93. {
  94. invalids++;
  95. Serial.println(F("Invalid packet! Appox on Thee!"));
  96. //Serial.println("Haven't seen this one yet");
  97. packetStatus = PACKET_NONE;
  98. nRF905_RX();
  99. }
  100. else // this is what it should do when it works properly
  101. {
  102. pings++;
  103. packetStatus = PACKET_NONE;
  104.  
  105. // Make buffer for data
  106. uint8_t buffer[NRF905_MAX_PAYLOAD];
  107. nRF905_read(buffer, sizeof(buffer));
  108.  
  109. Serial.println(F("Ten 4, sending reply..."));
  110.  
  111. // Send back the data, once the transmission has completed go into receive mode
  112. while(!nRF905_TX(TXADDR, buffer, sizeof(buffer), NRF905_NEXTMODE_RX));
  113.  
  114. Serial.println(F("Reply sernt"));
  115.  
  116. // Toggle LED
  117. static uint8_t ledState;
  118. digitalWrite(A5, ledState ? HIGH : LOW);
  119. ledState = !ledState;
  120. // char cats = (buffer, sizeof(buffer));
  121. int cats; // Print out ping contents
  122. Serial.print(F("Data from serrrver: "));
  123. Serial.write(buffer, sizeof(buffer));
  124. FFF = Serial.write(buffer, sizeof(buffer));
  125. Serial.println();
  126. Serial.println("cats >>>");
  127. Serial.println(cats);
  128. // servo.write(buffer, sizeof(buffer));
  129. delay(500);
  130. // servo.write(20);
  131. // delay(1000);
  132.  
  133. }
  134.  
  135. // Pings & invalids
  136.  
  137. // Serial.print(F("Totals: "));
  138. // Serial.print(pings);
  139. // Serial.print(F(" Pings, "));
  140. // Serial.print(invalids);
  141. // Serial.println(F(" Invalid"));
  142. //Serial.println(F("------"));
  143.  
  144.  
  145.  
  146. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×