8b731f00a0d183c543c32bf1c5a007a5ee9e9c11
[Arduino] / RF433_Sockets / RF433_Sockets.ino
1 /*
2   Example for receiving wirelss signals and sending them out based on serial input
3
4   Based on examples from RC-Swtich which this sketch uses
5   
6   http://code.google.com/p/rc-switch/
7 */
8
9 #include <RCSwitch.h>
10
11 RCSwitch mySwitch = RCSwitch();
12
13 void setup() {
14   Serial.begin(9600);
15   mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
16   
17   mySwitch.enableTransmit(10); // with sender wired in receiving doesn't work, pin #10
18
19   Serial.print("press buttons on remote or send AB where A = socket (0..9), B = state (0 = off, 1 = on)\n");
20 }
21
22 int serial_pos = 0;
23 char serial_data[2]; // socket (0-9), state (0-1)
24
25 void loop() {
26   if (mySwitch.available()) {
27     output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
28     mySwitch.resetAvailable();
29   }
30   if (Serial.available() > 0) {
31      char input = Serial.read();
32      if ( input >= 0x30 && input <= 0x39 ) {
33        input = input - 0x30; // ASCII to number
34        serial_data[serial_pos++] = input;
35      } else {     
36        Serial.print("ignore: ");
37        Serial.println(input, HEX);
38      }
39      
40      if ( serial_pos == 2 ) {
41        Serial.print("socket: ");
42        Serial.print(serial_data[0], DEC);
43        Serial.print(" state: ");
44        Serial.println(serial_data[1] ? "on" : "off");
45        serial_pos = 0;
46        if ( serial_data[1] ) { // on
47          switch ( serial_data[0] ) {
48          case 1:
49            mySwitch.send("110101010111010000001100");
50            break;
51          case 2:
52            mySwitch.send("110101010111010000001100");
53            break;
54          case 3:
55            mySwitch.send("110101010101110000001100");
56            break;
57          default:
58            Serial.print("invalid switch on number ");
59            Serial.println(serial_data[0], DEC);
60          }
61        } else { // off
62          switch ( serial_data[0] ) {
63          case 1:
64            mySwitch.send("110101011101010000000011");
65            break;
66          case 2:
67            mySwitch.send("110101010111010000000011");
68            break;
69          case 3:
70            mySwitch.send("110101010101110000000011");
71            break;
72          default:
73            Serial.print("invalid switch off number ");
74            Serial.println(serial_data[0], DEC);
75          }
76        }
77      }
78   }
79 }