Esempio n. 1
0
void write_lcd(int selected) {
  LCD_Clear();
  LCD_DrawString(0, 8, (u8*)drink[0], strlen(drink[0]));
  LCD_DrawString(2, 8, (u8*)drink[1], strlen(drink[1]));
  LCD_DrawString(4, 8, (u8*)drink[2], strlen(drink[2]));
  LCD_DrawString(6, 8, (u8*)drink[3], strlen(drink[3]));
  LCD_DrawChar(2*selected, 0, '-');  
}
Esempio n. 2
0
void fill_glass(int sel) {
  disable_joystick(); // Disable user input

  LCD_Clear();
  LCD_DrawString(2, 8, (u8*)"Filling...", 10);
  LCD_DrawString(4, 8, (u8*)drink[sel], strlen(drink[sel]));;

  set_all_valves(0); // Safety check; close all valves
  
  int empty_weight = get_weight();
  
  switch(sel) {
  case 0:  // Tequila Sunrise; 30.75% Tequila, 61.5% Orange Juice, 7.75% Grenadine
    LCD_DrawChar(0, 0, '1');
    fill_liquid(TEQUILA, (empty_weight + 0.3075*MAX_WEIGHT));
    LCD_DrawChar(0, 0, '2');
    fill_liquid(ORANGE, (empty_weight + 0.9225*MAX_WEIGHT));
    LCD_DrawChar(0, 0, '3');
    fill_liquid(GRENADINE, (empty_weight + MAX_WEIGHT));
    break;
  case 1: // The Gilbert; 58% Vodka, 30% Soda, 12% Orange Juice
    LCD_DrawChar(0, 0, '1');
    fill_liquid(VODKA, (empty_weight + 0.58*MAX_WEIGHT));
    LCD_DrawChar(0, 0, '2');
    fill_liquid(SODA, (empty_weight + 0.88*MAX_WEIGHT));
    LCD_DrawChar(0, 0, '3');
    fill_liquid(ORANGE, (empty_weight + MAX_WEIGHT));
    break;
  case 2: // Pink Polar Bear; 58% Vodka, 42% Grenadine
    LCD_DrawChar(0, 0, '1');
    fill_liquid(VODKA, (empty_weight + 0.58*MAX_WEIGHT));
    LCD_DrawChar(0, 0, '2');
    fill_liquid(GRENADINE, (empty_weight + MAX_WEIGHT));
    break;
  case 3: // Screwdriver; 48% Vodka, 52% Orange Juice
    LCD_DrawChar(0, 0, '1');
    fill_liquid(VODKA, (empty_weight + 0.48*MAX_WEIGHT));
    LCD_DrawChar(0, 15*8, '2');
    fill_liquid(ORANGE, (empty_weight + MAX_WEIGHT));
    break;
  default:
    break;
  }

  set_all_valves(0); // Safety check; close all valves

  LCD_Clear();
  LCD_DrawString(1, 8, (u8*)"Enjoy...", 8);
  LCD_DrawString(3, 8, (u8*)"Press Joystick", 14);
  LCD_DrawString(5, 8, (u8*)"for new drink", 13);

  enable_joystick(); // Enable user input
}
Esempio n. 3
0
void fill_glass_debug(int sel) {
  char* msg = "Filling...";
  char* msg2;
  int w;

  while (1) {
    w = get_average(100);
    sprintf(msg2, "%d", w);
    LCD_Clear();
    LCD_DrawString(2, 16, (u8*)msg, 10);
    LCD_DrawString(4, 16, (u8*)msg2, strlen(msg2));
    Delayms(100);
  }
}
Esempio n. 4
0
void error_recv(unsigned char id, unsigned char kind, unsigned char offset) {
    LCD_DrawUint(offset, WIDTH-6, 1);
    LCD_DrawUint(kind, WIDTH-9, 1);
    LCD_DrawUint(id, WIDTH-12, 1);
    LCD_DrawString("RcvErr", WIDTH-17, 1, 0);
    LCD_DrawHex(read_servo_buf, offset+1, 1, 2);
}
Esempio n. 5
0
// args are x, y, background_color,
// foreground_color, transparent_flag, string
const char* JSON_evalString(const char* ptr) {
  const char* data[5] = {NULL};
  // this one has to be slightly different, hence cannot use the
  // "safe" function
  int i = 0;
  do {
    if(*ptr == ',') {
      data[i] = (ptr-1);
      i++;
    }
    ptr++;
  } while(i != 5 && *ptr != BREAK_CHAR && *ptr != END_CHAR);

  LCD_DrawString(atoi(data[1]),
                 atoi(data[0]),
                 atoi(data[2]),
                 atoi(data[3]),
                 atoi(data[4]),
                 ptr);
  return ptr;
}
Esempio n. 6
0
void EditBoxDraw(GUI_EDIT_BOX * pEditBox)
{
	int i;
	if (pEditBox->wmObj.Visible)
	{
		// Borders
		LCD_SetTextColor(pEditBox->wmObj.BorderColor);
		if (pEditBox->wmObj.BorderWidth)
		{
			if (pEditBox->wmObj.Visual3D == 1)
			{
				for (i = 0; i < pEditBox->wmObj.BorderWidth; i++)
				{
					LCD_SetTextColor(LCD_COLOR_GREYD);
					// Top Border
					LCD_DrawLine(pEditBox->wmObj.xPos, pEditBox->wmObj.yPos, pEditBox->wmObj.Width-i-1, LCD_DIR_HORIZONTAL);
					// Left Border
					LCD_DrawLine(pEditBox->wmObj.xPos, pEditBox->wmObj.yPos, pEditBox->wmObj.Height-i, LCD_DIR_VERTICAL);

					if (i == pEditBox->wmObj.BorderWidth-1 && pEditBox->wmObj.Color == LCD_COLOR_WHITE)
						LCD_SetTextColor(LCD_COLOR_GREYL);
					else
						LCD_SetTextColor(LCD_COLOR_WHITE);
					// Bottom Border
					LCD_DrawLine(pEditBox->wmObj.xPos+1+i, pEditBox->wmObj.yPos+pEditBox->wmObj.Height-i-1, pEditBox->wmObj.Width-i-2, LCD_DIR_HORIZONTAL);
					// Right Border
					LCD_DrawLine(pEditBox->wmObj.xPos+pEditBox->wmObj.Width-i-1, pEditBox->wmObj.yPos+i+1, pEditBox->wmObj.Height-i-2, LCD_DIR_VERTICAL);
				}
			}
			else
			{
				// Top Border
				LCD_DrawFillRect(pEditBox->wmObj.xPos, pEditBox->wmObj.yPos, pEditBox->wmObj.Width, pEditBox->wmObj.BorderWidth);
				// Left Border
				LCD_DrawFillRect(pEditBox->wmObj.xPos, pEditBox->wmObj.yPos, pEditBox->wmObj.BorderWidth, pEditBox->wmObj.Height);
				// Bottom Border
				LCD_DrawFillRect(pEditBox->wmObj.xPos, pEditBox->wmObj.yPos+pEditBox->wmObj.Height-pEditBox->wmObj.BorderWidth, pEditBox->wmObj.Width, pEditBox->wmObj.BorderWidth);
				// Right Border
				LCD_DrawFillRect(pEditBox->wmObj.xPos+pEditBox->wmObj.Width-pEditBox->wmObj.BorderWidth, pEditBox->wmObj.yPos, pEditBox->wmObj.BorderWidth, pEditBox->wmObj.Height);
			}
		}
		// Back
		if (pEditBox->wmObj.Transparent == 0)
		{
			LCD_SetTextColor(pEditBox->wmObj.Color);
			LCD_DrawFillRect(pEditBox->wmObj.xPos + pEditBox->wmObj.BorderWidth,
							pEditBox->wmObj.yPos + pEditBox->wmObj.BorderWidth,
							pEditBox->wmObj.Width - 2*pEditBox->wmObj.BorderWidth,
							pEditBox->wmObj.Height - 2*pEditBox->wmObj.BorderWidth
							);
		}
		// Text
		LCD_SetFont(pEditBox->wmTxt.vFont);
		if (pEditBox->wmObj.Enable)
			LCD_SetColors(pEditBox->wmTxt.TextColor, pEditBox->wmObj.Color);
		else
			LCD_SetColors(guiChangeColorLight(pEditBox->wmObj.Color, 120), pEditBox->wmObj.Color);

		LCD_DrawString(pEditBox->wmTxt.Text, pEditBox->wmTxt.TextLen, pEditBox->wmTxt.TextPosX, pEditBox->wmTxt.TextPosY);
	}
}