Пример #1
0
//***************************************************
//***************************************************
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?"); 
}
Пример #2
0
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;
	}
}
Пример #3
0
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.
	}
}
Пример #4
0
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);
}
Пример #5
0
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;
  }
}
Пример #6
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);
	}
}
Пример #7
0
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;
    }    
  }
}
Пример #8
0
//***************************************************
//***************************************************
void LCD_service::lcd_print(const int x, const int y, 
								const char* str_msg)
{
	lcd_setCursor(x, y);
	lcd_print(str_msg);
}
Пример #9
0
void lcd_show_dir() {
  lcd_setCursor(MAX_LCD_LINE_LEN - 1, 1);
  
  
  lcd_write(DIRECTORY_INDICATOR);
}