attiny_SPI_Server.ino 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #define BUTTON 4
  2. #include <NRF24.h>
  3. #include <SoftSpi.h>
  4. NRF24 nrf24(10,SS);
  5. uint8_t data[1], prev[1];
  6. uint8_t len[1];
  7. void setup()
  8. {
  9. pinMode(BUTTON, OUTPUT);
  10. digitalWrite(BUTTON, LOW);
  11. delay(1000);
  12. if (!nrf24.init())
  13. digitalWrite(BUTTON, HIGH);
  14. if (!nrf24.setChannel(20))
  15. digitalWrite(BUTTON, HIGH);
  16. if (!nrf24.setThisAddress((uint8_t*)"servl", 5))
  17. digitalWrite(BUTTON, HIGH);
  18. if (!nrf24.setPayloadSize(1))
  19. digitalWrite(BUTTON, HIGH);
  20. if (!nrf24.setRF(NRF24::NRF24DataRate2Mbps, NRF24::NRF24TransmitPower0dBm))
  21. digitalWrite(BUTTON, HIGH);
  22. nrf24.spiWriteRegister(NRF24_REG_06_RF_SETUP, NRF24_CONT_WAVE | NRF24_PLL_LOCK | NRF24_PWR_0dBm);
  23. if (!nrf24.powerUpRx())
  24. digitalWrite(BUTTON, HIGH);
  25. len[0] = 1;
  26. }
  27. // With printing commented and delay removed, this can achieve about 666 round trips per second
  28. void loop()
  29. {
  30. // Configure for carrier wave:
  31. if(nrf24.recv(data, len)){
  32. if(data[0]!=prev[0])
  33. digitalWrite(BUTTON, HIGH);
  34. if(data[0]==prev[0])
  35. digitalWrite(BUTTON, LOW);
  36. prev[0] = data[0];
  37. }
  38. }