diff options
author | dakkar <dakkar@thenautilus.net> | 2018-03-23 14:55:20 +0000 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2018-03-23 14:55:20 +0000 |
commit | 927eeac99470b1843d4237378adfbdc6e189a122 (patch) | |
tree | 3bb8428730ac99ed14756a93ee56ace38f2c0f9f | |
parent | kill duplicate notes (diff) | |
download | thermostat-927eeac99470b1843d4237378adfbdc6e189a122.tar.gz thermostat-927eeac99470b1843d4237378adfbdc6e189a122.tar.bz2 thermostat-927eeac99470b1843d4237378adfbdc6e189a122.zip |
rework the signal structures
-rw-r--r-- | trasmitter/sender.ino | 59 |
1 files changed, 39 insertions, 20 deletions
diff --git a/trasmitter/sender.ino b/trasmitter/sender.ino index e53bd72..937d065 100644 --- a/trasmitter/sender.ino +++ b/trasmitter/sender.ino @@ -1,36 +1,55 @@ -const uint16_t arrOn[] = { - 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 3, 2, 2, 3, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 3, 2, 3, 4, 2, +const uint8_t prologue[] = { + 2, 2, 2, 2, 2, 2, 4, + 2, 4, 2, 2, 3, 2, 2, + 3, 2, 2, 2, 2, 2, }; -const int nOnLen = sizeof(arrOn)/sizeof(uint16_t); -const uint16_t arrOff[] = { - 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 3, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 3, 3, 4, 2, +const uint8_t prologueSize = sizeof(prologue) / sizeof(uint8_t); +const uint8_t epilogue[] = { + 3, 4, 3, }; -const int nOffLen = sizeof(arrOff)/sizeof(uint16_t); -const int nTxPin = 7; // Arduino digital pin you're using for radio data. +const uint8_t epilogueSize = sizeof(epilogue) / sizeof(uint8_t); + +const uint8_t onSignal[] = { + 4, 2, 2, 2, 2, 3, 2, +}; +const uint8_t onSize = sizeof(onSignal) / sizeof(uint8_t); + +const uint8_t offSignal[] = { + 2, 2, 2, 2, 2, 4, 3, +}; +const uint8_t offSize = sizeof(offSignal) / sizeof(uint8_t); + const int pulseScale = 260; // usec per sample unit +const int nTxPin = 7; // Arduino digital pin you're using for radio data. -void transmitArray(const uint16_t pulses[], int pulseCount) { - for (int repeat=0; repeat < 3; ++repeat) { - for(int pulse = 0; pulse < pulseCount; ++pulse) { - int pulseWidth = pulses[pulse]; +void transmitArray(const uint8_t pulses[], uint8_t pulseCount) { + for(int pulse = 0; pulse < pulseCount; ++pulse) { + int pulseWidth = pulses[pulse]; + if (pulseWidth>0) { digitalWrite(nTxPin, HIGH); - // Widths are in units of 500us, for the full-period square wave delayMicroseconds(pulseScale*pulseWidth); - + } + else { digitalWrite(nTxPin, LOW); - delayMicroseconds(pulseScale*pulseWidth); + delayMicroseconds(pulseScale*(-pulseWidth)); } } } -void sendTrain(const uint16_t pulses[], int pulseCount) { - transmitArray(pulses,pulseCount); +void transmitSignal(const uint8_t signal[], uint8_t signalSize) { + transmitArray(prologue,prologueSize); + transmitArray(signal,signalSize); + transmitArray(epilogue,epilogueSize); +} + +void sendTrain(const uint8_t signal[], uint8_t signalSize) { + transmitSignal(signal,signalSize); delay(1000); - transmitArray(pulses,pulseCount); + transmitSignal(signal,signalSize); delay(2000); - transmitArray(pulses,pulseCount); + transmitSignal(signal,signalSize); } @@ -62,12 +81,12 @@ void loop() int nIncomming = Serial.read(); if (nIncomming == 49) { // char code for 1 Serial.println("ON"); - sendTrain(arrOn, nOnLen); + sendTrain(onSignal,onSize); } if (nIncomming == 48) { // char code for 0 Serial.println("OFF"); - sendTrain(arrOff, nOffLen); + sendTrain(offSignal,offSize); } Serial.println("Press 0 to turn off heating"); |