//*************************************************** //*************************************************** LCD_service::LCD_service(Xapi& _xapi): m_xapi(_xapi) { m_lcd = new LiquidCrystal(8, 9, 4, 5, 6, 7); m_lcd_key = LCD_btnNONE; m_locked = false; reset_TUN_storage(); m_prev_lcd_key = LCD_btnNONE; m_lcd->begin(16, 2); lcd_setCursor(0,0); lcd_print("HOW DO YOU FEEL?"); }
fsmReturnStatus sethour(Fsm * fsm, const Event* e) { Time_t *temp = &(fsm->timeSet); switch (e->signal) { case ENTRY: return RET_HANDLED; case ROTARY_PRESSED: if (++(temp->hour) > 23) temp->hour = 0; lcd_clear(); lcd_setCursor(0, 0); fprintf(lcdout, "%02d:%02d\n", temp->hour, temp->minute); fprintf(lcdout, "set clock hour"); return RET_HANDLED; case ROTARY_INC: if (++(temp->hour) > 23) temp->hour = 0; lcd_clear(); lcd_setCursor(0, 0); fprintf(lcdout, "%02d:%02d\n", temp->hour, temp->minute); fprintf(lcdout, "set clock hour"); return RET_HANDLED; case ROTARY_DEC: if ((temp->hour) == 0) temp->hour = 24; lcd_clear(); lcd_setCursor(0, 0); fprintf(lcdout, "%02d:%02d\n", --(temp->hour), temp->minute); fprintf(lcdout, "set clock hour"); return RET_HANDLED; case JOYSTICK_PRESSED: return TRANSITION(setmin); case EXIT: return RET_HANDLED; default: return RET_IGNORED; } }
void calc_time(void *a) { static uint16_t time = 0; uint8_t lcd_second, lcd_tenthsec; if (stop) { } else { time++; lcd_second = time / 10; lcd_tenthsec = time % 10; lcd_clear(); fprintf(lcdout, "stopwatch \n%d,%d second\n", lcd_second, lcd_tenthsec); lcd_setCursor(0, 0); //otherwise the cursor keep going down. } }
void lcd_line(char* msg, int line, uint8_t usepgm) { int len; strncpy_P(g_char_buffer, S_MAX_BLANK_LINE, MAX_LCD_LINE_LEN); lcd_setCursor(0, line); if (usepgm) { len = strlen_P(msg); memcpy_P(g_char_buffer, msg, len > MAX_LCD_LINE_LEN ? MAX_LCD_LINE_LEN : len); } else { len = strlen(msg); memcpy(g_char_buffer, msg, len > MAX_LCD_LINE_LEN ? MAX_LCD_LINE_LEN : len); } lcd_print(g_char_buffer); serial_println(g_char_buffer); }
inline void lcd_spinner(int32_t wait, int perc) { static uint8_t indicators[] = {'|', '/', '-', 1}; static uint8_t pos = 0; static int32_t wait_for = 0; if (wait_for++ < wait) { return; } wait_for = 0; lcd_setCursor(MAX_LCD_LINE_LEN - 7, 0); sprintf(g_char_buffer, "%3d%% %c%c", perc, MOTOR_IS_OFF() ? 'm' : 'M', indicators[pos++]); lcd_print(g_char_buffer); if (pos > 3) { pos = 0; } }
int main() { led_redInit(); led_greenInit(); led_yellowInit(); lcd_init(); adc_init(); button_init();//latter : button_init(bool); while (1) { // uint16_t val = adc_read(ADC_JOYSTICK_CH); // lcd_setCursor(0,0); // lcd_clear(); // fprintf(lcdout,"%d\n", val); if (button_isJoystickPressed()) led_greenOn(); else led_greenOff(); if (button_isRotaryPressed()) led_redOn(); else led_redOff(); lcd_setCursor(0, 0); lcd_clear(); if (adc_getJoystickDirection() == RIGHT) { led_yellowOn(); fprintf(lcdout, "right\n"); } else led_yellowOff(); uint16_t temperature = adc_getTemperature(); //uint16_t temperature = adc_read(ADC_TEMP_CH); uint16_t light = adc_read(ADC_LIGHT_CH); fprintf(lcdout, "The temperature is %d\n, the light is %d\n", temperature, light); //slow down the refresh freq of the lcd _delay_ms(1000); } }
uint8_t handle_manual_filename(FILINFO* pfile_info) { uint8_t cur_char_pos = 0; uint8_t cursor_pos = 0; uint8_t max_chars = strlen_P(S_FILENAME_CHARS); uint8_t cur_char = 0; lcd_title_P(S_ENTER_FILENAME); lcd_status(""); lcd_cursor(); lcd_setCursor(0, 1); // start with a nicely terminated string! memset(pfile_info->lfname, 0, pfile_info->lfsize); while (1) { switch(get_cur_command()) { case COMMAND_SELECT: if (cursor_pos < (MAX_LCD_LINE_LEN - 1)) { cur_char = pgm_read_byte(S_FILENAME_CHARS + cur_char_pos); pfile_info->lfname[cursor_pos] = cur_char; cursor_pos++; lcd_setCursor(cursor_pos, 1); cur_char_pos = 0; } break; case COMMAND_SELECT_LONG: strcat(pfile_info->lfname, ".tap"); lcd_noCursor(); // exit to previous menu, with accept return 1; break; case COMMAND_ABORT: if (cursor_pos != 0) { pfile_info->lfname[cursor_pos] = 0; lcd_setCursor(cursor_pos, 1); lcd_write(' '); cursor_pos--; lcd_setCursor(cursor_pos, 1); cur_char_pos = 0; cur_char = pfile_info->lfname[cursor_pos]; while (pgm_read_byte(S_FILENAME_CHARS + cur_char_pos) != cur_char) { cur_char_pos++; } } break; case COMMAND_ABORT_LONG: lcd_title_P(S_OPERATION_ABORTED); lcd_noCursor(); lcd_busy_spinner(); // exit to previous menu, with cancel return 0; break; case COMMAND_NEXT: cur_char_pos = (cur_char_pos + 1) % max_chars; cur_char = pgm_read_byte(S_FILENAME_CHARS + cur_char_pos); lcd_write(cur_char); lcd_setCursor(cursor_pos, 1); pfile_info->lfname[cursor_pos] = cur_char; break; case COMMAND_PREVIOUS: if (cur_char_pos == 0) { cur_char_pos = max_chars; } cur_char_pos--; cur_char = pgm_read_byte(S_FILENAME_CHARS + cur_char_pos); lcd_write(cur_char); lcd_setCursor(cursor_pos, 1); pfile_info->lfname[cursor_pos] = cur_char; break; } } }
//*************************************************** //*************************************************** void LCD_service::lcd_print(const int x, const int y, const char* str_msg) { lcd_setCursor(x, y); lcd_print(str_msg); }
void lcd_show_dir() { lcd_setCursor(MAX_LCD_LINE_LEN - 1, 1); lcd_write(DIRECTORY_INDICATOR); }