Merge branch 'master' of mjesec.ffzg.hr:/git/Arduino
[Arduino] / rpi_promini / rpi_promini.ino
index e3202b5..d1395e4 100644 (file)
@@ -14,7 +14,7 @@
            8    DHT22
            10   433Mhz send
            11   DS18B20
-           12   513Mhz send
+           12   315Mhz send
            13   status LED
            
 */
@@ -31,17 +31,19 @@ OneWire oneWire(11);
 DallasTemperature sensors(&oneWire);
 
 
-// 513Mhz light sockets
+// 315Mhz light sockets
 #define TX_PIN 12
 #define LED_PIN 13
+#define LED_ON  digitalWrite(LED_PIN, HIGH);
+#define LED_OFF digitalWrite(LED_PIN, LOW);
 
 int int_0 = 300; // ms
 int int_1 = 900; // ms
 int wait  = 2000; // ms
-int repeat = 5; // times
+int repeat = 20; // times (5 times seem a little low for sensors which are more than 10m away)
 
-void send_513(char *code) {
-  Serial.print("send 513Mhz ");
+void send_315(char *code) {
+  Serial.print("send 315Mhz ");
   Serial.println(code);
   
   // we have to send same signal at least two times
@@ -62,10 +64,11 @@ void send_513(char *code) {
       delayMicroseconds(i2);
     }
 
+    digitalWrite(LED_PIN, LOW);
+
     delayMicroseconds(wait); // guess
   }
 
-  digitalWrite(LED_PIN, LOW);
 }
 
 
@@ -94,7 +97,7 @@ void setup() {
 
 int serial_pos = 0;
 char serial_data[2]; // socket (0-9), state (0-1)
-char binary_data[24];
+char binary_data[32];
 
 void loop() {
   if (mySwitch.available()) {
@@ -120,15 +123,24 @@ void loop() {
        Serial.readBytesUntil('\n', binary_data, sizeof(binary_data));
        Serial.print("# send B");
        Serial.println( binary_data );
+       LED_ON
        mySwitch.send( binary_data );
+       LED_OFF
+     } else
+
+     if ( input == 'R' ) {
+       Serial.readBytesUntil('\n', binary_data, sizeof(binary_data));
+       Serial.print("# send 315 binary ");
+       Serial.println( binary_data );
+       send_315( binary_data );
      } else
 
-    // light sockets at 513 Mhz
+    // light sockets at 315 Mhz
      if (input == 'a') {
-       send_513("1000100110110000000000010");
+       send_315("1000100110110000000000010");
      } else
      if (input == 'b') {
-       send_513("1011001001011111000000010");
+       send_315("1011001001011111000000010");
      } else
 
      // DHT22
@@ -157,6 +169,8 @@ void loop() {
 
        byte on = serial_data[1];
 
+       LED_ON
+
        // switches, 433 Mhz set of 3
        switch ( serial_data[0] ) {
          case 1:
@@ -175,11 +189,33 @@ void loop() {
            on  ? mySwitch.send("001111110000000011000000")
                : mySwitch.send("001111110000000000000000");
            break;
+         case 5:
+/*
+               cca. 320Mhz 4 channel 4.8A 220V relay
+
+               A       1101001010011010011100010
+               B       1101001010011010011101000
+               C       1101001010011010011100100
+               D       1101001010011010011110000
+               off     1101001010011010011111000
+               on      1101001010011010011100110
+*/
+               switch ( on ) {
+                       case '0': send_315( "1101001010011010011111000" );
+                       case '1': send_315( "1101001010011010011100110" );
+                       case 'A': send_315( "1101001010011010011100010" );
+                       case 'B': send_315( "1101001010011010011101000" );
+                       case 'C': send_315( "1101001010011010011100100" );
+                       case 'D': send_315( "1101001010011010011110000" );
+                       default:  Serial.println("# ERROR: use 0-off 1-on A B C D");
+               }
          default:
            Serial.print("# invalid switch number ");
            Serial.println(serial_data[0], DEC);
        }
 
+        LED_OFF
+
        // reset for later
        serial_pos = 0;
      }