Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 33 additions & 34 deletions TFT/src/User/API/Touch_Screen.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ uint16_t TS_KeyValue(uint8_t totalRect, const GUI_RECT * menuRect)

for (i = 0; i < totalRect; i++)
{
if ((x > menuRect[i].x0) && (x < menuRect[i].x1) && (y > menuRect[i].y0) && (y < menuRect[i].y1))
if ((x >= menuRect[i].x0) && (x <= menuRect[i].x1) && (y >= menuRect[i].y0) && (y <= menuRect[i].y1))
{
#ifdef BUZZER_PIN
if (TS_Sound == true)
Expand Down Expand Up @@ -115,7 +115,7 @@ uint16_t KEY_GetValue(uint8_t totalRect, const GUI_RECT * menuRect)
}
else
{
if (firstPress == false)
if (!firstPress)
{
if (TS_ReDrawIcon)
TS_ReDrawIcon(key_num, 0);
Expand All @@ -136,24 +136,27 @@ uint16_t KEY_GetValue(uint8_t totalRect, const GUI_RECT * menuRect)
return key_return;
}

void drawTouchTargetCross(uint16_t x, uint16_t y, bool red)
{
if (red)
GUI_SetColor(RED); // IRON, WAS BLACK
else
GUI_SetColor(WHITE);

GUI_FillCircle(x, y, 5);

GUI_HLine(x - 25, y, x + 25);
GUI_VLine(x, y - 25, y + 25);
}

static inline uint8_t TS_CalibrationEnsure(uint16_t x, uint16_t y)
{
uint32_t i;
uint16_t tp_x, tp_y;
int lcd_x, lcd_y;

GUI_SetColor(BLACK);
GUI_FillCircle(x, y, 5);

for (i = 0; i < 10; i++)
{
GUI_DrawPoint(x + i, y);
GUI_DrawPoint(x - i, y);
GUI_DrawPoint(x, y + i);
GUI_DrawPoint(x, y - i);
}
drawTouchTargetCross(x, y, true);

while (!TS_IsPressed());
while (!TS_IsPressed()) {};

tp_x = XPT2046_Repeated_Compare_AD(CMD_RDX);
tp_y = XPT2046_Repeated_Compare_AD(CMD_RDY);
Expand All @@ -163,19 +166,20 @@ static inline uint8_t TS_CalibrationEnsure(uint16_t x, uint16_t y)

if (lcd_x < x + TS_ERR_RANGE && lcd_x > x - TS_ERR_RANGE && lcd_y > y - TS_ERR_RANGE && lcd_y < y + TS_ERR_RANGE)
{
GUI_DispStringCenter(LCD_WIDTH / 2, LCD_HEIGHT - 40, LABEL_ADJUST_OK);
Delay_ms(1000);
Buzzer_Play(SOUND_KEYPRESS);
GUI_SetColor(DARKGREEN);
GUI_DispStringCenter(LCD_WIDTH / 2, 62, LABEL_ADJUST_OK);
Delay_ms(2000);
}
else
{
while (TS_IsPressed());
while (TS_IsPressed()) {};

GUI_SetColor(RED);
GUI_DispStringCenter(LCD_WIDTH / 2, LCD_HEIGHT - 40, LABEL_ADJUST_FAILED);
GUI_DispDec(0, 0, lcd_x, 3, 0);
GUI_DispDec(0, 20, lcd_y, 3, 0);
Delay_ms(1000);

GUI_DispStringCenter(LCD_WIDTH / 2, 62, (int32_t)LABEL_ADJUST_FAILED);
Buzzer_AddSound(100, 200);
Delay_ms(2500);
Buzzer_Play(SOUND_KEYPRESS);
return 0;
}

Expand All @@ -188,7 +192,6 @@ void TS_Calibrate(void)
uint32_t LCD_Y[3] = {40, 40, LCD_HEIGHT - 40};
uint16_t TP_X[3], TP_Y[3];
uint32_t tp_num = 0;
int i;

do
{
Expand All @@ -197,27 +200,23 @@ void TS_Calibrate(void)
GUI_SetBkColor(WHITE);
GUI_DispStringCenter(LCD_WIDTH / 2, 5, LABEL_ADJUST_TITLE);
GUI_DispStringCenter(LCD_WIDTH / 2, 25, LABEL_ADJUST_INFO);
GUI_SetColor(RED);

for (tp_num = 0; tp_num < 3; tp_num++)
{
GUI_FillCircle(LCD_X[tp_num], LCD_Y[tp_num], 3);
if (tp_num)
drawTouchTargetCross(LCD_X[tp_num - 1], LCD_Y[tp_num - 1], false);

for (i = 0; i < 10; i++)
{
GUI_DrawPoint(LCD_X[tp_num] + i, LCD_Y[tp_num]);
GUI_DrawPoint(LCD_X[tp_num] - i, LCD_Y[tp_num]);
GUI_DrawPoint(LCD_X[tp_num], LCD_Y[tp_num] + i);
GUI_DrawPoint(LCD_X[tp_num], LCD_Y[tp_num] - i);
}
drawTouchTargetCross(LCD_X[tp_num], LCD_Y[tp_num], true);

while (TS_IsPressed() == false);
while (!TS_IsPressed()) {};
Buzzer_Play(SOUND_KEYPRESS);

TP_X[tp_num] = XPT2046_Repeated_Compare_AD(CMD_RDX);
TP_Y[tp_num] = XPT2046_Repeated_Compare_AD(CMD_RDY);

while (TS_IsPressed() != false);
while (TS_IsPressed()) {};
}
drawTouchTargetCross(LCD_X[tp_num - 1], LCD_Y[tp_num - 1], false);

K = (X1 - X3) * (Y2 - Y3) - (X2 - X3) * (Y1 - Y3);
A = ((XL1 - XL3) * (Y2 - Y3) - (XL2 - XL3) * (Y1 - Y3));
Expand Down