light resistor instead of light diode
[svn42.git] / rf433ctl / rf433ctl.pde
index a4db48a..6f3ec38 100644 (file)
@@ -11,7 +11,7 @@
 #define ONE_WIRE_PIN 8
 #define PANIC_BUTTON_PIN 7
 #define BLUELED_PWM_PIN 6
-#define BLUELED2_PWM_PIN 10
+#define BLUELED2_PWM_PIN 11
 #define PHOTO_ANALOGPIN 0
 //movement is reported if during IR_SAMPLE_DURATION at least IR_TRESHOLD ir signals are detectd
 #define IR_SAMPLE_DURATION 15000
@@ -141,9 +141,9 @@ void init_word(const word_t w)
   bit_cnt = 0;
 
   if(bit_defs[current_word[bit_cnt]][chunk_cnt].state)
-    digitalWrite(RF_DATA_OUT_PIN, HIGH);
+    digitalWrite(RF_DATA_OUT_PIN, LOW); //neue 12V MosFET Verstärkung invertiert Logik !
   else
-    digitalWrite(RF_DATA_OUT_PIN, LOW);
+    digitalWrite(RF_DATA_OUT_PIN, HIGH);
 
   start_timer();
 }
@@ -157,9 +157,9 @@ ISR(TIMER1_COMPA_vect)
   chunk_cnt++;
   if(bit_defs[current_word[bit_cnt]][chunk_cnt].offset != 0) {
     if(bit_defs[current_word[bit_cnt]][chunk_cnt].state)
-      digitalWrite(RF_DATA_OUT_PIN, HIGH);
+      digitalWrite(RF_DATA_OUT_PIN, LOW); //neue 12V MosFET Verstärkung invertiert Logik !
     else
-      digitalWrite(RF_DATA_OUT_PIN, LOW);
+      digitalWrite(RF_DATA_OUT_PIN, HIGH);
     return;
   }
   
@@ -168,13 +168,13 @@ ISR(TIMER1_COMPA_vect)
     alpha_cnt = 0;
     chunk_cnt = 0;
     if(bit_defs[current_word[bit_cnt]][chunk_cnt].state)
-      digitalWrite(RF_DATA_OUT_PIN, HIGH);
+      digitalWrite(RF_DATA_OUT_PIN, LOW); //neue 12V MosFET Verstärkung invertiert Logik !
     else
-      digitalWrite(RF_DATA_OUT_PIN, LOW);
+      digitalWrite(RF_DATA_OUT_PIN, HIGH);
     return;
   }
   stop_timer();
-  digitalWrite(RF_DATA_OUT_PIN, LOW);
+  digitalWrite(RF_DATA_OUT_PIN, HIGH);
 
   word_cnt++;
   if(word_cnt < FRAME_LEN)
@@ -205,7 +205,7 @@ void printTemperature(DeviceAddress deviceAddress)
 {
   dallas_sensors.requestTemperatures();
   float tempC = dallas_sensors.getTempC(deviceAddress);
-  Serial.print("Temp C: ");
+  //Serial.print("Temp C: ");
   Serial.println(tempC TEMPC_OFFSET_ARDUINO_GENEREATED_HEAT);
   //Serial.print(" Temp F: ");
   //Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
@@ -228,15 +228,15 @@ void updateLightLevel(unsigned int pin)
     return;
   
   unsigned int diff = abs(value - light_level_mean_);
-  if (light_level_mean_ < 6 || diff > 250)
+  if (diff > 100)
     light_level_mean_ = value;
   else
-      light_level_mean_=(unsigned int) ( ((float) light_level_mean_) * 0.98 + ((float)value)*0.02 );
+      light_level_mean_=(unsigned int) ( ((float) light_level_mean_) * 0.90 + ((float)value)*0.10 );
 }
 
 void printLightLevel()
 {
-  Serial.print("Photo: ");
+  //Serial.print("Photo: ");
   Serial.println(light_level_mean_);
 }
 
@@ -263,7 +263,7 @@ bool wait_millis(unsigned long ms)
 }
 
 unsigned int flash_led_time_=0;
-unsigned int flash_led_brightness_=256;
+unsigned int flash_led_brightness_=255;
 unsigned int flash_led_delay_=8;
 void calculate_led_level(unsigned int pwm_pin)
 {
@@ -273,13 +273,20 @@ void calculate_led_level(unsigned int pwm_pin)
     return;
   flash_led_time_--;
   int c = abs(sin(float(flash_led_time_) / 100.0)) * flash_led_brightness_;
-  analogWrite(BLUELED_PWM_PIN,c);
-  analogWrite(BLUELED2_PWM_PIN,c);
+  //int d = abs(sin(float(flash_led_time_) / 100.0)) * flash_led_brightness_;
+  analogWrite(BLUELED2_PWM_PIN, 255-c);
+  if (flash_led_brightness_ == 255)
+  {
+    if (flash_led_time_)
+      analogWrite(BLUELED_PWM_PIN, 255-c);
+    else
+      analogWrite(BLUELED_PWM_PIN, c);
+  }
 }
 
 void flash_led(unsigned int times, unsigned int brightness_divisor, unsigned int delay_divisor)
 {
-  unsigned int new_flash_led_brightness = 256 / brightness_divisor;
+  unsigned int new_flash_led_brightness = 255 / brightness_divisor;
   unsigned int new_flash_led_delay = 8 / delay_divisor;
   if (flash_led_time_ == 0 || new_flash_led_brightness > flash_led_brightness_)
     flash_led_brightness_=new_flash_led_brightness;
@@ -293,12 +300,13 @@ void flash_led(unsigned int times, unsigned int brightness_divisor, unsigned int
 void setup()
 {
   pinMode(RF_DATA_OUT_PIN, OUTPUT);
-  digitalWrite(RF_DATA_OUT_PIN, LOW);
+  digitalWrite(RF_DATA_OUT_PIN, HIGH);
   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 
   analogWrite(BLUELED_PWM_PIN,0);
+  analogWrite(BLUELED2_PWM_PIN,255); //pwm sink(-) instead of pwm + (better for mosfets)
 
   Serial.begin(9600);