tweak the ambient light level stuff
This commit is contained in:
parent
d311b923ac
commit
f6e48a1708
|
@ -3,6 +3,8 @@
|
||||||
* GAT Addon Firmware
|
* GAT Addon Firmware
|
||||||
* by true
|
* by true
|
||||||
*
|
*
|
||||||
|
* version 0.0.1
|
||||||
|
*
|
||||||
* code was made for different random addons I designed for dc32,
|
* code was made for different random addons I designed for dc32,
|
||||||
* then adapted to each one. so things might be a mess.
|
* then adapted to each one. so things might be a mess.
|
||||||
*
|
*
|
||||||
|
@ -17,7 +19,8 @@
|
||||||
*
|
*
|
||||||
* notes:
|
* notes:
|
||||||
*
|
*
|
||||||
* - last 2K of flash memory is reserved for configuration storage.
|
* - last 2K of flash memory is reserved for configuration storage
|
||||||
|
* - accelerometer code isn't done by DC32
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ch32v20x.h>
|
#include <ch32v20x.h>
|
||||||
|
|
|
@ -10,14 +10,33 @@
|
||||||
#include "adc.h"
|
#include "adc.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* original map when ADC was being more constrained
|
||||||
static const uint8_t led_brightness_map[] = {
|
static const uint8_t led_brightness_map[] = {
|
||||||
47, 40, 34, 32, // 0 = maybe outside, or really bright inside. 1-3 = indoors
|
47, 40, 35, 32, // 0 = maybe outside, or really bright inside. 1-3 = indoors
|
||||||
30, 28, 27, 25, // 4-7 = indoors
|
30, 28, 27, 25, // 4-7 = indoors
|
||||||
23, 21, 19, 18, // 8-11 = indoors normal
|
23, 21, 19, 18, // 8-11 = indoors normal
|
||||||
17, 16, 15, 13, // 12 = dimmest normal, 13 = darker, 14-15 darker still
|
17, 16, 15, 13, // 12 = dimmest normal, 13 = darker, 14-15 darker still
|
||||||
11, 9, 7, 5 // 16-19 = from night room light to computer light
|
11, 9, 7, 5 // 16-19 = from night room light to computer light
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
|
// new map now that ADC is acting different
|
||||||
|
// still don't know why
|
||||||
|
// but there is a lot of self-illumination problem
|
||||||
|
static const uint8_t led_brightness_map[] = {
|
||||||
|
47, 44, 42, 41,
|
||||||
|
40, 38, 36, 34,
|
||||||
|
32, 31, 30, 29,
|
||||||
|
27, 25, 21, 19,
|
||||||
|
17, 16, 15, 15, // indoors normal brightness
|
||||||
|
14, 14, 13, 13,
|
||||||
|
12, 12, 12, 11,
|
||||||
|
11, 11, 10, 10,
|
||||||
|
10, 9, 9, 9,
|
||||||
|
8, 8, 8, 8,
|
||||||
|
7, 7, 7, 7,
|
||||||
|
7, 6, 6, 6
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -150,7 +169,7 @@ void adc_process_lsens()
|
||||||
// calculate adjustments
|
// calculate adjustments
|
||||||
if (lsens_val > LSENS_COARSE_UP) {
|
if (lsens_val > LSENS_COARSE_UP) {
|
||||||
lsens_coarse++;
|
lsens_coarse++;
|
||||||
if (lsens_coarse > 0x7f) lsens_coarse = 0x7f;
|
if (lsens_coarse > 0x3f) lsens_coarse = 0x3f;
|
||||||
} else if (lsens_val < LSENS_COARSE_DOWN) {
|
} else if (lsens_val < LSENS_COARSE_DOWN) {
|
||||||
if (lsens_coarse) lsens_coarse--;
|
if (lsens_coarse) lsens_coarse--;
|
||||||
}
|
}
|
||||||
|
@ -183,7 +202,7 @@ uint8_t adc_get_lsens_coarse()
|
||||||
return lsens_coarse;
|
return lsens_coarse;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t adc_get_brightness_map(uint8_t level)
|
uint8_t adc_get_brightness(uint8_t level)
|
||||||
{
|
{
|
||||||
if (!level) {
|
if (!level) {
|
||||||
// are you outside? why? it's too fucking hot
|
// are you outside? why? it's too fucking hot
|
||||||
|
@ -194,7 +213,7 @@ uint8_t adc_get_brightness_map(uint8_t level)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (level > sizeof(led_brightness_map)) {
|
if (level >= sizeof(led_brightness_map)) {
|
||||||
return led_brightness_map[sizeof(led_brightness_map) - 1];
|
return led_brightness_map[sizeof(led_brightness_map) - 1];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
#define LSENS_K_PIN GPIO_Pin_3
|
#define LSENS_K_PIN GPIO_Pin_3
|
||||||
#define LSENS_ADC_CH ADC_Channel_3
|
#define LSENS_ADC_CH ADC_Channel_3
|
||||||
|
|
||||||
#define LSENS_COARSE_UP 0x680 // counts higher than this increase lsens_coarse, maximum 64
|
#define LSENS_COARSE_UP 0x690 // counts higher than this increase lsens_coarse, maximum 64
|
||||||
#define LSENS_COARSE_DOWN 0x580 // counts lower than this decrease lsens_coarse, minimum 1
|
#define LSENS_COARSE_DOWN 0x5a0 // counts lower than this decrease lsens_coarse, minimum 1
|
||||||
|
|
||||||
enum lsens_mode {
|
enum lsens_mode {
|
||||||
LSENS_READING_IDLE = 0,
|
LSENS_READING_IDLE = 0,
|
||||||
|
@ -43,7 +43,7 @@ void adc_process_lsens();
|
||||||
uint16_t adc_get_lsens();
|
uint16_t adc_get_lsens();
|
||||||
uint8_t adc_get_lsens_coarse();
|
uint8_t adc_get_lsens_coarse();
|
||||||
|
|
||||||
uint8_t adc_get_brightness_map(uint8_t level);
|
uint8_t adc_get_brightness(uint8_t level);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -159,7 +159,7 @@ void led_rgb_update()
|
||||||
uint16_t scale[3];
|
uint16_t scale[3];
|
||||||
|
|
||||||
uint8_t lsens = adc_get_lsens_coarse();
|
uint8_t lsens = adc_get_lsens_coarse();
|
||||||
uint8_t max = adc_get_brightness_map(lsens);
|
uint8_t max = adc_get_brightness(lsens);
|
||||||
|
|
||||||
// this isn't a matrix so we can just update whenever
|
// this isn't a matrix so we can just update whenever
|
||||||
// but we need to scale to ambient light level
|
// but we need to scale to ambient light level
|
||||||
|
|
|
@ -141,5 +141,6 @@ void ui_render()
|
||||||
|
|
||||||
// set LED current based on ambient light level
|
// set LED current based on ambient light level
|
||||||
w = adc_get_lsens_coarse();
|
w = adc_get_lsens_coarse();
|
||||||
is31fl3729_set_global_current(FL3729_ADDR, adc_get_brightness_map(w));
|
w = adc_get_brightness(w);
|
||||||
|
is31fl3729_set_global_current(FL3729_ADDR, w);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue