]> www.fi.muni.cz Git - bike-lights.git/blobdiff - firmware/ambient.c
ambient.c: adjust the day/dawn values
[bike-lights.git] / firmware / ambient.c
index 59c85a79b2e17bb11b65b54d0d3fb79f170e3154..72e13323a9d6124ba863a70a71dc676af916a876 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "lights.h"
 
+#define AMBIENT_VAL_SHIFT 2
 static uint16_t ambient_val;
 volatile unsigned char ambient_zone;
 
@@ -15,10 +16,10 @@ typedef struct {
  * and having small overlaps in order to provide a bit of hysteresis.
  */
 static ambient_zone_t ambient_zones[] = {
-       { 0x0000, 0xb000 }, // dark
-       { 0xa800, 0xc400 },
-       { 0xc200, 0xcb00 },
-       { 0xca80, 0xffff }
+       { 0x0000                   , 0x0290<<AMBIENT_VAL_SHIFT }, // dark
+       { 0x0280<<AMBIENT_VAL_SHIFT, 0x0300<<AMBIENT_VAL_SHIFT }, // evening
+       { 0x02f8<<AMBIENT_VAL_SHIFT, 0x0310<<AMBIENT_VAL_SHIFT }, // dawn
+       { 0x0308<<AMBIENT_VAL_SHIFT, 0xffff                    }, // day
 };
 #define N_AMBIENT_ZONES (sizeof(ambient_zones)/sizeof(ambient_zones[0]))
 
@@ -46,7 +47,8 @@ void ambient_adc(uint16_t adcval)
 {
        unsigned char old_zone = ambient_zone;
 
-       ambient_val += adcval - (ambient_val >> 3);
+       ambient_val += adcval - (ambient_val
+               >> (AMBIENT_VAL_SHIFT - AMBIENT_ADC_SHIFT));
 
        while (ambient_zones[ambient_zone].lo > ambient_val)
                ambient_zone--;