new graphics
This commit is contained in:
parent
944133bd45
commit
e45617d6b2
95
fw/display.c
95
fw/display.c
@ -254,3 +254,98 @@ static char str_buf[32];
|
|||||||
uint8_t str_len;
|
uint8_t str_len;
|
||||||
int buf_putc(char c) { str_buf[str_len++] = c; return 0; }
|
int buf_putc(char c) { str_buf[str_len++] = c; return 0; }
|
||||||
const char* buf_get(void) { str_buf[str_len] = '\0'; str_len = 0; return str_buf; }
|
const char* buf_get(void) { str_buf[str_len] = '\0'; str_len = 0; return str_buf; }
|
||||||
|
|
||||||
|
|
||||||
|
// 7 segment display segments
|
||||||
|
static const uint8_t seg_left_xbm[] = {0x01,0x03,0x03,0x03,0x03,0x01};
|
||||||
|
static const uint8_t seg_right_xbm[] = {0x02,0x03,0x03,0x03,0x03,0x02};
|
||||||
|
static const uint8_t seg_top_xbm[] = {0x3f,0x1e};
|
||||||
|
static const uint8_t seg_bot_xbm[] = {0x1e,0x3f};
|
||||||
|
static const uint8_t seg_center_xbm[] = {0x1e,0x3f,0x1e};
|
||||||
|
|
||||||
|
static void draw_7seg(u8g2_t *u8g2, uint8_t x, uint8_t y, uint8_t n)
|
||||||
|
{
|
||||||
|
switch (n) {
|
||||||
|
case 0:
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+0, 6, 2, seg_top_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+1, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+8, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+13, 6, 2, seg_bot_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+0, y+1, 2, 6, seg_left_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+0, y+8, 2, 6, seg_left_xbm);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+1, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+8, 2, 6, seg_right_xbm);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+0, 6, 2, seg_top_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+1, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+13, 6, 2, seg_bot_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+0, y+8, 2, 6, seg_left_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+6, 6, 3, seg_center_xbm);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+0, 6, 2, seg_top_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+1, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+8, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+13, 6, 2, seg_bot_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+6, 6, 3, seg_center_xbm);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+1, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+8, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+0, y+1, 2, 6, seg_left_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+6, 6, 3, seg_center_xbm);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+0, 6, 2, seg_top_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+8, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+13, 6, 2, seg_bot_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+0, y+1, 2, 6, seg_left_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+6, 6, 3, seg_center_xbm);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+0, 6, 2, seg_top_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+8, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+13, 6, 2, seg_bot_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+0, y+1, 2, 6, seg_left_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+0, y+8, 2, 6, seg_left_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+6, 6, 3, seg_center_xbm);
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+0, 6, 2, seg_top_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+1, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+8, 2, 6, seg_right_xbm);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+0, 6, 2, seg_top_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+1, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+8, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+13, 6, 2, seg_bot_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+0, y+1, 2, 6, seg_left_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+0, y+8, 2, 6, seg_left_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+6, 6, 3, seg_center_xbm);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+0, 6, 2, seg_top_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+1, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+6, y+8, 2, 6, seg_right_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+13, 6, 2, seg_bot_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+0, y+1, 2, 6, seg_left_xbm);
|
||||||
|
u8g2_DrawXBM(u8g2, x+1, y+6, 6, 3, seg_center_xbm);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void draw_temp(u8g2_t *u8g2, uint8_t x, uint8_t y, int16_t temp)
|
||||||
|
{
|
||||||
|
if (temp > 999 || temp < 0) temp = 0;
|
||||||
|
const char *s = u8x8_u16toa(temp, 3);
|
||||||
|
draw_7seg(u8g2, x+0, y+0, s[0]-'0');
|
||||||
|
draw_7seg(u8g2, x+9, y+0, s[1]-'0');
|
||||||
|
draw_7seg(u8g2, x+18, y+0, s[2]-'0');
|
||||||
|
}
|
||||||
|
|||||||
@ -12,6 +12,7 @@ const char* i16toa(int16_t value);
|
|||||||
const char* u16toa(uint16_t value);
|
const char* u16toa(uint16_t value);
|
||||||
int buf_putc(char c);
|
int buf_putc(char c);
|
||||||
const char* buf_get(void);
|
const char* buf_get(void);
|
||||||
|
void draw_temp(u8g2_t *u8g2, uint8_t x, uint8_t y, int16_t temp);
|
||||||
|
|
||||||
|
|
||||||
#endif // _DISPLAY_H
|
#endif // _DISPLAY_H
|
||||||
|
|||||||
14
fw/main.c
14
fw/main.c
@ -569,6 +569,7 @@ __attribute__((noreturn)) int main(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case STATE_HEATING:
|
case STATE_HEATING:
|
||||||
|
#if 0
|
||||||
// Display tip temperature
|
// Display tip temperature
|
||||||
u8g2_DrawStr(u8g2, x_off+0, y_off+7, "TIP:");
|
u8g2_DrawStr(u8g2, x_off+0, y_off+7, "TIP:");
|
||||||
u8g2_DrawStr(u8g2, x_off+20, y_off+7, i16toa(tip_temp_c));
|
u8g2_DrawStr(u8g2, x_off+20, y_off+7, i16toa(tip_temp_c));
|
||||||
@ -584,7 +585,16 @@ __attribute__((noreturn)) int main(void)
|
|||||||
// u8g2_DrawStr(u8g2, x_off+55, y_off+15, u16toa(current_ma));
|
// u8g2_DrawStr(u8g2, x_off+55, y_off+15, u16toa(current_ma));
|
||||||
u8g2_DrawStr(u8g2, x_off+45, y_off+15, "W:");
|
u8g2_DrawStr(u8g2, x_off+45, y_off+15, "W:");
|
||||||
u8g2_DrawStr(u8g2, x_off+55, y_off+15, u16toa(power));
|
u8g2_DrawStr(u8g2, x_off+55, y_off+15, u16toa(power));
|
||||||
|
#else
|
||||||
|
draw_temp(u8g2, x_off+0, y_off+0, tip_temp_c);
|
||||||
|
u8g2_DrawStr(u8g2, x_off+32, y_off+6, "W:");
|
||||||
|
u8g2_DrawStr(u8g2, x_off+42, y_off+6, u16toa(power));
|
||||||
|
u8g2_DrawStr(u8g2, x_off+60, y_off+6, "V:");
|
||||||
|
u8g2_DrawStr(u8g2, x_off+70, y_off+6, u16toa((vbus_mv+500)/1000));
|
||||||
|
uint8_t p = (power*100)/pd_profile.set_power;
|
||||||
|
uint8_t w = (uint16_t)(p*64)/100;
|
||||||
|
u8g2_DrawBox(u8g2, x_off+32, y_off+14, w, 5);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
funDigitalWrite(PIN_12V, 1);
|
funDigitalWrite(PIN_12V, 1);
|
||||||
@ -613,7 +623,7 @@ __attribute__((noreturn)) int main(void)
|
|||||||
if (pwm) {
|
if (pwm) {
|
||||||
const uint16_t tim_max = FUNCONF_SYSTEM_CORE_CLOCK / PWM_FREQ_HZ - 1;
|
const uint16_t tim_max = FUNCONF_SYSTEM_CORE_CLOCK / PWM_FREQ_HZ - 1;
|
||||||
pwm_set(((u32)duty*tim_max)/100);
|
pwm_set(((u32)duty*tim_max)/100);
|
||||||
u8g2_DrawBox(u8g2, x_off+92, y_off+12, 4, 4);
|
u8g2_DrawBox(u8g2, x_off+92, y_off+0, 4, 4);
|
||||||
} else {
|
} else {
|
||||||
pwm_set(0);
|
pwm_set(0);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user