summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2018-03-23 14:55:20 +0000
committerdakkar <dakkar@thenautilus.net>2018-03-23 14:55:20 +0000
commit927eeac99470b1843d4237378adfbdc6e189a122 (patch)
tree3bb8428730ac99ed14756a93ee56ace38f2c0f9f
parentkill duplicate notes (diff)
downloadthermostat-927eeac99470b1843d4237378adfbdc6e189a122.tar.gz
thermostat-927eeac99470b1843d4237378adfbdc6e189a122.tar.bz2
thermostat-927eeac99470b1843d4237378adfbdc6e189a122.zip
rework the signal structures
-rw-r--r--trasmitter/sender.ino59
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");