Retransmitter.ino 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * Demo for RF remote switch receiver.
  3. * For details, see NewRemoteReceiver.h!
  4. *
  5. * Connect the transmitter to digital pin 11, and the receiver to digital pin 2.
  6. *
  7. * When run, this sketch waits for a valid code from a new-style the receiver,
  8. * decodes it, and retransmits it after 5 seconds.
  9. */
  10. #include <NewRemoteReceiver.h>
  11. #include <NewRemoteTransmitter.h>
  12. void setup() {
  13. // See example ShowReceivedCode for info on this
  14. NewRemoteReceiver::init(0, 2, retransmitter);
  15. }
  16. void loop() {
  17. }
  18. void retransmitter(NewRemoteCode receivedCode) {
  19. // Disable the receiver; otherwise it might pick up the retransmit as well.
  20. NewRemoteReceiver::disable();
  21. // Need interrupts for delay()
  22. interrupts();
  23. // Wait 5 seconds before sending.
  24. delay(5000);
  25. // Create a new transmitter with the received address and period, use digital pin 11 as output pin
  26. NewRemoteTransmitter transmitter(receivedCode.address, 11, receivedCode.period);
  27. if (receivedCode.switchType == NewRemoteCode::dim ||
  28. (receivedCode.switchType == NewRemoteCode::on && receivedCode.dimLevelPresent)) {
  29. // Dimmer signal received
  30. if (receivedCode.groupBit) {
  31. transmitter.sendGroupDim(receivedCode.dimLevel);
  32. }
  33. else {
  34. transmitter.sendDim(receivedCode.unit, receivedCode.dimLevel);
  35. }
  36. }
  37. else {
  38. // On/Off signal received
  39. bool isOn = receivedCode.switchType == NewRemoteCode::on;
  40. if (receivedCode.groupBit) {
  41. // Send to the group
  42. transmitter.sendGroup(isOn);
  43. }
  44. else {
  45. // Send to a single unit
  46. transmitter.sendUnit(receivedCode.unit, isOn);
  47. }
  48. }
  49. NewRemoteReceiver::enable();
  50. }