X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=rpi_promini%2Frpi_promini.ino;h=d1395e4b81eaaeac56bf3a95a21783b802cd9c6c;hb=b33d91b4a933eec37c2ed3e5e21b3168c996a959;hp=e3202b5ad415e6929ce8bbd07a9d0f3b8e5c638d;hpb=6cf660183aa7c25b5c856a5bc46dcb8b39262601;p=Arduino diff --git a/rpi_promini/rpi_promini.ino b/rpi_promini/rpi_promini.ino index e3202b5..d1395e4 100644 --- a/rpi_promini/rpi_promini.ino +++ b/rpi_promini/rpi_promini.ino @@ -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; }