#include "lights.h"
+#define AMBIENT_VAL_SHIFT 3
static uint16_t ambient_val;
volatile unsigned char ambient_zone;
* and having small overlaps in order to provide a bit of hysteresis.
*/
static ambient_zone_t ambient_zones[] = {
- { 0x0000, 0x3120 }, // dark
- { 0x30f0, 0x5000 },
- { 0x4c00, 0x8000 },
- { 0x7800, 0xffff }
+ { 0x0000 , 0x0290<<AMBIENT_VAL_SHIFT }, // dark
+ { 0x0280<<AMBIENT_VAL_SHIFT, 0x0300<<AMBIENT_VAL_SHIFT }, // evening
+ { 0x02f8<<AMBIENT_VAL_SHIFT, 0x0320<<AMBIENT_VAL_SHIFT }, // dawn
+ { 0x0318<<AMBIENT_VAL_SHIFT, 0xffff }, // day
};
#define N_AMBIENT_ZONES (sizeof(ambient_zones)/sizeof(ambient_zones[0]))
{
unsigned char old_zone = ambient_zone;
- ambient_val += adcval - (ambient_val >> 6);
+ ambient_val += adcval - (ambient_val
+ >> (AMBIENT_VAL_SHIFT - AMBIENT_ADC_SHIFT));
while (ambient_zones[ambient_zone].lo > ambient_val)
ambient_zone--;