The boost converter is fairly weak. This was known going into this design. However, the LED brightness wasn't ever really calculated and was just assumed it would be kept under control by the specific LED programs in use. Since per-color gain tuning isn't implemented yet, for now the default global gain is turned down to prevent voltage drop from turning off white LEDs when programs that light a significant number of LEDs are run. If turning up the brightness the white LEDs can still drop.
130 lines
2.4 KiB
C
130 lines
2.4 KiB
C
/*
|
|
* temp_ui.c: temporary ui shit until I can write something better
|
|
*/
|
|
|
|
#include "ch32x035_conf.h"
|
|
#include "btn.h"
|
|
|
|
#include "led/matrix.h"
|
|
#include "led/ledprog.h"
|
|
|
|
|
|
|
|
static uint32_t brt = 20; // set to same as in matrix.c
|
|
|
|
uint8_t ribbon_prog = 0;
|
|
uint8_t aii_prog = 0;
|
|
|
|
|
|
|
|
static void brt_set(uint8_t idx)
|
|
{
|
|
switch (idx) {
|
|
case 1: {
|
|
if (brt > 4)
|
|
brt--;
|
|
break;
|
|
}
|
|
case 2: {
|
|
brt++;
|
|
if (brt > 44) brt = 44;
|
|
break;
|
|
}
|
|
}
|
|
|
|
aw20x_set_dim_global(&awled, brt);
|
|
}
|
|
|
|
static void prog_set(uint8_t idx)
|
|
{
|
|
switch (idx) {
|
|
case 3: { // trio bottom left
|
|
ribbon_prog = 0;
|
|
lp_ribbon_init();
|
|
break;
|
|
}
|
|
case 4: { // trio upper
|
|
ribbon_prog = 1;
|
|
lp_ribbon_init();
|
|
break;
|
|
}
|
|
case 5: { // da erf
|
|
ribbon_prog = 3;
|
|
lp_ribbon_init();
|
|
break;
|
|
}
|
|
case 6: { // big crater
|
|
aii_prog = 1;
|
|
lp_aii_init();
|
|
break;
|
|
}
|
|
case 7: { // next to big crater
|
|
aii_prog = 2;
|
|
lp_aii_init();
|
|
break;
|
|
}
|
|
case 8: { // bottom crater
|
|
aii_prog = 0;
|
|
lp_aii_init();
|
|
break;
|
|
}
|
|
case 9: { // trio right
|
|
ribbon_prog = 2;
|
|
lp_ribbon_init();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void tempui_init()
|
|
{
|
|
int i;
|
|
|
|
btn[2].cb_push = brt_set;
|
|
btn[2].cb_hold = brt_set;
|
|
btn[2].repeat = 200;
|
|
|
|
btn[1].cb_push = brt_set;
|
|
btn[1].cb_hold = brt_set;
|
|
btn[1].repeat = 200;
|
|
|
|
for (i = 3; i < 10; i++) {
|
|
btn[i].cb_push = prog_set;
|
|
}
|
|
}
|
|
|
|
void tempui_lp_runprog()
|
|
{
|
|
switch (ribbon_prog) {
|
|
case 0: {
|
|
lp_ribbon_upward(400, 3, 4);
|
|
break;
|
|
}
|
|
case 1: {
|
|
lp_ribbon_upward(800, 1, 2);
|
|
break;
|
|
}
|
|
case 2: {
|
|
lp_ribbon_upward(1500, 4, 7);
|
|
break;
|
|
}
|
|
case 3: {
|
|
lp_ribbon_twinkle(3, 0x5f, 0x1f, 0xfd);
|
|
break;
|
|
}
|
|
}
|
|
|
|
switch (aii_prog) {
|
|
case 0: {
|
|
// do nothing
|
|
break;
|
|
}
|
|
case 1: {
|
|
lp_aii_filldown(800, 14, 1200, 3, 0x60);
|
|
break;
|
|
}
|
|
case 2: {
|
|
lp_aii_bounce(7, 0x3f, 2, 3);
|
|
}
|
|
}
|
|
} |