diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index bcecca1dc..9a25b6ac9 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp b/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp
index 4be4ae4dd..0bcbe4169 100644
--- a/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp
+++ b/Marlin/src/HAL/HAL_STM32F1/u8g_com_stm32duino_fsmc.cpp
@@ -35,9 +35,12 @@
#include "U8glib.h"
#include "libmaple/fsmc.h"
#include "libmaple/gpio.h"
+#include "libmaple/dma.h"
#include "boards.h"
-#define LCD_READ_ID 0x04 /* Read display identification information */
+#ifndef LCD_READ_ID
+ #define LCD_READ_ID 0x04 // Read display identification information (0xD3 on ILI9341)
+#endif
/* Timing configuration */
#define FSMC_ADDRESS_SETUP_TIME 15 // AddressSetupTime
@@ -47,6 +50,10 @@ void LCD_IO_Init(uint8_t cs, uint8_t rs);
void LCD_IO_WriteData(uint16_t RegValue);
void LCD_IO_WriteReg(uint16_t Reg);
uint32_t LCD_IO_ReadData(uint16_t RegValue, uint8_t ReadSize);
+#ifdef LCD_USE_DMA_FSMC
+ void LCD_IO_WriteMultiple(uint16_t data, uint32_t count);
+ void LCD_IO_WriteSequence(uint16_t *data, uint16_t length);
+#endif
static uint8_t msgInitCount = 2; // Ignore all messages until 2nd U8G_COM_MSG_INIT
@@ -59,21 +66,25 @@ uint8_t u8g_com_stm32duino_fsmc_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, voi
static uint8_t isCommand;
switch (msg) {
- case U8G_COM_MSG_STOP:
- break;
+ case U8G_COM_MSG_STOP: break;
case U8G_COM_MSG_INIT:
u8g_SetPIOutput(u8g, U8G_PI_RESET);
+ #ifdef LCD_USE_DMA_FSMC
+ dma_init(FSMC_DMA_DEV);
+ dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+ dma_set_priority(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, DMA_PRIORITY_MEDIUM);
+ #endif
+
LCD_IO_Init(u8g->pin_list[U8G_PI_CS], u8g->pin_list[U8G_PI_A0]);
- u8g_Delay(100);
+ u8g_Delay(50);
- if (arg_ptr != nullptr)
+ if (arg_ptr)
*((uint32_t *)arg_ptr) = LCD_IO_ReadData(LCD_READ_ID, 3);
-
isCommand = 0;
break;
- case U8G_COM_MSG_ADDRESS: // define cmd (arg_val = 0) or data mode (arg_val = 1)
+ case U8G_COM_MSG_ADDRESS: // define cmd (arg_val = 0) or data mode (arg_val = 1)
isCommand = arg_val == 0 ? 1 : 0;
break;
@@ -89,7 +100,6 @@ uint8_t u8g_com_stm32duino_fsmc_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, voi
break;
case U8G_COM_MSG_WRITE_SEQ:
-
for (uint8_t i = 0; i < arg_val; i += 2)
LCD_IO_WriteData(*(uint16_t *)(((uint32_t)arg_ptr) + i));
break;
@@ -107,7 +117,7 @@ __attribute__((always_inline)) __STATIC_INLINE void __DSB(void) {
__ASM volatile ("dsb 0xF":::"memory");
}
-#define FSMC_CS_NE1 PD7
+#define FSMC_CS_NE1 PD7
#ifdef STM32_XL_DENSITY
#define FSMC_CS_NE2 PG9
@@ -257,7 +267,7 @@ void LCD_IO_WriteReg(uint16_t Reg) {
uint32_t LCD_IO_ReadData(uint16_t RegValue, uint8_t ReadSize) {
volatile uint32_t data;
- LCD->REG = (uint16_t)RegValue;
+ LCD->REG = RegValue;
__DSB();
data = LCD->RAM; // dummy read
@@ -267,9 +277,48 @@ uint32_t LCD_IO_ReadData(uint16_t RegValue, uint8_t ReadSize) {
data <<= 8;
data |= (LCD->RAM & 0x00FF);
}
- return (uint32_t)data;
+ return uint32_t(data);
}
-#endif // HAS_GRAPHICAL_LCD
+#if ENABLED(LCD_USE_DMA_FSMC)
+
+void LCD_IO_WriteMultiple(uint16_t color, uint32_t count) {
+ while (count > 0) {
+ dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, &color, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM);
+ dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, count > 65535 ? 65535 : count);
+ dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+ dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+
+ while ((dma_get_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL) & 0x0A) == 0) {};
+ dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+ count = count > 65535 ? count - 65535 : 0;
+ }
+}
+
+void LCD_IO_WriteSequence(uint16_t *data, uint16_t length) {
+ dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, data, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM | DMA_PINC_MODE);
+ dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, length);
+ dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+ dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+
+ while ((dma_get_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL) & 0x0A) == 0) {};
+ dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+}
+
+void LCD_IO_WriteSequence_Async(uint16_t *data, uint16_t length) {
+ dma_setup_transfer(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, data, DMA_SIZE_16BITS, &LCD->RAM, DMA_SIZE_16BITS, DMA_MEM_2_MEM | DMA_PINC_MODE);
+ dma_set_num_transfers(FSMC_DMA_DEV, FSMC_DMA_CHANNEL, length);
+ dma_clear_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+ dma_enable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+}
+
+void LCD_IO_WaitSequence_Async() {
+ while ((dma_get_isr_bits(FSMC_DMA_DEV, FSMC_DMA_CHANNEL) & 0x0A) == 0) {};
+ dma_disable(FSMC_DMA_DEV, FSMC_DMA_CHANNEL);
+}
+
+#endif // LCD_USE_DMA_FSMC
+
+#endif // HAS_GRAPHICAL_LCD
#endif // ARDUINO_ARCH_STM32F1 && FSMC_CS_PIN
diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index d94fa51ac..c248e4814 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -57,6 +57,10 @@
#include "gcode/parser.h"
#include "gcode/queue.h"
+#if ENABLED(TOUCH_BUTTONS)
+ #include "feature/touch/xpt2046.h"
+#endif
+
#if ENABLED(HOST_ACTION_COMMANDS)
#include "feature/host_actions.h"
#endif
@@ -943,6 +947,10 @@ void setup() {
// This also updates variables in the planner, elsewhere
settings.first_load();
+ #if ENABLED(TOUCH_BUTTONS)
+ touch.init();
+ #endif
+
#if HAS_M206_COMMAND
// Initialize current position based on home_offset
LOOP_XYZ(a) current_position[a] += home_offset[a];
diff --git a/Marlin/src/feature/touch/xpt2046.cpp b/Marlin/src/feature/touch/xpt2046.cpp
new file mode 100644
index 000000000..d93e99681
--- /dev/null
+++ b/Marlin/src/feature/touch/xpt2046.cpp
@@ -0,0 +1,129 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if ENABLED(TOUCH_BUTTONS)
+
+#include "xpt2046.h"
+#include "../../inc/MarlinConfig.h"
+
+#ifndef TOUCH_INT_PIN
+ #define TOUCH_INT_PIN -1
+#endif
+#ifndef TOUCH_MISO_PIN
+ #define TOUCH_MISO_PIN MISO_PIN
+#endif
+#ifndef TOUCH_MOSI_PIN
+ #define TOUCH_MOSI_PIN MOSI_PIN
+#endif
+#ifndef TOUCH_SCK_PIN
+ #define TOUCH_SCK_PIN SCK_PIN
+#endif
+#ifndef TOUCH_CS_PIN
+ #define TOUCH_CS_PIN CS_PIN
+#endif
+
+XPT2046 touch;
+extern int8_t encoderDiff;
+
+void XPT2046::init(void) {
+ SET_INPUT(TOUCH_INT_PIN); // Pendrive interrupt pin, used as polling in getInTouch
+ SET_INPUT(TOUCH_MISO_PIN);
+ SET_OUTPUT(TOUCH_MOSI_PIN);
+
+ OUT_WRITE(TOUCH_SCK_PIN, 0);
+ OUT_WRITE(TOUCH_CS_PIN, 1);
+
+ // Read once to enable pendrive status pin
+ getInTouch(XPT2046_X);
+}
+
+#include "../../lcd/ultralcd.h" // For EN_C bit mask
+
+uint8_t XPT2046::read_buttons() {
+ int16_t tsoffsets[4] = { 0 };
+
+ static uint32_t timeout = 0;
+ if (PENDING(millis(), timeout)) return 0;
+ timeout = millis() + 250;
+
+ if (tsoffsets[0] + tsoffsets[1] == 0) {
+ // Not yet set, so use defines as fallback...
+ tsoffsets[0] = XPT2046_X_CALIBRATION;
+ tsoffsets[1] = XPT2046_X_OFFSET;
+ tsoffsets[2] = XPT2046_Y_CALIBRATION;
+ tsoffsets[3] = XPT2046_Y_OFFSET;
+ }
+
+ // We rely on XPT2046 compatible mode to ADS7843, hence no Z1 and Z2 measurements possible.
+
+ if (READ(TOUCH_INT_PIN)) return 0; // If HIGH there are no screen presses.
+ const uint16_t x = uint16_t(((uint32_t(getInTouch(XPT2046_X))) * tsoffsets[0]) >> 16) + tsoffsets[1],
+ y = uint16_t(((uint32_t(getInTouch(XPT2046_Y))) * tsoffsets[2]) >> 16) + tsoffsets[3];
+ if (READ(TOUCH_INT_PIN)) return 0; // Fingers must still be on the TS for a valid read.
+
+ if (y < 185 || y > 224) return 0;
+
+ if (WITHIN(x, 21, 98)) encoderDiff = -(ENCODER_STEPS_PER_MENU_ITEM) * ENCODER_PULSES_PER_STEP;
+ else if (WITHIN(x, 121, 198)) encoderDiff = ENCODER_STEPS_PER_MENU_ITEM * ENCODER_PULSES_PER_STEP;
+ else if (WITHIN(x, 221, 298)) return EN_C;
+
+ return 0;
+}
+
+uint16_t XPT2046::getInTouch(const XPTCoordinate coordinate) {
+ uint16_t data[3];
+
+ OUT_WRITE(TOUCH_CS_PIN, LOW);
+
+ const uint8_t coord = uint8_t(coordinate) | XPT2046_CONTROL | XPT2046_DFR_MODE;
+ for (uint16_t i = 0; i < 3 ; i++) {
+ for (uint8_t j = 0x80; j; j >>= 1) {
+ WRITE(TOUCH_SCK_PIN, LOW);
+ WRITE(TOUCH_MOSI_PIN, bool(coord & j));
+ WRITE(TOUCH_SCK_PIN, HIGH);
+ }
+
+ data[i] = 0;
+ for (uint16_t j = 0x8000; j; j >>= 1) {
+ WRITE(TOUCH_SCK_PIN, LOW);
+ if (READ(TOUCH_MISO_PIN)) data[i] |= j;
+ WRITE(TOUCH_SCK_PIN, HIGH);
+ }
+ WRITE(TOUCH_SCK_PIN, LOW);
+ data[i] >>= 4;
+ }
+
+ WRITE(TOUCH_CS_PIN, HIGH);
+
+ uint16_t delta01 = _MAX(data[0], data[1]) - _MIN(data[0], data[1]),
+ delta02 = _MAX(data[0], data[2]) - _MIN(data[0], data[2]),
+ delta12 = _MAX(data[1], data[2]) - _MIN(data[1], data[2]);
+
+ if (delta01 <= delta02 && delta01 <= delta12)
+ return (data[0] + data[1]) >> 1;
+
+ if (delta02 <= delta12)
+ return (data[0] + data[2]) >> 1;
+
+ return (data[1] + data[2]) >> 1;
+}
+
+#endif // TOUCH_BUTTONS
diff --git a/Marlin/src/feature/touch/xpt2046.h b/Marlin/src/feature/touch/xpt2046.h
new file mode 100644
index 000000000..26814926a
--- /dev/null
+++ b/Marlin/src/feature/touch/xpt2046.h
@@ -0,0 +1,43 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+#pragma once
+
+#include
+
+// Relies on XPT2046-compatible mode of ADS7843,
+// hence no Z1 / Z2 measurements are possible.
+
+#define XPT2046_DFR_MODE 0x00
+#define XPT2046_SER_MODE 0x04
+#define XPT2046_CONTROL 0x80
+
+enum XPTCoordinate : uint8_t {
+ XPT2046_X = 0x10,
+ XPT2046_Y = 0x50
+};
+
+class XPT2046 {
+public:
+ static void init(void);
+ static uint8_t read_buttons();
+private:
+ static uint16_t getInTouch(const XPTCoordinate coordinate);
+};
+
+extern XPT2046 touch;
diff --git a/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp b/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp
index ca3d7f575..971bc4c2b 100644
--- a/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp
+++ b/Marlin/src/lcd/dogm/u8g_dev_tft_320x240_upscale_from_128x64.cpp
@@ -61,14 +61,21 @@
#include "U8glib.h"
#include "HAL_LCD_com_defines.h"
-#include "string.h"
+#include
+
+#if ENABLED(LCD_USE_DMA_FSMC)
+ extern void LCD_IO_WriteSequence(uint16_t *data, uint16_t length);
+ extern void LCD_IO_WriteSequence_Async(uint16_t *data, uint16_t length);
+ extern void LCD_IO_WaitSequence_Async();
+ extern void LCD_IO_WriteMultiple(uint16_t color, uint32_t count);
+#endif
#define WIDTH 128
#define HEIGHT 64
#define PAGE_HEIGHT 8
#define X_MIN 32
-#define Y_MIN 56
+#define Y_MIN 32
#define X_MAX (X_MIN + 2 * WIDTH - 1)
#define Y_MAX (Y_MIN + 2 * HEIGHT - 1)
@@ -76,6 +83,30 @@
#define LCD_ROW 0x2B /* Row address register */
#define LCD_WRITE_RAM 0x2C
+// see https://ee-programming-notepad.blogspot.com/2016/10/16-bit-color-generator-picker.html
+
+#define COLOR_BLACK 0x0000
+#define COLOR_WHITE 0xFFFF
+#define COLOR_BLUE 0x21DD
+#define COLOR_RED 0xF800
+#define COLOR_DARK 0x0003 // Some dark color
+
+#ifndef TFT_MARLINUI_COLOR
+ #define TFT_MARLINUI_COLOR COLOR_WHITE
+#endif
+#ifndef TFT_MARLINBG_COLOR
+ #define TFT_MARLINBG_COLOR COLOR_BLACK
+#endif
+#ifndef TFT_DISABLED_COLOR
+ #define TFT_DISABLED_COLOR COLOR_DARK
+#endif
+#ifndef TFT_BTSLEFT_COLOR
+ #define TFT_BTSLEFT_COLOR COLOR_BLUE
+#endif
+#ifndef TFT_BTRIGHT_COLOR
+ #define TFT_BTRIGHT_COLOR COLOR_RED
+#endif
+
static uint32_t lcd_id = 0;
#define U8G_ESC_DATA(x) (uint8_t)(x >> 8), (uint8_t)(x & 0xFF)
@@ -94,6 +125,45 @@ static const uint8_t clear_screen_sequence[] = {
U8G_ESC_END
};
+#if ENABLED(TOUCH_BUTTONS)
+
+ static const uint8_t separation_line_sequence_left[] = {
+ U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), U8G_ESC_DATA(10), U8G_ESC_DATA(159),
+ U8G_ESC_ADR(0), LCD_ROW, U8G_ESC_ADR(1), U8G_ESC_DATA(170), U8G_ESC_DATA(173),
+ U8G_ESC_ADR(0), LCD_WRITE_RAM, U8G_ESC_ADR(1),
+ U8G_ESC_END
+ };
+
+ static const uint8_t separation_line_sequence_right[] = {
+ U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), U8G_ESC_DATA(160), U8G_ESC_DATA(309),
+ U8G_ESC_ADR(0), LCD_ROW, U8G_ESC_ADR(1), U8G_ESC_DATA(170), U8G_ESC_DATA(173),
+ U8G_ESC_ADR(0), LCD_WRITE_RAM, U8G_ESC_ADR(1),
+ U8G_ESC_END
+ };
+
+ static const uint8_t button0_sequence[] = {
+ U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), U8G_ESC_DATA(20), U8G_ESC_DATA(99),
+ U8G_ESC_ADR(0), LCD_ROW, U8G_ESC_ADR(1), U8G_ESC_DATA(185), U8G_ESC_DATA(224),
+ U8G_ESC_ADR(0), LCD_WRITE_RAM, U8G_ESC_ADR(1),
+ U8G_ESC_END
+ };
+
+ static const uint8_t button1_sequence[] = {
+ U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), U8G_ESC_DATA(120), U8G_ESC_DATA(199),
+ U8G_ESC_ADR(0), LCD_ROW, U8G_ESC_ADR(1), U8G_ESC_DATA(185), U8G_ESC_DATA(224),
+ U8G_ESC_ADR(0), LCD_WRITE_RAM, U8G_ESC_ADR(1),
+ U8G_ESC_END
+ };
+
+ static const uint8_t button2_sequence[] = {
+ U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), U8G_ESC_DATA(220), U8G_ESC_DATA(299),
+ U8G_ESC_ADR(0), LCD_ROW, U8G_ESC_ADR(1), U8G_ESC_DATA(185), U8G_ESC_DATA(224),
+ U8G_ESC_ADR(0), LCD_WRITE_RAM, U8G_ESC_ADR(1),
+ U8G_ESC_END
+ };
+
+#endif
+
static const uint8_t st7789v_init_sequence[] = { // 0x8552 - ST7789V
U8G_ESC_ADR(0),
0x10,
@@ -120,53 +190,254 @@ static const uint8_t st7789v_init_sequence[] = { // 0x8552 - ST7789V
U8G_ESC_END
};
+static const uint8_t ili9341_init_sequence[] = { // 0x9341 - ILI9341
+ U8G_ESC_ADR(0),
+ 0x10,
+ U8G_ESC_DLY(10),
+ 0x01,
+ U8G_ESC_DLY(100), U8G_ESC_DLY(100),
+ 0x36, U8G_ESC_ADR(1), 0xE8,
+ U8G_ESC_ADR(0), 0x3A, U8G_ESC_ADR(1), 0x55,
+ U8G_ESC_ADR(0), LCD_COLUMN, U8G_ESC_ADR(1), 0x00, 0x00, 0x01, 0x3F,
+ U8G_ESC_ADR(0), LCD_ROW, U8G_ESC_ADR(1), 0x00, 0x00, 0x00, 0xEF,
+ U8G_ESC_ADR(0), 0xC5, U8G_ESC_ADR(1), 0x3E, 0x28,
+ U8G_ESC_ADR(0), 0xC7, U8G_ESC_ADR(1), 0x86,
+ U8G_ESC_ADR(0), 0xB1, U8G_ESC_ADR(1), 0x00, 0x18,
+ U8G_ESC_ADR(0), 0xC0, U8G_ESC_ADR(1), 0x23,
+ U8G_ESC_ADR(0), 0xC1, U8G_ESC_ADR(1), 0x10,
+ U8G_ESC_ADR(0), 0x29,
+ U8G_ESC_ADR(0), 0x11,
+ U8G_ESC_DLY(100),
+ U8G_ESC_END
+};
+
+#if ENABLED(TOUCH_BUTTONS)
+
+ static const uint8_t button0[] = {
+ B01111111,B11111111,B11111111,B11111111,B11111110,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00010000,B00000000,B00000001,
+ B10000000,B00000000,B00010000,B00000000,B00000001,
+ B10000000,B01000000,B00010000,B00000000,B00000001,
+ B10000000,B11100000,B00010000,B00000000,B00000001,
+ B10000001,B11110000,B00010000,B00000000,B00000001,
+ B10000011,B11111000,B00010000,B00000000,B00000001,
+ B10000111,B11111100,B00010000,B11111111,B11100001,
+ B10000000,B11100000,B00010000,B11111111,B11100001,
+ B10000000,B11100000,B00010000,B00000000,B00000001,
+ B10000000,B11100000,B00010000,B00000000,B00000001,
+ B10000000,B11100000,B00010000,B00000000,B00000001,
+ B10000000,B11100000,B00010000,B00000000,B00000001,
+ B10000000,B00000000,B00010000,B00000000,B00000001,
+ B10000000,B00000000,B00010000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B01111111,B11111111,B11111111,B11111111,B11111110,
+ };
+
+ static const uint8_t button1[] = {
+ B01111111,B11111111,B11111111,B11111111,B11111110,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00010000,B00000000,B00000001,
+ B10000000,B00000000,B00010000,B00000110,B00000001,
+ B10000000,B11100000,B00010000,B00000110,B00000001,
+ B10000000,B11100000,B00010000,B00000110,B00000001,
+ B10000000,B11100000,B00010000,B00000110,B00000001,
+ B10000000,B11100000,B00010000,B00000110,B00000001,
+ B10000000,B11100000,B00010000,B11111111,B11110001,
+ B10000111,B11111100,B00010000,B11111111,B11110001,
+ B10000011,B11111000,B00010000,B00000110,B00000001,
+ B10000001,B11110000,B00010000,B00000110,B00000001,
+ B10000000,B11100000,B00010000,B00000110,B00000001,
+ B10000000,B01000000,B00010000,B00000110,B00000001,
+ B10000000,B00000000,B00010000,B00000110,B00000001,
+ B10000000,B00000000,B00010000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B01111111,B11111111,B11111111,B11111111,B11111110,
+ };
+
+ static const uint8_t button2[] = {
+ B01111111,B11111111,B11111111,B11111111,B11111110,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000001,B11000000,B00000001,
+ B10000000,B00000000,B01000001,B11000000,B00000001,
+ B10000000,B00000000,B11000001,B11000000,B00000001,
+ B10000000,B00000001,B11111111,B11000000,B00000001,
+ B10000000,B00000011,B11111111,B11000000,B00000001,
+ B10000000,B00000001,B11111111,B11000000,B00000001,
+ B10000000,B00000000,B11000000,B00000000,B00000001,
+ B10000000,B00000000,B01000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B10000000,B00000000,B00000000,B00000000,B00000001,
+ B01111111,B11111111,B11111111,B11111111,B11111110,
+ };
+
+ void drawImage(const uint8_t *data, u8g_t *u8g, u8g_dev_t *dev, uint16_t length, uint16_t height, uint16_t color) {
+ uint16_t buffer[160];
+
+ for (uint16_t i = 0; i < height; i++) {
+ uint16_t k = 0;
+ for (uint16_t j = 0; j < length; j++) {
+ uint16_t v = TFT_MARLINBG_COLOR;
+ if (*(data + (i * (length >> 3) + (j >> 3))) & (0x80 >> (j & 7)))
+ v = color;
+ else
+ v = TFT_MARLINBG_COLOR;
+ buffer[k++] = v; buffer[k++] = v;
+ }
+ #ifdef LCD_USE_DMA_FSMC
+ if (k <= 80) { // generally is... for our buttons
+ memcpy(&buffer[k], &buffer[0], k * sizeof(uint16_t));
+ LCD_IO_WriteSequence(buffer, k * sizeof(uint16_t));
+ }
+ else {
+ LCD_IO_WriteSequence(buffer, k);
+ LCD_IO_WriteSequence(buffer, k);
+ }
+ #else
+ u8g_WriteSequence(u8g, dev, k << 1, (uint8_t *)buffer);
+ u8g_WriteSequence(u8g, dev, k << 1, (uint8_t *)buffer);
+ #endif
+ }
+ }
+
+#endif // TOUCH_BUTTONS
+
+// Used to fill RGB565 (16bits) background
+inline void memset2(const void *ptr, uint16_t fill, size_t cnt) {
+ uint16_t* wptr = (uint16_t*) ptr;
+ for (size_t i = 0; i < cnt; i += 2) {
+ *wptr = fill;
+ wptr++;
+ }
+}
+
+static bool preinit = true;
+static uint8_t page;
+
uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem);
- uint16_t buffer[256];
- uint32_t i, j, k;
-
+ #ifdef LCD_USE_DMA_FSMC
+ static uint16_t bufferA[512], bufferB[512];
+ uint16_t* buffer = &bufferA[0];
+ bool allow_async = true;
+ #else
+ uint16_t buffer[256]; // 16-bit RGB 565 pixel line buffer
+ #endif
+ uint16_t i;
switch (msg) {
case U8G_DEV_MSG_INIT:
dev->com_fn(u8g, U8G_COM_MSG_INIT, U8G_SPI_CLK_CYCLE_NONE, &lcd_id);
if (lcd_id == 0x040404) return 0; // No connected display on FSMC
if (lcd_id == 0xFFFFFF) return 0; // No connected display on SPI
- memset(buffer, 0x00, sizeof(buffer));
-
if ((lcd_id & 0xFFFF) == 0x8552) // ST7789V
u8g_WriteEscSeqP(u8g, dev, st7789v_init_sequence);
+ if ((lcd_id & 0xFFFF) == 0x9341) // ILI9341
+ u8g_WriteEscSeqP(u8g, dev, ili9341_init_sequence);
+
+ if (preinit) {
+ preinit = false;
+ return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
+ }
u8g_WriteEscSeqP(u8g, dev, clear_screen_sequence);
- for (i = 0; i < 960; i++)
- u8g_WriteSequence(u8g, dev, 160, (uint8_t *)buffer);
- break;
+ #ifdef LCD_USE_DMA_FSMC
+ LCD_IO_WriteMultiple(TFT_MARLINBG_COLOR, (320*240));
+ #else
+ memset2(buffer, TFT_MARLINBG_COLOR, 160);
+ for (uint16_t i = 0; i < 960; i++)
+ u8g_WriteSequence(u8g, dev, 160, (uint8_t *)buffer);
+ #endif
- case U8G_DEV_MSG_STOP:
- break;
+ // bottom line and buttons
+ #if ENABLED(TOUCH_BUTTONS)
+
+ #ifdef LCD_USE_DMA_FSMC
+ u8g_WriteEscSeqP(u8g, dev, separation_line_sequence_left);
+ LCD_IO_WriteMultiple(TFT_DISABLED_COLOR, 300);
+ u8g_WriteEscSeqP(u8g, dev, separation_line_sequence_right);
+ LCD_IO_WriteMultiple(TFT_DISABLED_COLOR, 300);
+ #else
+ memset2(buffer, TFT_DISABLED_COLOR, 150);
+ u8g_WriteEscSeqP(u8g, dev, separation_line_sequence_left);
+ for (uint8_t i = 4; i--;)
+ u8g_WriteSequence(u8g, dev, 150, (uint8_t *)buffer);
+ u8g_WriteEscSeqP(u8g, dev, separation_line_sequence_right);
+ for (uint8_t i = 4; i--;)
+ u8g_WriteSequence(u8g, dev, 150, (uint8_t *)buffer);
+ #endif
+
+ u8g_WriteEscSeqP(u8g, dev, button0_sequence);
+ drawImage(button0, u8g, dev, 40, 20, TFT_BTSLEFT_COLOR);
+
+ u8g_WriteEscSeqP(u8g, dev, button1_sequence);
+ drawImage(button1, u8g, dev, 40, 20, TFT_BTSLEFT_COLOR);
+
+ u8g_WriteEscSeqP(u8g, dev, button2_sequence);
+ drawImage(button2, u8g, dev, 40, 20, TFT_BTRIGHT_COLOR);
+
+ #endif // TOUCH_BUTTONS
+
+ return 0;
+
+ case U8G_DEV_MSG_STOP: preinit = true; break;
case U8G_DEV_MSG_PAGE_FIRST:
+ page = 0;
u8g_WriteEscSeqP(u8g, dev, page_first_sequence);
break;
case U8G_DEV_MSG_PAGE_NEXT:
- for (j = 0; j < 8; j++) {
- k = 0;
- for (i = 0; i < (uint32_t)pb->width; i++) {
+ if (++page > 8) return 1;
+
+ for (uint8_t y = 0; y < 8; y++) {
+ uint32_t k = 0;
+ #ifdef LCD_USE_DMA_FSMC
+ buffer = (y & 1) ? bufferB : bufferA;
+ #endif
+ for (uint16_t i = 0; i < (uint32_t)pb->width; i++) {
const uint8_t b = *(((uint8_t *)pb->buf) + i);
- const uint16_t c = TEST(b, j) ? 0x7FFF : 0x0000;
+ const uint16_t c = TEST(b, y) ? TFT_MARLINUI_COLOR : TFT_MARLINBG_COLOR;
buffer[k++] = c; buffer[k++] = c;
}
- for (k = 0; k < 2; k++) {
- u8g_WriteSequence(u8g, dev, 128, (uint8_t*)buffer);
- u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[64]));
- u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[128]));
- u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[192]));
- }
+ #ifdef LCD_USE_DMA_FSMC
+ memcpy(&buffer[256], &buffer[0], 512);
+ if (allow_async) {
+ if (y > 0 || page > 1) LCD_IO_WaitSequence_Async();
+ if (y == 7 && page == 8)
+ LCD_IO_WriteSequence(buffer, 512); // last line of last page
+ else
+ LCD_IO_WriteSequence_Async(buffer, 512);
+ }
+ else
+ LCD_IO_WriteSequence(buffer, 512);
+ #else
+ for (uint8_t i = 2; i--;) {
+ u8g_WriteSequence(u8g, dev, 128, (uint8_t*)buffer);
+ u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[64]));
+ u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[128]));
+ u8g_WriteSequence(u8g, dev, 128, (uint8_t*)&(buffer[192]));
+ }
+ #endif
}
break;
case U8G_DEV_MSG_SLEEP_ON:
+ // Enter Sleep Mode (10h)
+ return 1;
case U8G_DEV_MSG_SLEEP_OFF:
+ // Sleep Out (11h)
return 1;
}
return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg);
@@ -174,4 +445,4 @@ uint8_t u8g_dev_tft_320x240_upscale_from_128x64_fn(u8g_t *u8g, u8g_dev_t *dev, u
U8G_PB_DEV(u8g_dev_tft_320x240_upscale_from_128x64, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_tft_320x240_upscale_from_128x64_fn, U8G_COM_HAL_FSMC_FN);
-#endif // HAS_GRAPHICAL_LCD
+#endif // HAS_GRAPHICAL_LCD && FSMC_CS
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index 2fb2b209e..169aa2f6f 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -102,6 +102,11 @@
#if HAS_SLOW_BUTTONS
volatile uint8_t MarlinUI::slow_buttons;
#endif
+ #if ENABLED(TOUCH_BUTTONS)
+ #include "../feature/touch/xpt2046.h"
+ volatile uint8_t MarlinUI::touch_buttons;
+ uint8_t MarlinUI::read_touch_buttons() { return touch.read_buttons(); }
+ #endif
#endif
#if ENABLED(INIT_SDCARD_ON_BOOT)
@@ -324,8 +329,13 @@ void MarlinUI::init() {
#endif
#endif
- #if HAS_ENCODER_ACTION && HAS_SLOW_BUTTONS
- slow_buttons = 0;
+ #if HAS_ENCODER_ACTION
+ #if HAS_SLOW_BUTTONS
+ slow_buttons = 0;
+ #endif
+ #if ENABLED(TOUCH_BUTTONS)
+ touch_buttons = 0;
+ #endif
#endif
update_buttons();
@@ -823,6 +833,11 @@ void MarlinUI::update() {
next_lcd_update_ms = ms + LCD_UPDATE_INTERVAL;
+ #if ENABLED(TOUCH_BUTTONS)
+ if (on_status_screen())
+ next_lcd_update_ms += (LCD_UPDATE_INTERVAL) * 2;
+ #endif
+
#if ENABLED(LCD_HAS_STATUS_INDICATORS)
update_indicators();
#endif
@@ -833,6 +848,10 @@ void MarlinUI::update() {
slow_buttons = read_slow_buttons(); // Buttons that take too long to read in interrupt context
#endif
+ #if ENABLED(TOUCH_BUTTONS)
+ touch_buttons = read_touch_buttons();
+ #endif
+
#if ENABLED(REPRAPWORLD_KEYPAD)
if (handle_keypad()) {
@@ -1180,6 +1199,9 @@ void MarlinUI::update() {
#if HAS_SLOW_BUTTONS
| slow_buttons
#endif
+ #if ENABLED(TOUCH_BUTTONS)
+ | touch_buttons
+ #endif
;
#elif HAS_ADC_BUTTONS
buttons = 0;
diff --git a/Marlin/src/lcd/ultralcd.h b/Marlin/src/lcd/ultralcd.h
index 5a63f67e8..2325b5b95 100644
--- a/Marlin/src/lcd/ultralcd.h
+++ b/Marlin/src/lcd/ultralcd.h
@@ -56,7 +56,11 @@
uint8_t get_ADC_keyValue();
#endif
- #define LCD_UPDATE_INTERVAL 100
+ #if ENABLED(TOUCH_BUTTONS)
+ #define LCD_UPDATE_INTERVAL 50
+ #else
+ #define LCD_UPDATE_INTERVAL 100
+ #endif
#if HAS_LCD_MENU
@@ -497,6 +501,11 @@ public:
static volatile uint8_t slow_buttons;
static uint8_t read_slow_buttons();
#endif
+ #if ENABLED(TOUCH_BUTTONS)
+ static volatile uint8_t touch_buttons;
+ static uint8_t read_touch_buttons();
+ #endif
+
static void update_buttons();
static inline bool button_pressed() { return BUTTON_CLICK(); }
#if EITHER(AUTO_BED_LEVELING_UBL, G26_MESH_VALIDATION)
diff --git a/Marlin/src/pins/pinsDebug_list.h b/Marlin/src/pins/pinsDebug_list.h
index 26968ed00..19bdb0aad 100644
--- a/Marlin/src/pins/pinsDebug_list.h
+++ b/Marlin/src/pins/pinsDebug_list.h
@@ -1160,3 +1160,15 @@
#if PIN_EXISTS(FET_SAFETY)
REPORT_NAME_DIGITAL(__LINE__, FET_SAFETY_PIN)
#endif
+#if PIN_EXISTS(TOUCH_MISO)
+ REPORT_NAME_DIGITAL(__LINE__, TOUCH_MISO_PIN)
+#endif
+#if PIN_EXISTS(TOUCH_MOSI)
+ REPORT_NAME_DIGITAL(__LINE__, TOUCH_MOSI_PIN)
+#endif
+#if PIN_EXISTS(TOUCH_SCK)
+ REPORT_NAME_DIGITAL(__LINE__, TOUCH_SCK_PIN)
+#endif
+#if PIN_EXISTS(TOUCH_CS)
+ REPORT_NAME_DIGITAL(__LINE__, TOUCH_CS_PIN)
+#endif
diff --git a/Marlin/src/pins/stm32/pins_BIGTREE_SKR_PRO_V1.1.h b/Marlin/src/pins/stm32/pins_BIGTREE_SKR_PRO_V1.1.h
index 2697bbe2d..3b944a5dd 100644
--- a/Marlin/src/pins/stm32/pins_BIGTREE_SKR_PRO_V1.1.h
+++ b/Marlin/src/pins/stm32/pins_BIGTREE_SKR_PRO_V1.1.h
@@ -103,13 +103,13 @@
//
#if ENABLED(TMC_USE_SW_SPI)
#ifndef TMC_SW_MOSI
- #define TMC_SW_MOSI PC12
+ #define TMC_SW_MOSI PC12
#endif
#ifndef TMC_SW_MISO
- #define TMC_SW_MISO PC11
+ #define TMC_SW_MISO PC11
#endif
#ifndef TMC_SW_SCK
- #define TMC_SW_SCK PC10
+ #define TMC_SW_SCK PC10
#endif
#endif
diff --git a/Marlin/src/pins/stm32/pins_JGAURORA_A5S_A1.h b/Marlin/src/pins/stm32/pins_JGAURORA_A5S_A1.h
index f68e8dc51..27c7986da 100644
--- a/Marlin/src/pins/stm32/pins_JGAURORA_A5S_A1.h
+++ b/Marlin/src/pins/stm32/pins_JGAURORA_A5S_A1.h
@@ -117,10 +117,13 @@
#define BEEPER_PIN PC3 // use PB7 to shut up if desired
#define LED_PIN PC13
+//
// Touch support
-#define BTN_ENC PA11 // Real pin is needed to enable encoder's push button functionality used by touch screen. PA11 gives stable value.
-
-#define TOUCH_CS PA4
-//#define TOUCH_INTERRUPT PC4 // Not yet implemented
+//
+#if ENABLED(TOUCH_BUTTONS)
+ #define BTN_ENC PA11 // Real pin needed to enable encoder's push button functionality used by touch screen. PA11 gives stable value.
+ #define TOUCH_CS_PIN PA4
+ #define TOUCH_INT_PIN PC4
+#endif
#define NO_PAUSE_AFTER_PRINT
diff --git a/Marlin/src/pins/stm32/pins_MKS_ROBIN_MINI.h b/Marlin/src/pins/stm32/pins_MKS_ROBIN_MINI.h
index d23c1f1d3..0a08e7220 100755
--- a/Marlin/src/pins/stm32/pins_MKS_ROBIN_MINI.h
+++ b/Marlin/src/pins/stm32/pins_MKS_ROBIN_MINI.h
@@ -53,6 +53,10 @@
#define Z_MIN_PIN PA11
#define Z_MAX_PIN PC4
+#ifndef FIL_RUNOUT_PIN
+ #define FIL_RUNOUT_PIN PF11 // MT_DET
+#endif
+
//
// Steppers
//
@@ -76,44 +80,54 @@
// Temperature Sensors
//
#define TEMP_0_PIN PC1 // TH1
-//#define TEMP_1_PIN PC2 // TH2
#define TEMP_BED_PIN PC0 // TB1
//
// Heaters / Fans
//
#define HEATER_0_PIN PC3 // HEATER1
-//#define HEATER_1_PIN PA6 // HEATER2
#define HEATER_BED_PIN PA0 // HOT BED
#define FAN_PIN PB1 // FAN
-#define BTN_ENC PB3 // Pin is not connected. Real pin is needed to enable encoder's push button functionality used by touch screen
-
+//
+// Thermocouples
+//
//#define MAX6675_SS_PIN PE5 // TC1 - CS1
//#define MAX6675_SS_PIN PE6 // TC2 - CS2
+//
+// Misc. Functions
+//
#define POWER_LOSS_PIN PA2 // PW_DET
#define PS_ON_PIN PA3 // PW_OFF
-#define FIL_RUNOUT_PIN PF11 // MT_DET
-#define BEEPER_PIN PC5
//#define LED_PIN PB2
+//
+// LCD / Controller
+//
+#define BEEPER_PIN PC5
+#define SD_DETECT_PIN PD12
+
/**
* Note: MKS Robin TFT screens use various TFT controllers.
* If the screen stays white, disable 'LCD_RESET_PIN'
* to let the bootloader init the screen.
*/
-#define LCD_RESET_PIN PF6
-#define NO_LCD_REINIT // Suppress LCD re-initialization
-
-#define LCD_BACKLIGHT_PIN PD13
-#define FSMC_CS_PIN PD7 // NE4
-#define FSMC_RS_PIN PD11 // A0
-#define TOUCH_CS PC2
-
-#define SD_DETECT_PIN PD12
+#if ENABLED(MKS_ROBIN_TFT)
+ #define LCD_RESET_PIN PF6
+ #define NO_LCD_REINIT // Suppress LCD re-initialization
+
+ #define LCD_BACKLIGHT_PIN PD13
+
+ #if ENABLED(TOUCH_BUTTONS)
+ #define BTN_ENC PB3 // Not connected. TODO: Replace this hack to enable button code
+ #define FSMC_CS_PIN PD7 // NE4
+ #define FSMC_RS_PIN PD11 // A0
+ #define TOUCH_CS_PIN PC2
+ #endif
+#endif
// Motor current PWM pins
#define MOTOR_CURRENT_PWM_XY_PIN PA6
diff --git a/Marlin/src/pins/stm32/pins_MKS_ROBIN_NANO.h b/Marlin/src/pins/stm32/pins_MKS_ROBIN_NANO.h
index 3d0415cb1..40b0d99e0 100755
--- a/Marlin/src/pins/stm32/pins_MKS_ROBIN_NANO.h
+++ b/Marlin/src/pins/stm32/pins_MKS_ROBIN_NANO.h
@@ -51,6 +51,10 @@
#define Z_MIN_PIN PA11
#define Z_MAX_PIN PC4
+#ifndef FIL_RUNOUT_PIN
+ #define FIL_RUNOUT_PIN PA4 // MT_DET
+#endif
+
//
// Steppers
//
@@ -90,29 +94,41 @@
#define FAN_PIN PB1 // FAN
-#define BTN_ENC PC13 // Pin is not connected. Real pin is needed to enable encoder's push button functionality used by touch screen
-
+//
+// Thermocouples
+//
//#define MAX6675_SS_PIN PE5 // TC1 - CS1
//#define MAX6675_SS_PIN PE6 // TC2 - CS2
+//
+// Misc. Functions
+//
#define POWER_LOSS_PIN PA2 // PW_DET
#define PS_ON_PIN PA3 // PW_OFF
-#define FIL_RUNOUT_PIN PA4 // MT_DET
-#define BEEPER_PIN PC5
#define LED_PIN PB2
+//
+// LCD / Controller
+//
+#define BEEPER_PIN PC5
+#define SD_DETECT_PIN PD12
+
/**
* Note: MKS Robin TFT screens use various TFT controllers.
* If the screen stays white, disable 'LCD_RESET_PIN'
* to let the bootloader init the screen.
*/
-#define LCD_RESET_PIN PF6
-#define NO_LCD_REINIT // Suppress LCD re-initialization
-
-#define LCD_BACKLIGHT_PIN PD13
-#define FSMC_CS_PIN PD7 // NE4
-#define FSMC_RS_PIN PD11 // A0
-#define TOUCH_CS PA7
-
-#define SD_DETECT_PIN PD12
+#if ENABLED(MKS_ROBIN_TFT)
+ #define LCD_RESET_PIN PF6
+ #define NO_LCD_REINIT // Suppress LCD re-initialization
+
+ #define LCD_BACKLIGHT_PIN PD13
+
+ #if ENABLED(TOUCH_BUTTONS)
+ #define BTN_ENC PC13 // Not connected. TODO: Replace this hack to enable button code
+ #define FSMC_CS_PIN PD7 // NE4
+ #define FSMC_RS_PIN PD11 // A0
+ #define TOUCH_CS_PIN PA7
+ #endif
+#endif
diff --git a/Marlin/src/pins/stm32/pins_STM3R_MINI.h b/Marlin/src/pins/stm32/pins_STM3R_MINI.h
index 66568e2e9..5ababb36b 100644
--- a/Marlin/src/pins/stm32/pins_STM3R_MINI.h
+++ b/Marlin/src/pins/stm32/pins_STM3R_MINI.h
@@ -143,7 +143,15 @@
#endif
#endif
- #if ENABLED(NEWPANEL)
+ #if ENABLED(TOUCH_BUTTONS)
+
+ #define TOUCH_CS_PIN PB12 // SPI2_NSS
+ #define TOUCH_SCK_PIN PB13
+ #define TOUCH_MOSI_PIN PB14
+ #define TOUCH_MISO_PIN PB15
+ #define TOUCH_INT_PIN PC6 // (PenIRQ coming from ADS7843)
+
+ #elif ENABLED(NEWPANEL)
#if ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER)
diff --git a/config/default/Configuration.h b/config/default/Configuration.h
index bcecca1dc..9a25b6ac9 100644
--- a/config/default/Configuration.h
+++ b/config/default/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/3DFabXYZ/Migbot/Configuration.h b/config/examples/3DFabXYZ/Migbot/Configuration.h
index 2792e760c..8da4a630f 100644
--- a/config/examples/3DFabXYZ/Migbot/Configuration.h
+++ b/config/examples/3DFabXYZ/Migbot/Configuration.h
@@ -2063,8 +2063,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/AlephObjects/TAZ4/Configuration.h b/config/examples/AlephObjects/TAZ4/Configuration.h
index aa4f1e3e7..04814d8f0 100644
--- a/config/examples/AlephObjects/TAZ4/Configuration.h
+++ b/config/examples/AlephObjects/TAZ4/Configuration.h
@@ -2052,8 +2052,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/AliExpress/CL-260/Configuration.h b/config/examples/AliExpress/CL-260/Configuration.h
index f7490b9f6..49640b0e5 100644
--- a/config/examples/AliExpress/CL-260/Configuration.h
+++ b/config/examples/AliExpress/CL-260/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/AliExpress/UM2pExt/Configuration.h b/config/examples/AliExpress/UM2pExt/Configuration.h
index ecff552b6..33f600b3b 100644
--- a/config/examples/AliExpress/UM2pExt/Configuration.h
+++ b/config/examples/AliExpress/UM2pExt/Configuration.h
@@ -2043,8 +2043,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/A2/Configuration.h b/config/examples/Anet/A2/Configuration.h
index c27d394a7..a4fe30333 100644
--- a/config/examples/Anet/A2/Configuration.h
+++ b/config/examples/Anet/A2/Configuration.h
@@ -2034,8 +2034,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/A2plus/Configuration.h b/config/examples/Anet/A2plus/Configuration.h
index c8047e9ac..87931a181 100644
--- a/config/examples/Anet/A2plus/Configuration.h
+++ b/config/examples/Anet/A2plus/Configuration.h
@@ -2034,8 +2034,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/A6/Configuration.h b/config/examples/Anet/A6/Configuration.h
index e45372310..46cda6b4e 100644
--- a/config/examples/Anet/A6/Configuration.h
+++ b/config/examples/Anet/A6/Configuration.h
@@ -2185,8 +2185,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/A8/Configuration.h b/config/examples/Anet/A8/Configuration.h
index 065f27e26..10cae8b04 100644
--- a/config/examples/Anet/A8/Configuration.h
+++ b/config/examples/Anet/A8/Configuration.h
@@ -2047,8 +2047,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/A8plus/Configuration.h b/config/examples/Anet/A8plus/Configuration.h
index 07ee5ae79..36ebccfa6 100644
--- a/config/examples/Anet/A8plus/Configuration.h
+++ b/config/examples/Anet/A8plus/Configuration.h
@@ -2043,8 +2043,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Anet/E16/Configuration.h b/config/examples/Anet/E16/Configuration.h
index b28b22e18..2a65cd45c 100644
--- a/config/examples/Anet/E16/Configuration.h
+++ b/config/examples/Anet/E16/Configuration.h
@@ -2044,8 +2044,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/AnyCubic/i3/Configuration.h b/config/examples/AnyCubic/i3/Configuration.h
index dfeefa302..c99f8d382 100644
--- a/config/examples/AnyCubic/i3/Configuration.h
+++ b/config/examples/AnyCubic/i3/Configuration.h
@@ -2042,8 +2042,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/ArmEd/Configuration.h b/config/examples/ArmEd/Configuration.h
index 58d8a2446..a4053fff1 100644
--- a/config/examples/ArmEd/Configuration.h
+++ b/config/examples/ArmEd/Configuration.h
@@ -2033,8 +2033,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Azteeg/X5GT/Configuration.h b/config/examples/Azteeg/X5GT/Configuration.h
index 708167587..4b6524cc1 100644
--- a/config/examples/Azteeg/X5GT/Configuration.h
+++ b/config/examples/Azteeg/X5GT/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/BIBO/TouchX/cyclops/Configuration.h b/config/examples/BIBO/TouchX/cyclops/Configuration.h
index d18d546eb..d4202433a 100644
--- a/config/examples/BIBO/TouchX/cyclops/Configuration.h
+++ b/config/examples/BIBO/TouchX/cyclops/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/BIBO/TouchX/default/Configuration.h b/config/examples/BIBO/TouchX/default/Configuration.h
index 9ae7ac0cf..68833cce7 100644
--- a/config/examples/BIBO/TouchX/default/Configuration.h
+++ b/config/examples/BIBO/TouchX/default/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/BQ/Hephestos/Configuration.h b/config/examples/BQ/Hephestos/Configuration.h
index 63e24434c..5abc10aa2 100644
--- a/config/examples/BQ/Hephestos/Configuration.h
+++ b/config/examples/BQ/Hephestos/Configuration.h
@@ -2020,8 +2020,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/BQ/Hephestos_2/Configuration.h b/config/examples/BQ/Hephestos_2/Configuration.h
index f2cf70294..17000ea32 100644
--- a/config/examples/BQ/Hephestos_2/Configuration.h
+++ b/config/examples/BQ/Hephestos_2/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/BQ/WITBOX/Configuration.h b/config/examples/BQ/WITBOX/Configuration.h
index 8f1d81e0c..0071948d7 100644
--- a/config/examples/BQ/WITBOX/Configuration.h
+++ b/config/examples/BQ/WITBOX/Configuration.h
@@ -2020,8 +2020,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Cartesio/Configuration.h b/config/examples/Cartesio/Configuration.h
index 86875b5ba..53aea38d0 100644
--- a/config/examples/Cartesio/Configuration.h
+++ b/config/examples/Cartesio/Configuration.h
@@ -2031,8 +2031,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-10/Configuration.h b/config/examples/Creality/CR-10/Configuration.h
index d6a4e4d02..3fac24fb4 100644
--- a/config/examples/Creality/CR-10/Configuration.h
+++ b/config/examples/Creality/CR-10/Configuration.h
@@ -2042,8 +2042,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-10S/Configuration.h b/config/examples/Creality/CR-10S/Configuration.h
index edbf8f826..6f99beafb 100644
--- a/config/examples/Creality/CR-10S/Configuration.h
+++ b/config/examples/Creality/CR-10S/Configuration.h
@@ -2033,8 +2033,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-10_5S/Configuration.h b/config/examples/Creality/CR-10_5S/Configuration.h
index eff6b12f1..8ddfeb50d 100644
--- a/config/examples/Creality/CR-10_5S/Configuration.h
+++ b/config/examples/Creality/CR-10_5S/Configuration.h
@@ -2035,8 +2035,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-10mini/Configuration.h b/config/examples/Creality/CR-10mini/Configuration.h
index 0a56067e3..e2e363131 100644
--- a/config/examples/Creality/CR-10mini/Configuration.h
+++ b/config/examples/Creality/CR-10mini/Configuration.h
@@ -2051,8 +2051,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-20 Pro/Configuration.h b/config/examples/Creality/CR-20 Pro/Configuration.h
index be6d35ee3..2b13c1c0b 100644
--- a/config/examples/Creality/CR-20 Pro/Configuration.h
+++ b/config/examples/Creality/CR-20 Pro/Configuration.h
@@ -2029,8 +2029,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-20/Configuration.h b/config/examples/Creality/CR-20/Configuration.h
index f5e7b7c4f..fc5785ee0 100644
--- a/config/examples/Creality/CR-20/Configuration.h
+++ b/config/examples/Creality/CR-20/Configuration.h
@@ -2029,8 +2029,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/CR-8/Configuration.h b/config/examples/Creality/CR-8/Configuration.h
index d323a9b2f..425b15c6d 100644
--- a/config/examples/Creality/CR-8/Configuration.h
+++ b/config/examples/Creality/CR-8/Configuration.h
@@ -2042,8 +2042,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/Ender-2/Configuration.h b/config/examples/Creality/Ender-2/Configuration.h
index 9c211dbe9..db181c135 100644
--- a/config/examples/Creality/Ender-2/Configuration.h
+++ b/config/examples/Creality/Ender-2/Configuration.h
@@ -2036,8 +2036,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/Ender-3/Configuration.h b/config/examples/Creality/Ender-3/Configuration.h
index 4cf8a0786..89fd4f10a 100644
--- a/config/examples/Creality/Ender-3/Configuration.h
+++ b/config/examples/Creality/Ender-3/Configuration.h
@@ -2036,8 +2036,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/Ender-4/Configuration.h b/config/examples/Creality/Ender-4/Configuration.h
index 39856a898..bf379ed9e 100644
--- a/config/examples/Creality/Ender-4/Configuration.h
+++ b/config/examples/Creality/Ender-4/Configuration.h
@@ -2042,8 +2042,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Creality/Ender-5/Configuration.h b/config/examples/Creality/Ender-5/Configuration.h
index 23db86738..ac278a464 100644
--- a/config/examples/Creality/Ender-5/Configuration.h
+++ b/config/examples/Creality/Ender-5/Configuration.h
@@ -2029,8 +2029,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Dagoma/Disco Ultimate/Configuration.h b/config/examples/Dagoma/Disco Ultimate/Configuration.h
index 25891fff3..e87ea1684 100644
--- a/config/examples/Dagoma/Disco Ultimate/Configuration.h
+++ b/config/examples/Dagoma/Disco Ultimate/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h b/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h
index 244ead394..8de028a9d 100755
--- a/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h
+++ b/config/examples/EVNOVO (Artillery)/Sidewinder X1/Configuration.h
@@ -2037,8 +2037,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Einstart-S/Configuration.h b/config/examples/Einstart-S/Configuration.h
index f5e13f11c..a48f399ad 100644
--- a/config/examples/Einstart-S/Configuration.h
+++ b/config/examples/Einstart-S/Configuration.h
@@ -2042,8 +2042,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Felix/Configuration.h b/config/examples/Felix/Configuration.h
index 6518bda9d..f052a755f 100644
--- a/config/examples/Felix/Configuration.h
+++ b/config/examples/Felix/Configuration.h
@@ -2014,8 +2014,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Felix/DUAL/Configuration.h b/config/examples/Felix/DUAL/Configuration.h
index 7c4831468..68f5ca58b 100644
--- a/config/examples/Felix/DUAL/Configuration.h
+++ b/config/examples/Felix/DUAL/Configuration.h
@@ -2014,8 +2014,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/FlashForge/CreatorPro/Configuration.h b/config/examples/FlashForge/CreatorPro/Configuration.h
index ddd643667..b5f074aeb 100644
--- a/config/examples/FlashForge/CreatorPro/Configuration.h
+++ b/config/examples/FlashForge/CreatorPro/Configuration.h
@@ -2023,8 +2023,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/FolgerTech/i3-2020/Configuration.h b/config/examples/FolgerTech/i3-2020/Configuration.h
index 67eef9c93..82f63b1ad 100644
--- a/config/examples/FolgerTech/i3-2020/Configuration.h
+++ b/config/examples/FolgerTech/i3-2020/Configuration.h
@@ -2038,8 +2038,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Formbot/Raptor/Configuration.h b/config/examples/Formbot/Raptor/Configuration.h
index a9829a824..6be6c9061 100644
--- a/config/examples/Formbot/Raptor/Configuration.h
+++ b/config/examples/Formbot/Raptor/Configuration.h
@@ -2137,8 +2137,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Formbot/T_Rex_2+/Configuration.h b/config/examples/Formbot/T_Rex_2+/Configuration.h
index e5529b17f..33e68d80c 100644
--- a/config/examples/Formbot/T_Rex_2+/Configuration.h
+++ b/config/examples/Formbot/T_Rex_2+/Configuration.h
@@ -2066,8 +2066,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Formbot/T_Rex_3/Configuration.h b/config/examples/Formbot/T_Rex_3/Configuration.h
index fe6c03b79..5662f6abc 100644
--- a/config/examples/Formbot/T_Rex_3/Configuration.h
+++ b/config/examples/Formbot/T_Rex_3/Configuration.h
@@ -2060,8 +2060,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Fysetc/AIO_II/Configuration.h b/config/examples/Fysetc/AIO_II/Configuration.h
index 402d5c7f9..a3fb78856 100644
--- a/config/examples/Fysetc/AIO_II/Configuration.h
+++ b/config/examples/Fysetc/AIO_II/Configuration.h
@@ -2026,8 +2026,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Fysetc/CHEETAH/Configuration.h b/config/examples/Fysetc/CHEETAH/Configuration.h
index e2a907447..87a04dd9a 100644
--- a/config/examples/Fysetc/CHEETAH/Configuration.h
+++ b/config/examples/Fysetc/CHEETAH/Configuration.h
@@ -2026,8 +2026,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Fysetc/F6_13/Configuration.h b/config/examples/Fysetc/F6_13/Configuration.h
index 4c90aaa7f..125f2821a 100644
--- a/config/examples/Fysetc/F6_13/Configuration.h
+++ b/config/examples/Fysetc/F6_13/Configuration.h
@@ -2028,8 +2028,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/A10/Configuration.h b/config/examples/Geeetech/A10/Configuration.h
index 4a95c318a..f11d83a79 100644
--- a/config/examples/Geeetech/A10/Configuration.h
+++ b/config/examples/Geeetech/A10/Configuration.h
@@ -2017,8 +2017,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/A10M/Configuration.h b/config/examples/Geeetech/A10M/Configuration.h
index 27bce2d79..b2e9f1abb 100644
--- a/config/examples/Geeetech/A10M/Configuration.h
+++ b/config/examples/Geeetech/A10M/Configuration.h
@@ -2017,8 +2017,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/A20M/Configuration.h b/config/examples/Geeetech/A20M/Configuration.h
index dd619d427..9d4d839fd 100644
--- a/config/examples/Geeetech/A20M/Configuration.h
+++ b/config/examples/Geeetech/A20M/Configuration.h
@@ -2019,8 +2019,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/GT2560/Configuration.h b/config/examples/Geeetech/GT2560/Configuration.h
index 654d73462..fb73eb7c3 100644
--- a/config/examples/Geeetech/GT2560/Configuration.h
+++ b/config/examples/Geeetech/GT2560/Configuration.h
@@ -2047,8 +2047,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h b/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
index a3988d348..a02efd75f 100644
--- a/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
+++ b/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/MeCreator2/Configuration.h b/config/examples/Geeetech/MeCreator2/Configuration.h
index 193c93ec2..412195473 100644
--- a/config/examples/Geeetech/MeCreator2/Configuration.h
+++ b/config/examples/Geeetech/MeCreator2/Configuration.h
@@ -2039,8 +2039,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
index 7148acd47..4ee990890 100644
--- a/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
@@ -2053,8 +2053,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
index 865caf7a8..35e45e5d3 100644
--- a/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
@@ -2052,8 +2052,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
index 7b2184ad2..985a21b48 100644
--- a/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h b/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
index 36b88e644..7b75702dd 100644
--- a/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
+++ b/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Infitary/i3-M508/Configuration.h b/config/examples/Infitary/i3-M508/Configuration.h
index a6ec0994c..3563a32d7 100644
--- a/config/examples/Infitary/i3-M508/Configuration.h
+++ b/config/examples/Infitary/i3-M508/Configuration.h
@@ -2036,8 +2036,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/JGAurora/A1/Configuration.h b/config/examples/JGAurora/A1/Configuration.h
index 127671feb..ef3d0edfb 100644
--- a/config/examples/JGAurora/A1/Configuration.h
+++ b/config/examples/JGAurora/A1/Configuration.h
@@ -2029,8 +2029,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/JGAurora/A5/Configuration.h b/config/examples/JGAurora/A5/Configuration.h
index d4d70ebbc..52058a311 100644
--- a/config/examples/JGAurora/A5/Configuration.h
+++ b/config/examples/JGAurora/A5/Configuration.h
@@ -2044,8 +2044,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/JGAurora/A5S/Configuration.h b/config/examples/JGAurora/A5S/Configuration.h
index b086d72bb..6fa815cf5 100644
--- a/config/examples/JGAurora/A5S/Configuration.h
+++ b/config/examples/JGAurora/A5S/Configuration.h
@@ -2030,8 +2030,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/MakerParts/Configuration.h b/config/examples/MakerParts/Configuration.h
index a37aff9a5..d894196f8 100644
--- a/config/examples/MakerParts/Configuration.h
+++ b/config/examples/MakerParts/Configuration.h
@@ -2052,8 +2052,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Malyan/M150/Configuration.h b/config/examples/Malyan/M150/Configuration.h
index 8aa6f8cc6..8099a04ea 100644
--- a/config/examples/Malyan/M150/Configuration.h
+++ b/config/examples/Malyan/M150/Configuration.h
@@ -2060,8 +2060,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Malyan/M200/Configuration.h b/config/examples/Malyan/M200/Configuration.h
index 7fc585180..8f27ac386 100644
--- a/config/examples/Malyan/M200/Configuration.h
+++ b/config/examples/Malyan/M200/Configuration.h
@@ -2040,8 +2040,16 @@
#define MALYAN_LCD
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Micromake/C1/basic/Configuration.h b/config/examples/Micromake/C1/basic/Configuration.h
index b61fb46c3..673e42110 100644
--- a/config/examples/Micromake/C1/basic/Configuration.h
+++ b/config/examples/Micromake/C1/basic/Configuration.h
@@ -2036,8 +2036,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Micromake/C1/enhanced/Configuration.h b/config/examples/Micromake/C1/enhanced/Configuration.h
index 2cbfe8fcc..226b19c60 100644
--- a/config/examples/Micromake/C1/enhanced/Configuration.h
+++ b/config/examples/Micromake/C1/enhanced/Configuration.h
@@ -2036,8 +2036,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Mks/Robin/Configuration.h b/config/examples/Mks/Robin/Configuration.h
index 958535d4f..8beb1267d 100644
--- a/config/examples/Mks/Robin/Configuration.h
+++ b/config/examples/Mks/Robin/Configuration.h
@@ -2034,8 +2034,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Mks/Sbase/Configuration.h b/config/examples/Mks/Sbase/Configuration.h
index 55b11f020..4546f9eb7 100644
--- a/config/examples/Mks/Sbase/Configuration.h
+++ b/config/examples/Mks/Sbase/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Printrbot/PrintrboardG2/Configuration.h b/config/examples/Printrbot/PrintrboardG2/Configuration.h
index 1639f7106..9b288a177 100644
--- a/config/examples/Printrbot/PrintrboardG2/Configuration.h
+++ b/config/examples/Printrbot/PrintrboardG2/Configuration.h
@@ -2040,8 +2040,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/RapideLite/RL200/Configuration.h b/config/examples/RapideLite/RL200/Configuration.h
index 8dd46c6ab..77ccabccc 100644
--- a/config/examples/RapideLite/RL200/Configuration.h
+++ b/config/examples/RapideLite/RL200/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/RepRapPro/Huxley/Configuration.h b/config/examples/RepRapPro/Huxley/Configuration.h
index 642a820fc..c0e926dfa 100644
--- a/config/examples/RepRapPro/Huxley/Configuration.h
+++ b/config/examples/RepRapPro/Huxley/Configuration.h
@@ -2081,8 +2081,16 @@ Black rubber belt(MXL), 18 - tooth aluminium pulley : 87.489 step per mm (Huxley
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/RepRapWorld/Megatronics/Configuration.h b/config/examples/RepRapWorld/Megatronics/Configuration.h
index 894ed01ad..9ec0adb6b 100644
--- a/config/examples/RepRapWorld/Megatronics/Configuration.h
+++ b/config/examples/RepRapWorld/Megatronics/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/RigidBot/Configuration.h b/config/examples/RigidBot/Configuration.h
index aeec7a0b7..2b8bb8d8e 100644
--- a/config/examples/RigidBot/Configuration.h
+++ b/config/examples/RigidBot/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/SCARA/Configuration.h b/config/examples/SCARA/Configuration.h
index faf11620f..81ae7966d 100644
--- a/config/examples/SCARA/Configuration.h
+++ b/config/examples/SCARA/Configuration.h
@@ -2041,8 +2041,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/STM32/Black_STM32F407VET6/Configuration.h b/config/examples/STM32/Black_STM32F407VET6/Configuration.h
index 25aa7ca94..8687711a6 100644
--- a/config/examples/STM32/Black_STM32F407VET6/Configuration.h
+++ b/config/examples/STM32/Black_STM32F407VET6/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/STM32/STM32F10/Configuration.h b/config/examples/STM32/STM32F10/Configuration.h
index 4a010c099..bf04ae150 100644
--- a/config/examples/STM32/STM32F10/Configuration.h
+++ b/config/examples/STM32/STM32F10/Configuration.h
@@ -2034,8 +2034,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/STM32/STM32F4/Configuration.h b/config/examples/STM32/STM32F4/Configuration.h
index f03379f56..1030c5de0 100644
--- a/config/examples/STM32/STM32F4/Configuration.h
+++ b/config/examples/STM32/STM32F4/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/STM32/stm32f103ret6/Configuration.h b/config/examples/STM32/stm32f103ret6/Configuration.h
index b027e887e..1c8fab869 100644
--- a/config/examples/STM32/stm32f103ret6/Configuration.h
+++ b/config/examples/STM32/stm32f103ret6/Configuration.h
@@ -2034,8 +2034,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Sanguinololu/Configuration.h b/config/examples/Sanguinololu/Configuration.h
index df1b39c99..7bc24ddfb 100644
--- a/config/examples/Sanguinololu/Configuration.h
+++ b/config/examples/Sanguinololu/Configuration.h
@@ -2063,8 +2063,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tevo/Tarantula Pro/Configuration.h b/config/examples/Tevo/Tarantula Pro/Configuration.h
index d6ebcda8d..9fe6d69d8 100644
--- a/config/examples/Tevo/Tarantula Pro/Configuration.h
+++ b/config/examples/Tevo/Tarantula Pro/Configuration.h
@@ -2024,8 +2024,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/TheBorg/Configuration.h b/config/examples/TheBorg/Configuration.h
index 4f4c56774..8b6700546 100644
--- a/config/examples/TheBorg/Configuration.h
+++ b/config/examples/TheBorg/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/TinyBoy2/Configuration.h b/config/examples/TinyBoy2/Configuration.h
index f778ea974..4577e2159 100644
--- a/config/examples/TinyBoy2/Configuration.h
+++ b/config/examples/TinyBoy2/Configuration.h
@@ -2088,8 +2088,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tronxy/X1/Configuration.h b/config/examples/Tronxy/X1/Configuration.h
index 5ba2648e5..7587d0196 100644
--- a/config/examples/Tronxy/X1/Configuration.h
+++ b/config/examples/Tronxy/X1/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tronxy/X3A/Configuration.h b/config/examples/Tronxy/X3A/Configuration.h
index a1348957f..f84631305 100644
--- a/config/examples/Tronxy/X3A/Configuration.h
+++ b/config/examples/Tronxy/X3A/Configuration.h
@@ -2036,8 +2036,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tronxy/X5S-2E/Configuration.h b/config/examples/Tronxy/X5S-2E/Configuration.h
index faab4c028..082c1b894 100644
--- a/config/examples/Tronxy/X5S-2E/Configuration.h
+++ b/config/examples/Tronxy/X5S-2E/Configuration.h
@@ -2053,8 +2053,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tronxy/X5S/Configuration.h b/config/examples/Tronxy/X5S/Configuration.h
index 0f4c58086..8db73b707 100644
--- a/config/examples/Tronxy/X5S/Configuration.h
+++ b/config/examples/Tronxy/X5S/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Tronxy/XY100/Configuration.h b/config/examples/Tronxy/XY100/Configuration.h
index f38990ec5..8f239d920 100644
--- a/config/examples/Tronxy/XY100/Configuration.h
+++ b/config/examples/Tronxy/XY100/Configuration.h
@@ -2043,8 +2043,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/UltiMachine/Archim1/Configuration.h b/config/examples/UltiMachine/Archim1/Configuration.h
index d836a170d..179773665 100644
--- a/config/examples/UltiMachine/Archim1/Configuration.h
+++ b/config/examples/UltiMachine/Archim1/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/UltiMachine/Archim2/Configuration.h b/config/examples/UltiMachine/Archim2/Configuration.h
index 8071a35e2..8460f0d53 100644
--- a/config/examples/UltiMachine/Archim2/Configuration.h
+++ b/config/examples/UltiMachine/Archim2/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/VORONDesign/Configuration.h b/config/examples/VORONDesign/Configuration.h
index c718d985e..83b0d7928 100644
--- a/config/examples/VORONDesign/Configuration.h
+++ b/config/examples/VORONDesign/Configuration.h
@@ -2041,8 +2041,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Velleman/K8200/Configuration.h b/config/examples/Velleman/K8200/Configuration.h
index 440306ab2..99d28567b 100644
--- a/config/examples/Velleman/K8200/Configuration.h
+++ b/config/examples/Velleman/K8200/Configuration.h
@@ -2030,8 +2030,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Velleman/K8400/Configuration.h b/config/examples/Velleman/K8400/Configuration.h
index edf8cf508..9ceca3c91 100644
--- a/config/examples/Velleman/K8400/Configuration.h
+++ b/config/examples/Velleman/K8400/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Velleman/K8400/Dual-head/Configuration.h b/config/examples/Velleman/K8400/Dual-head/Configuration.h
index 584a48111..9bc4e6397 100644
--- a/config/examples/Velleman/K8400/Dual-head/Configuration.h
+++ b/config/examples/Velleman/K8400/Dual-head/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/WASP/PowerWASP/Configuration.h b/config/examples/WASP/PowerWASP/Configuration.h
index b70d4e95b..7b9d8c64e 100644
--- a/config/examples/WASP/PowerWASP/Configuration.h
+++ b/config/examples/WASP/PowerWASP/Configuration.h
@@ -2051,8 +2051,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Wanhao/Duplicator 6/Configuration.h b/config/examples/Wanhao/Duplicator 6/Configuration.h
index 9f69e747f..72b8b30ff 100644
--- a/config/examples/Wanhao/Duplicator 6/Configuration.h
+++ b/config/examples/Wanhao/Duplicator 6/Configuration.h
@@ -2045,8 +2045,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/Wanhao/Duplicator i3 Mini/Configuration.h b/config/examples/Wanhao/Duplicator i3 Mini/Configuration.h
index 5dcb4b146..e5322c1bc 100755
--- a/config/examples/Wanhao/Duplicator i3 Mini/Configuration.h
+++ b/config/examples/Wanhao/Duplicator i3 Mini/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/adafruit/ST7565/Configuration.h b/config/examples/adafruit/ST7565/Configuration.h
index a91e0d7ed..3d79fefb1 100644
--- a/config/examples/adafruit/ST7565/Configuration.h
+++ b/config/examples/adafruit/ST7565/Configuration.h
@@ -2032,8 +2032,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/Anycubic/Kossel/Configuration.h b/config/examples/delta/Anycubic/Kossel/Configuration.h
index a5bddc91b..dbd75691d 100644
--- a/config/examples/delta/Anycubic/Kossel/Configuration.h
+++ b/config/examples/delta/Anycubic/Kossel/Configuration.h
@@ -2220,8 +2220,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/FLSUN/auto_calibrate/Configuration.h b/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
index 699e57029..e588e5fb9 100644
--- a/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
+++ b/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
@@ -2160,8 +2160,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/FLSUN/kossel/Configuration.h b/config/examples/delta/FLSUN/kossel/Configuration.h
index fddf02508..09e2077d4 100644
--- a/config/examples/delta/FLSUN/kossel/Configuration.h
+++ b/config/examples/delta/FLSUN/kossel/Configuration.h
@@ -2159,8 +2159,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/FLSUN/kossel_mini/Configuration.h b/config/examples/delta/FLSUN/kossel_mini/Configuration.h
index 633b25f94..486e2d63b 100644
--- a/config/examples/delta/FLSUN/kossel_mini/Configuration.h
+++ b/config/examples/delta/FLSUN/kossel_mini/Configuration.h
@@ -2159,8 +2159,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/Geeetech/Rostock 301/Configuration.h b/config/examples/delta/Geeetech/Rostock 301/Configuration.h
index 6338bee20..6ad6bc0b0 100644
--- a/config/examples/delta/Geeetech/Rostock 301/Configuration.h
+++ b/config/examples/delta/Geeetech/Rostock 301/Configuration.h
@@ -2148,8 +2148,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/Hatchbox_Alpha/Configuration.h b/config/examples/delta/Hatchbox_Alpha/Configuration.h
index 16362ed0a..14c81a868 100644
--- a/config/examples/delta/Hatchbox_Alpha/Configuration.h
+++ b/config/examples/delta/Hatchbox_Alpha/Configuration.h
@@ -2162,8 +2162,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/MKS/SBASE/Configuration.h b/config/examples/delta/MKS/SBASE/Configuration.h
index 1332d2639..9fb409414 100644
--- a/config/examples/delta/MKS/SBASE/Configuration.h
+++ b/config/examples/delta/MKS/SBASE/Configuration.h
@@ -2147,8 +2147,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/Tevo Little Monster/Configuration.h b/config/examples/delta/Tevo Little Monster/Configuration.h
index 0ab7872aa..ce4ba3af1 100644
--- a/config/examples/delta/Tevo Little Monster/Configuration.h
+++ b/config/examples/delta/Tevo Little Monster/Configuration.h
@@ -2151,8 +2151,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/generic/Configuration.h b/config/examples/delta/generic/Configuration.h
index af30e012c..17a51d497 100644
--- a/config/examples/delta/generic/Configuration.h
+++ b/config/examples/delta/generic/Configuration.h
@@ -2147,8 +2147,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/kossel_mini/Configuration.h b/config/examples/delta/kossel_mini/Configuration.h
index f1285212d..e5e50028d 100644
--- a/config/examples/delta/kossel_mini/Configuration.h
+++ b/config/examples/delta/kossel_mini/Configuration.h
@@ -2149,8 +2149,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/kossel_pro/Configuration.h b/config/examples/delta/kossel_pro/Configuration.h
index 202f14487..7c3e556c5 100644
--- a/config/examples/delta/kossel_pro/Configuration.h
+++ b/config/examples/delta/kossel_pro/Configuration.h
@@ -2150,8 +2150,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/delta/kossel_xl/Configuration.h b/config/examples/delta/kossel_xl/Configuration.h
index 178817699..802d633d6 100644
--- a/config/examples/delta/kossel_xl/Configuration.h
+++ b/config/examples/delta/kossel_xl/Configuration.h
@@ -2150,8 +2150,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/gCreate/gMax1.5+/Configuration.h b/config/examples/gCreate/gMax1.5+/Configuration.h
index dd87d1c7a..75fde8dca 100644
--- a/config/examples/gCreate/gMax1.5+/Configuration.h
+++ b/config/examples/gCreate/gMax1.5+/Configuration.h
@@ -2046,8 +2046,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/makibox/Configuration.h b/config/examples/makibox/Configuration.h
index ab93548f4..fb09aabdd 100644
--- a/config/examples/makibox/Configuration.h
+++ b/config/examples/makibox/Configuration.h
@@ -2035,8 +2035,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/tvrrug/Round2/Configuration.h b/config/examples/tvrrug/Round2/Configuration.h
index dbc75f911..bc82843b1 100644
--- a/config/examples/tvrrug/Round2/Configuration.h
+++ b/config/examples/tvrrug/Round2/Configuration.h
@@ -2027,8 +2027,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1
diff --git a/config/examples/wt150/Configuration.h b/config/examples/wt150/Configuration.h
index ca29af8ff..38ab2e4d8 100644
--- a/config/examples/wt150/Configuration.h
+++ b/config/examples/wt150/Configuration.h
@@ -2037,8 +2037,16 @@
//=============================================================================
//
-// CONTROLLER TYPE: Keypad / Add-on
-//
+// Alfawise U30 ILI9341 2.8 TP Ver 1.2
+// (Blue PCB on the back of touchscreen)
+//
+//#define TOUCH_BUTTONS
+#if ENABLED(TOUCH_BUTTONS)
+ #define XPT2046_X_CALIBRATION 12316
+ #define XPT2046_Y_CALIBRATION -8981
+ #define XPT2046_X_OFFSET -43
+ #define XPT2046_Y_OFFSET 257
+#endif
//
// RepRapWorld REPRAPWORLD_KEYPAD v1.1