X-Git-Url: https://git.realraum.at/?p=svn42.git;a=blobdiff_plain;f=rf433ctl%2Frf433ctl.pde;h=0a7abac26cab25eb00aa82aa66de332f2974b9fc;hp=a00e9142629ec0749db22247390b3758ca5ea145;hb=d28fbe27742a031f5bc5c39cd3b5588a39423162;hpb=b654506283c4f625e5ade66e2bc5eb22ad4d1545 diff --git a/rf433ctl/rf433ctl.pde b/rf433ctl/rf433ctl.pde index a00e914..0a7abac 100644 --- a/rf433ctl/rf433ctl.pde +++ b/rf433ctl/rf433ctl.pde @@ -1,10 +1,23 @@ #include #include #include +#include +#include //********************************************************************// #define DATA_OUT_PIN 13 +#define IR_MOVEMENT_PIN 9 +#define ONE_WIRE_PIN 8 +#define PANIC_BUTTON_PIN 7 +#define IR_SAMPLE_DURATION 20000 +#define IR_TRESHOLD 13000 +#define PB_SAMPLE_DURATION 5000 +#define PB_TRESHOLD 5000 + +OneWire onewire(ONE_WIRE_PIN); +DallasTemperature dallas_sensors(&onewire); +DeviceAddress onShieldTemp = { 0x10, 0xE7, 0x77, 0xD3, 0x01, 0x08, 0x00, 0x3F }; typedef struct { byte offset; @@ -180,15 +193,66 @@ void send_frame(const word_t w) //********************************************************************// +void printTemperature(DeviceAddress deviceAddress) +{ + dallas_sensors.requestTemperatures(); + float tempC = dallas_sensors.getTempC(deviceAddress); + Serial.print("Temp C: "); + Serial.println(tempC); + //Serial.print(" Temp F: "); + //Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit +} + +//********************************************************************// + void setup() { pinMode(DATA_OUT_PIN, OUTPUT); digitalWrite(DATA_OUT_PIN, LOW); + pinMode(IR_MOVEMENT_PIN, INPUT); // set pin to input + digitalWrite(IR_MOVEMENT_PIN, LOW); // turn off pullup resistors + pinMode(PANIC_BUTTON_PIN, INPUT); // set pin to input + digitalWrite(PANIC_BUTTON_PIN, HIGH); // turn on pullup resistors + + onewire.reset(); + onewire.reset_search(); + dallas_sensors.begin(); + //in case we change temp sensor: + if (!dallas_sensors.getAddress(onShieldTemp, 0)) + Serial.println("Unable to find address for Device 0"); + dallas_sensors.setResolution(onShieldTemp, 9); + Serial.begin(9600); } +unsigned int ir_time=IR_SAMPLE_DURATION; +unsigned int ir_count=0; +unsigned int pb_time=PB_SAMPLE_DURATION; +unsigned int pb_count=0; + void loop() { + ir_time--; + pb_time--; + ir_count += (digitalRead(IR_MOVEMENT_PIN) == HIGH); + pb_count += (digitalRead(PANIC_BUTTON_PIN) == LOW); + + if (ir_time == 0) + { + if (ir_count >= IR_TRESHOLD) + Serial.println("movement"); + ir_time=IR_SAMPLE_DURATION; + ir_count=0; + } + + if (pb_time == 0) + { + if (pb_count >= PB_TRESHOLD) + Serial.println("PanicButton"); + pb_time=PB_SAMPLE_DURATION; + pb_count=0; + } + if(Serial.available()) { char command = Serial.read(); @@ -227,6 +291,7 @@ void loop() send_frame(words[D2_ON]); else if(command == 'k') send_frame(words[D2_OFF]); - + else if(command == 'T') + printTemperature(onShieldTemp); } }