Files
hsc26-artemis2/firmware/app/ui/temp_ui.c
true 9bc0ad4952 reduced default power due to hardware spec fault
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.
2026-05-09 10:29:33 -07:00

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);
}
}
}