diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..29d8262 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "queue": "cpp" + } +} \ No newline at end of file diff --git a/TFT_Drivers/ILI9225_Defines.h b/TFT_Drivers/ILI9225_Defines.h new file mode 100644 index 0000000..b434e8d --- /dev/null +++ b/TFT_Drivers/ILI9225_Defines.h @@ -0,0 +1,66 @@ +// Change the width and height if required (defined in portrait mode) +// or use the constructor to over-ride defaults +#define TFT_WIDTH 176 +#define TFT_HEIGHT 220 + +/* ILI9225 LCD Registers */ +#define ILI9225_DRIVER_OUTPUT_CTRL (0x01u) // Driver Output Control +#define ILI9225_LCD_AC_DRIVING_CTRL (0x02u) // LCD AC Driving Control +#define ILI9225_ENTRY_MODE (0x03u) // Entry Mode +#define ILI9225_DISP_CTRL1 (0x07u) // Display Control 1 +#define ILI9225_BLANK_PERIOD_CTRL1 (0x08u) // Blank Period Control +#define ILI9225_FRAME_CYCLE_CTRL (0x0Bu) // Frame Cycle Control +#define ILI9225_INTERFACE_CTRL (0x0Cu) // Interface Control +#define ILI9225_OSC_CTRL (0x0Fu) // Osc Control +#define ILI9225_POWER_CTRL1 (0x10u) // Power Control 1 +#define ILI9225_POWER_CTRL2 (0x11u) // Power Control 2 +#define ILI9225_POWER_CTRL3 (0x12u) // Power Control 3 +#define ILI9225_POWER_CTRL4 (0x13u) // Power Control 4 +#define ILI9225_POWER_CTRL5 (0x14u) // Power Control 5 +#define ILI9225_VCI_RECYCLING (0x15u) // VCI Recycling +#define ILI9225_RAM_ADDR_SET1 (0x20u) // Horizontal GRAM Address Set +#define ILI9225_RAM_ADDR_SET2 (0x21u) // Vertical GRAM Address Set +#define ILI9225_GRAM_DATA_REG (0x22u) // GRAM Data Register +#define ILI9225_GATE_SCAN_CTRL (0x30u) // Gate Scan Control Register +#define ILI9225_VERTICAL_SCROLL_CTRL1 (0x31u) // Vertical Scroll Control 1 Register +#define ILI9225_VERTICAL_SCROLL_CTRL2 (0x32u) // Vertical Scroll Control 2 Register +#define ILI9225_VERTICAL_SCROLL_CTRL3 (0x33u) // Vertical Scroll Control 3 Register +#define ILI9225_PARTIAL_DRIVING_POS1 (0x34u) // Partial Driving Position 1 Register +#define ILI9225_PARTIAL_DRIVING_POS2 (0x35u) // Partial Driving Position 2 Register +#define ILI9225_HORIZONTAL_WINDOW_ADDR1 (0x36u) // Horizontal Address Start Position +#define ILI9225_HORIZONTAL_WINDOW_ADDR2 (0x37u) // Horizontal Address End Position +#define ILI9225_VERTICAL_WINDOW_ADDR1 (0x38u) // Vertical Address Start Position +#define ILI9225_VERTICAL_WINDOW_ADDR2 (0x39u) // Vertical Address End Position +#define ILI9225_GAMMA_CTRL1 (0x50u) // Gamma Control 1 +#define ILI9225_GAMMA_CTRL2 (0x51u) // Gamma Control 2 +#define ILI9225_GAMMA_CTRL3 (0x52u) // Gamma Control 3 +#define ILI9225_GAMMA_CTRL4 (0x53u) // Gamma Control 4 +#define ILI9225_GAMMA_CTRL5 (0x54u) // Gamma Control 5 +#define ILI9225_GAMMA_CTRL6 (0x55u) // Gamma Control 6 +#define ILI9225_GAMMA_CTRL7 (0x56u) // Gamma Control 7 +#define ILI9225_GAMMA_CTRL8 (0x57u) // Gamma Control 8 +#define ILI9225_GAMMA_CTRL9 (0x58u) // Gamma Control 9 +#define ILI9225_GAMMA_CTRL10 (0x59u) // Gamma Control 10 + +#define TFT_INVOFF 0x20 +#define TFT_INVON 0x21 +#define TFT_SWRST 0x28 + +// Delay between some initialisation commands +#define TFT_INIT_DELAY 0x80 // Not used unless commandlist invoked + +// autoincrement modes (register ILI9225_ENTRY_MODE, bit 5..3 ) +enum autoIncMode_t { R2L_BottomUp, BottomUp_R2L, L2R_BottomUp, BottomUp_L2R, R2L_TopDown, TopDown_R2L, L2R_TopDown, TopDown_L2R }; + + // correspondig modes if orientation changed: + const autoIncMode_t modeTab [3][8] = { + // { R2L_BottomUp, BottomUp_R2L, L2R_BottomUp, BottomUp_L2R, R2L_TopDown, TopDown_R2L, L2R_TopDown, TopDown_L2R }// + /* 90° */ { BottomUp_L2R, L2R_BottomUp, TopDown_L2R, L2R_TopDown, BottomUp_R2L, R2L_BottomUp, TopDown_R2L, R2L_TopDown }, + /*180° */ { L2R_TopDown , TopDown_L2R, R2L_TopDown, TopDown_R2L, L2R_BottomUp, BottomUp_L2R, R2L_BottomUp, BottomUp_R2L}, + /*270° */ { TopDown_R2L , R2L_TopDown, BottomUp_R2L, R2L_BottomUp, TopDown_L2R, L2R_TopDown, BottomUp_L2R, L2R_BottomUp} + }; + +#define TFT_CASET 0x20 +#define TFT_PASET 0x21 +#define TFT_RAMWR 0x22 +#define TFT_RAMRD 0x23 diff --git a/TFT_Drivers/ILI9225_Init.h b/TFT_Drivers/ILI9225_Init.h new file mode 100644 index 0000000..80a01cd --- /dev/null +++ b/TFT_Drivers/ILI9225_Init.h @@ -0,0 +1,122 @@ + +// This is the command sequence that initialises the ILI9225 driver +// +// This setup information uses simple 8 bit SPI writecommand() and writedata() functions +// +// See ST7735_Setup.h file for an alternative format + +{ + /* Start Initial Sequence */ + + //LCD Init For 2.2inch LCD Panel with ILI9225. + writecommand(ILI9225_POWER_CTRL1); + writedata(0x00);writedata(0x00); // Set SAP,DSTB,STB + writecommand(ILI9225_POWER_CTRL2); + writedata(0x00);writedata(0x00); // Set APON,PON,AON,VCI1EN,VC + writecommand(ILI9225_POWER_CTRL3); + writedata(0x00);writedata(0x00); // Set BT,DC1,DC2,DC3 + writecommand(ILI9225_POWER_CTRL4); + writedata(0x00);writedata(0x00); // Set GVDD + writecommand(ILI9225_POWER_CTRL5); + writedata(0x00);writedata(0x00); // Set VCOMH/VCOML voltage + spi_end(); + delay(40); + spi_begin(); + + // Power-on sequence + writecommand(ILI9225_POWER_CTRL2); + writedata(0x00);writedata(0x18); // Set APON,PON,AON,VCI1EN,VC + writecommand(ILI9225_POWER_CTRL3); + writedata(0x61);writedata(0x21); // Set BT,DC1,DC2,DC3 + writecommand(ILI9225_POWER_CTRL4); + writedata(0x00);writedata(0x6F); // Set GVDD /*007F 0088 */ + writecommand(ILI9225_POWER_CTRL5); + writedata(0x49);writedata(0x5F); // Set VCOMH/VCOML voltage + writecommand(ILI9225_POWER_CTRL1); + writedata(0x08);writedata(0x00); // Set SAP,DSTB,STB + spi_end(); + delay(10); + spi_begin(); + + writecommand(ILI9225_POWER_CTRL2); + writedata(0x10);writedata(0x3B); // Set APON,PON,AON,VCI1EN,VC + spi_end(); + delay(50); + spi_begin(); + + writecommand(ILI9225_DRIVER_OUTPUT_CTRL); + writedata(0x01);writedata(0x1C); // set the display line number and display direction + writecommand(ILI9225_LCD_AC_DRIVING_CTRL); + writedata(0x01);writedata(0x00); // set 1 line inversion + writecommand(ILI9225_ENTRY_MODE); + writedata(0x10);writedata(0x38); // set GRAM write direction and BGR=1 + writecommand(ILI9225_DISP_CTRL1); + writedata(0x00);writedata(0x00); // Display off + writecommand(ILI9225_BLANK_PERIOD_CTRL1); + writedata(0x08);writedata(0x08); // set the back porch and front porch + writecommand(ILI9225_FRAME_CYCLE_CTRL); + writedata(0x11);writedata(0x00); // set the clocks number per line + writecommand(ILI9225_INTERFACE_CTRL); + writedata(0x00);writedata(0x00); // CPU interface + writecommand(ILI9225_OSC_CTRL); + writedata(0x0D);writedata(0x01); // Set Osc /*0e01*/ + writecommand(ILI9225_VCI_RECYCLING); + writedata(0x00);writedata(0x20); // Set VCI recycling + writecommand(ILI9225_RAM_ADDR_SET1); + writedata(0x00);writedata(0x00); // RAM Address + writecommand(ILI9225_RAM_ADDR_SET2); + writedata(0x00);writedata(0x00); // RAM Address + + /* Set GRAM area */ + writecommand(ILI9225_GATE_SCAN_CTRL); + writedata(0x00);writedata(0x00); + writecommand(ILI9225_VERTICAL_SCROLL_CTRL1); + writedata(0x00);writedata(0xDB); + writecommand(ILI9225_VERTICAL_SCROLL_CTRL2); + writedata(0x00);writedata(0x00); + writecommand(ILI9225_VERTICAL_SCROLL_CTRL3); + writedata(0x00);writedata(0x00); + writecommand(ILI9225_PARTIAL_DRIVING_POS1); + writedata(0x00);writedata(0xDB); + writecommand(ILI9225_PARTIAL_DRIVING_POS2); + writedata(0x00);writedata(0x00); + writecommand(ILI9225_HORIZONTAL_WINDOW_ADDR1); + writedata(0x00);writedata(0xAF); + writecommand(ILI9225_HORIZONTAL_WINDOW_ADDR2); + writedata(0x00);writedata(0x00); + writecommand(ILI9225_VERTICAL_WINDOW_ADDR1); + writedata(0x00);writedata(0xDB); + writecommand(ILI9225_VERTICAL_WINDOW_ADDR2); + writedata(0x00);writedata(0x00); + + /* Set GAMMA curve */ + writecommand(ILI9225_GAMMA_CTRL1); + writedata(0x00);writedata(0x00); + writecommand(ILI9225_GAMMA_CTRL2); + writedata(0x08);writedata(0x08); + writecommand(ILI9225_GAMMA_CTRL3); + writedata(0x08);writedata(0x0A); + writecommand(ILI9225_GAMMA_CTRL4); + writedata(0x00);writedata(0x0A); + writecommand(ILI9225_GAMMA_CTRL5); + writedata(0x0A);writedata(0x08); + writecommand(ILI9225_GAMMA_CTRL6); + writedata(0x08);writedata(0x08); + writecommand(ILI9225_GAMMA_CTRL7); + writedata(0x00);writedata(0x00); + writecommand(ILI9225_GAMMA_CTRL8); + writedata(0x0A);writedata(0x00); + writecommand(ILI9225_GAMMA_CTRL9); + writedata(0x07);writedata(0x10); + writecommand(ILI9225_GAMMA_CTRL10); + writedata(0x07);writedata(0x10); + + writecommand(ILI9225_DISP_CTRL1); + writedata(0x00);writedata(0x12); + + spi_end(); + delay(50); + spi_begin(); + writecommand(ILI9225_DISP_CTRL1); + writedata(0x10);writedata(0x17); +} \ No newline at end of file diff --git a/TFT_Drivers/ILI9225_Rotation.h b/TFT_Drivers/ILI9225_Rotation.h new file mode 100644 index 0000000..d548fe0 --- /dev/null +++ b/TFT_Drivers/ILI9225_Rotation.h @@ -0,0 +1,25 @@ + +// This is the command sequence that rotates the ILI9225 driver coordinate frame + + rotation = m % 4; // Limit the range of values to 0-3 + +// writecommand(TFT_MADCTL); + switch (rotation) { + case 0: + // writedata(TFT_MAD_MY | TFT_MAD_MV | TFT_MAD_BGR); + _width = _init_width; + _height = _init_height; + break; + case 1: + _width = _init_height; + _height = _init_width; + break; + case 2: + _width = _init_width; + _height = _init_height; + break; + case 3: + _width = _init_height; + _height = _init_width; + break; + } diff --git a/TFT_Drivers/ST7789_Defines.h b/TFT_Drivers/ST7789_Defines.h index 99d35db..9b0f38b 100644 --- a/TFT_Drivers/ST7789_Defines.h +++ b/TFT_Drivers/ST7789_Defines.h @@ -1,7 +1,11 @@ // Change the width and height if required (defined in portrait mode) // or use the constructor to over-ride defaults -#define TFT_WIDTH 240 -#define TFT_HEIGHT 240 +#ifndef TFT_WIDTH + #define TFT_WIDTH 240 +#endif +#ifndef TFT_HEIGHT + #define TFT_HEIGHT 320 +#endif #define CGRAM_OFFSET diff --git a/TFT_Drivers/ST7789_Init.h b/TFT_Drivers/ST7789_Init.h index d5ba408..b4e40ed 100644 --- a/TFT_Drivers/ST7789_Init.h +++ b/TFT_Drivers/ST7789_Init.h @@ -6,14 +6,20 @@ { static const uint8_t PROGMEM st7789[] = { +#ifdef IPS_LCD 9, +#else + 8, +#endif TFT_SWRST, TFT_INIT_DELAY, 150, TFT_SLPOUT, TFT_INIT_DELAY, 255, TFT_COLMOD, 1+TFT_INIT_DELAY, 0x55, 10, TFT_MADCTL, 1, TFT_MAD_RGB, TFT_CASET, 4, 0x00, 0x00, 0x00, 0xF0, TFT_PASET, 4, 0x00, 0x00, 0x00, 0xF0, +#ifdef IPS_LCD TFT_INVON, TFT_INIT_DELAY, 10, +#endif TFT_NORON, TFT_INIT_DELAY, 10, TFT_DISPON, TFT_INIT_DELAY, 255 }; diff --git a/TFT_Drivers/ST7789_Rotation.h b/TFT_Drivers/ST7789_Rotation.h index 34ba394..c73ff8d 100644 --- a/TFT_Drivers/ST7789_Rotation.h +++ b/TFT_Drivers/ST7789_Rotation.h @@ -22,13 +22,21 @@ _width = _init_width; _height = _init_height; colstart = 0; +#if (TFT_HEIGHT == 240) rowstart = 80; +#else + rowstart = 0; +#endif break; case 3: // Inverted landscape writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_RGB); _width = _init_height; _height = _init_width; +#if (TFT_HEIGHT == 240) colstart = 80; +#else + colstart = 0; +#endif rowstart = 0; break; } diff --git a/TFT_eSPI.cpp b/TFT_eSPI.cpp index d19d0c6..1aa2cd9 100644 --- a/TFT_eSPI.cpp +++ b/TFT_eSPI.cpp @@ -356,6 +356,9 @@ void TFT_eSPI::init(uint8_t tc) #elif defined (ST7789_DRIVER) #include "TFT_Drivers/ST7789_Init.h" +#elif defined (ILI9225_DRIVER) + #include "TFT_Drivers/ILI9225_Init.h" + #endif spi_end(); @@ -404,6 +407,9 @@ void TFT_eSPI::setRotation(uint8_t m) #elif defined (ST7789_DRIVER) #include "TFT_Drivers/ST7789_Rotation.h" +#elif defined (ILI9225_DRIVER) + #include "TFT_Drivers/ILI9225_Rotation.h" + #endif delayMicroseconds(10); diff --git a/User_Setup.h b/User_Setup.h index c2a6c93..4daa6b3 100644 --- a/User_Setup.h +++ b/User_Setup.h @@ -15,25 +15,30 @@ // ################################################################################## // Only define one driver, the other ones must be commented out -#define ILI9341_DRIVER -//#define ST7735_DRIVER -//#define ILI9163_DRIVER -//#define S6D02A1_DRIVER -//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI -//#define HX8357D_DRIVER -//#define ILI9481_DRIVER -//#define ILI9486_DRIVER -//#define ILI9488_DRIVER -//#define ST7789_DRIVER +// #define ILI9341_DRIVER +// #define ST7735_DRIVER +// #define ILI9163_DRIVER +// #define S6D02A1_DRIVER +// #define RPI_ILI9486_DRIVER // 20MHz maximum SPI +// #define HX8357D_DRIVER +// #define ILI9481_DRIVER +// #define ILI9486_DRIVER +// #define ILI9488_DRIVER +#define ST7789_DRIVER +// #define ILI9225_DRIVER + +// For IPS LCD display +// #define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below -//#define M5STACK +// #define M5STACK // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation -//#define TFT_WIDTH 80 -//#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 -//#define TFT_HEIGHT 128 +// #define TFT_WIDTH 80 +// #define TFT_WIDTH 128 +// #define TFT_HEIGHT 128 +// #define TFT_HEIGHT 160 +// #define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try @@ -42,14 +47,14 @@ // Comment out ALL BUT ONE of these options for a ST7735 display driver, save this // this User_Setup file, then rebuild and upload the sketch to the board again: -//#define ST7735_INITB -//#define ST7735_GREENTAB -//#define ST7735_GREENTAB2 -//#define ST7735_GREENTAB3 -//#define ST7735_GREENTAB128 // For 128 x 128 display -//#define ST7735_GREENTAB80160 // For 80 x 160 display -//#define ST7735_REDTAB -//#define ST7735_BLACKTAB +// #define ST7735_INITB +// #define ST7735_GREENTAB +// #define ST7735_GREENTAB2 +// #define ST7735_GREENTAB3 +// #define ST7735_GREENTAB128 // For 128 x 128 display +// #define ST7735_GREENTAB80160 // For 80 x 160 display +// #define ST7735_REDTAB +// #define ST7735_BLACKTAB // ################################################################################## // @@ -91,9 +96,9 @@ // ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP8266 SETUP ###### // For NodeMCU - use pin numbers in the form PIN_Dx where Dx is the NodeMCU pin designation -#define TFT_CS PIN_D8 // Chip select control pin D8 -#define TFT_DC PIN_D3 // Data Command control pin -#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line) +#define TFT_CS 5 // Chip select control pin D8 +#define TFT_DC 16 // Data Command control pin +#define TFT_RST 17 // Reset pin (could connect to NodeMCU RST, see next line) //#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V //#define TOUCH_CS PIN_D2 // Chip select pin (T_CS) of touch screen @@ -234,9 +239,9 @@ // #define SPI_FREQUENCY 5000000 // #define SPI_FREQUENCY 10000000 // #define SPI_FREQUENCY 20000000 -#define SPI_FREQUENCY 27000000 // Actually sets it to 26.67MHz = 80/3 +// #define SPI_FREQUENCY 27000000 // Actually sets it to 26.67MHz = 80/3 // #define SPI_FREQUENCY 40000000 // Maximum to use SPIFFS -// #define SPI_FREQUENCY 80000000 +#define SPI_FREQUENCY 80000000 #define SPI_READ_FREQUENCY 20000000 // Optional reduced SPI frequency for reading TFT diff --git a/User_Setup_Select.h b/User_Setup_Select.h index 19b85f3..8ca1e82 100644 --- a/User_Setup_Select.h +++ b/User_Setup_Select.h @@ -38,10 +38,12 @@ //#include // Setup file configured for HX8357D (untested) //#include // Setup file for the ESP32 with parallel bus TFT //#include // Setup file for any Waveshare ePaper display -//#include // Setup file configured for HX8357D (untested) +//#include // Setup file configured for ST7789 //#include // Setup file configured for ST7735 80x160 display //#include // Setup file for ESP8266 and ILI9488 SPI bus TFT //#include // Setup file for ESP32 and ILI9488 SPI bus TFT +//#include // Setup file configured for ST7789 240x240 display +//#include // Setup file for ESP32 and ILI9225 SPI bus TFT //#include @@ -92,6 +94,9 @@ #elif defined (ST7789_DRIVER) #include "TFT_Drivers/ST7789_Defines.h" #define TFT_DRIVER 0x7789 +#elif defined (ILI9225_DRIVER) + #include "TFT_Drivers/ILI9225_Defines.h" + #define TFT_DRIVER 0x9225 #elif defined (XYZZY_DRIVER) // <<<<<<<<<<<<<<<<<<<<<<<< ADD NEW DRIVER HERE #include "TFT_Drivers/XYZZY_Defines.h" #define TFT_DRIVER 0x0000 diff --git a/User_Setups/Setup10_RPi_touch_ILI9486.h b/User_Setups/Setup10_RPi_touch_ILI9486.h index 99dc979..ba73d7f 100644 --- a/User_Setups/Setup10_RPi_touch_ILI9486.h +++ b/User_Setups/Setup10_RPi_touch_ILI9486.h @@ -19,6 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER #define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup11_RPi_touch_ILI9486.h b/User_Setups/Setup11_RPi_touch_ILI9486.h index 2e1b1c0..2c2a19e 100644 --- a/User_Setups/Setup11_RPi_touch_ILI9486.h +++ b/User_Setups/Setup11_RPi_touch_ILI9486.h @@ -19,6 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER #define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup12_M5Stack.h b/User_Setups/Setup12_M5Stack.h index 1f153ed..752faa7 100644 --- a/User_Setups/Setup12_M5Stack.h +++ b/User_Setups/Setup12_M5Stack.h @@ -19,6 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below #define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup15_HX8357D.h b/User_Setups/Setup15_HX8357D.h index 9bcc7a6..c153599 100644 --- a/User_Setups/Setup15_HX8357D.h +++ b/User_Setups/Setup15_HX8357D.h @@ -20,6 +20,14 @@ //#define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI #define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -27,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup18_ST7789.h b/User_Setups/Setup18_ST7789.h index b4a1437..1def154 100644 --- a/User_Setups/Setup18_ST7789.h +++ b/User_Setups/Setup18_ST7789.h @@ -22,8 +22,13 @@ //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI //#define HX8357D_DRIVER //#define ILI9481_DRIVER +//#define ILI9486_DRIVER //#define ILI9488_DRIVER #define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -31,8 +36,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup19_ST7735_80x160.h b/User_Setups/Setup19_ST7735_80x160.h index 81aa36b..c1b696a 100644 --- a/User_Setups/Setup19_ST7735_80x160.h +++ b/User_Setups/Setup19_ST7735_80x160.h @@ -19,6 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation #define TFT_WIDTH 80 //#define TFT_WIDTH 128 -#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup1_ILI9341.h b/User_Setups/Setup1_ILI9341.h index 83c6696..37d4865 100644 --- a/User_Setups/Setup1_ILI9341.h +++ b/User_Setups/Setup1_ILI9341.h @@ -19,6 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup20_ILI9488.h b/User_Setups/Setup20_ILI9488.h index 676ab89..c0f42e2 100644 --- a/User_Setups/Setup20_ILI9488.h +++ b/User_Setups/Setup20_ILI9488.h @@ -19,7 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER #define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -27,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup21_ILI9488.h b/User_Setups/Setup21_ILI9488.h index 50353d4..1b7a2ce 100644 --- a/User_Setups/Setup21_ILI9488.h +++ b/User_Setups/Setup21_ILI9488.h @@ -19,7 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER #define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -27,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup22_ST7789_240x240.h b/User_Setups/Setup22_ST7789_240x240.h new file mode 100644 index 0000000..d89beea --- /dev/null +++ b/User_Setups/Setup22_ST7789_240x240.h @@ -0,0 +1,260 @@ +// USER DEFINED SETTINGS +// Set driver type, fonts to be loaded, pins used and SPI control method etc +// +// See the User_Setup_Select.h file if you wish to be able to define multiple +// setups and then easily select which setup file is used by the compiler. +// +// If this file is edited correctly then all the library example sketches should +// run without the need to make any more changes for a particular hardware setup! +// Note that some sketches are designed for a particular TFT pixel width/height + +// ################################################################################## +// +// Section 0. Call up the right driver file and any options for it +// +// ################################################################################## + +// Only define one driver, the other ones must be commented out +//#define ILI9341_DRIVER +//#define ST7735_DRIVER +//#define ILI9163_DRIVER +//#define S6D02A1_DRIVER +//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +#define IPS_LCD + +// For M5Stack ESP32 module with integrated display ONLY, remove // in line below +//#define M5STACK + +// For ST7735, ST7789 and ILI9163 ONLY, define the pixel width and height in portrait orientation +//#define TFT_WIDTH 80 +//#define TFT_WIDTH 128 +//#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +#define TFT_HEIGHT 240 + +// For ST7735 ONLY, define the type of display, originally this was based on the +// colour of the tab on the screen protector film but this is not always true, so try +// out the different options below if the screen does not display graphics correctly, +// e.g. colours wrong, mirror images, or tray pixels at the edges. +// Comment out ALL BUT ONE of these options for a ST7735 display driver, save this +// this User_Setup file, then rebuild and upload the sketch to the board again: + +//#define ST7735_INITB +//#define ST7735_GREENTAB +//#define ST7735_GREENTAB2 +//#define ST7735_GREENTAB3 +//#define ST7735_GREENTAB128 // For 128 x 128 display +//#define ST7735_GREENTAB80160 // For 80 x 160 display +//#define ST7735_REDTAB +//#define ST7735_BLACKTAB + +// ################################################################################## +// +// Section 1. Define the pins that are used to interface with the display here +// +// ################################################################################## + +// We must use hardware SPI, a minimum of 3 GPIO pins is needed. +// Typical setup for ESP8266 NodeMCU ESP-12 is : +// +// Display SDO/MISO to NodeMCU pin D6 (or leave disconnected if not reading TFT) +// Display LED to NodeMCU pin VIN (or 5V, see below) +// Display SCK to NodeMCU pin D5 +// Display SDI/MOSI to NodeMCU pin D7 +// Display DC (RS/AO)to NodeMCU pin D3 +// Display RESET to NodeMCU pin D4 (or RST, see below) +// Display CS to NodeMCU pin D8 (or GND, see below) +// Display GND to NodeMCU pin GND (0V) +// Display VCC to NodeMCU 5V or 3.3V +// +// The TFT RESET pin can be connected to the NodeMCU RST pin or 3.3V to free up a control pin +// +// The DC (Data Command) pin may be labeled AO or RS (Register Select) +// +// With some displays such as the ILI9341 the TFT CS pin can be connected to GND if no more +// SPI devices (e.g. an SD Card) are connected, in this case comment out the #define TFT_CS +// line below so it is NOT defined. Other displays such at the ST7735 require the TFT CS pin +// to be toggled during setup, so in these cases the TFT_CS line must be defined and connected. +// +// The NodeMCU D0 pin can be used for RST +// +// See Section 2. below if DC or CS is connected to D0 +// +// Note: only some versions of the NodeMCU provide the USB 5V on the VIN pin +// If 5V is not available at a pin you can use 3.3V but backlight brightness +// will be lower. + + +// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP8266 SETUP ###### + +// For NodeMCU - use pin numbers in the form PIN_Dx where Dx is the NodeMCU pin designation +//#define TFT_CS PIN_D8 // Chip select control pin D8 +#define TFT_DC PIN_D3 // Data Command control pin +#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line) +//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V + +//#define TOUCH_CS PIN_D2 // Chip select pin (T_CS) of touch screen + +//#define TFT_WR PIN_D2 // Write strobe for modified Raspberry Pi TFT only + + +// ###### FOR ESP8266 OVERLAP MODE EDIT THE PIN NUMBERS IN THE FOLLOWING LINES ###### + +// Overlap mode shares the ESP8266 FLASH SPI bus with the TFT so has a performance impact +// but saves pins for other functions. +// Use NodeMCU SD0=MISO, SD1=MOSI, CLK=SCLK to connect to TFT in overlap mode + +// In ESP8266 overlap mode the TFT chip select MUST connect to pin D3 +//#define TFT_CS PIN_D3 +//#define TFT_DC PIN_D5 // Data Command control pin +//#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line) +//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V + +// In ESP8266 overlap mode the following must be defined +//#define TFT_SPI_OVERLAP + +// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP32 SETUP ###### + +// For ESP32 Dev board (only tested with ILI9341 display) +// The hardware SPI can be mapped to any pins + +//#define TFT_MISO 19 +//#define TFT_MOSI 23 +//#define TFT_SCLK 18 +//#define TFT_CS 15 // Chip select control pin +//#define TFT_DC 2 // Data Command control pin +//#define TFT_RST 4 // Reset pin (could connect to RST pin) +//#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST + +// For the M5Stack module use these #define lines +//#define TFT_MISO 19 +//#define TFT_MOSI 23 +//#define TFT_SCLK 18 +//#define TFT_CS 14 // Chip select control pin +//#define TFT_DC 27 // Data Command control pin +//#define TFT_RST 33 // Reset pin (could connect to Arduino RESET pin) +//#define TFT_BL 32 // LED back-light + +//#define TOUCH_CS 21 // Chip select pin (T_CS) of touch screen + +//#define TFT_WR 22 // Write strobe for modified Raspberry Pi TFT only + +// ###### EDIT THE PINs BELOW TO SUIT YOUR ESP32 PARALLEL TFT SETUP ###### + +// The library supports 8 bit parallel TFTs with the ESP32, the pin +// selection below is compatible with ESP32 boards in UNO format. +// Wemos D32 boards need to be modified, see diagram in Tools folder. +// Only ILI9481 and ILI9341 based displays have been tested! + +// Parallel bus is only supported on ESP32 +// Uncomment line below to use ESP32 Parallel interface instead of SPI + +//#define ESP32_PARALLEL + +// The ESP32 and TFT the pins used for testing are: +//#define TFT_CS 33 // Chip select control pin (library pulls permanently low +//#define TFT_DC 15 // Data Command control pin - use a pin in the range 0-31 +//#define TFT_RST 32 // Reset pin, toggles on startup + +//#define TFT_WR 4 // Write strobe control pin - use a pin in the range 0-31 +//#define TFT_RD 2 // Read strobe control pin - use a pin in the range 0-31 + +//#define TFT_D0 12 // Must use pins in the range 0-31 for the data bus +//#define TFT_D1 13 // so a single register write sets/clears all bits. +//#define TFT_D2 26 // Pins can be randomly assigned, this does not affect +//#define TFT_D3 25 // TFT screen update performance. +//#define TFT_D4 17 +//#define TFT_D5 16 +//#define TFT_D6 27 +//#define TFT_D7 14 + +// ################################################################################## +// +// Section 2. Define the way the DC and/or CS lines are driven (ESP8266 only) +// +// ################################################################################## + +// Normally the library uses direct register access for the DC and CS lines for speed +// If D0 (GPIO16) is used for CS or DC then a different slower method must be used +// Uncomment one line if D0 is used for DC or CS +// DC on D0 = 6% performance penalty at 40MHz SPI running graphics test +// CS on D0 = 2% performance penalty at 40MHz SPI running graphics test + +// #define D0_USED_FOR_DC +// #define D0_USED_FOR_CS + +// ################################################################################## +// +// Section 3. Define the fonts that are to be used here +// +// ################################################################################## + +// Comment out the #defines below with // to stop that font being loaded +// The ESP8366 and ESP32 have plenty of memory so commenting out fonts is not +// normally necessary. If all fonts are loaded the extra FLASH space required is +// about 17Kbytes. To save FLASH space only enable the fonts you need! + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded +// this will save ~20kbytes of FLASH +#define SMOOTH_FONT + +// ################################################################################## +// +// Section 4. Not used +// +// ################################################################################## + + +// ################################################################################## +// +// Section 5. Other options +// +// ################################################################################## + +// Define the SPI clock frequency, this affects the graphics rendering speed. Too +// fast and the TFT driver will not keep up and display corruption appears. +// With an ILI9341 display 40MHz works OK, 80MHz sometimes fails +// With a ST7735 display more than 27MHz may not work (spurious pixels and lines) +// With an ILI9163 display 27 MHz works OK. +// The RPi typically only works at 20MHz maximum. + +// #define SPI_FREQUENCY 1000000 +// #define SPI_FREQUENCY 5000000 +// #define SPI_FREQUENCY 10000000 +// #define SPI_FREQUENCY 20000000 +#define SPI_FREQUENCY 27000000 // Actually sets it to 26.67MHz = 80/3 +// #define SPI_FREQUENCY 40000000 // Maximum to use SPIFFS +// #define SPI_FREQUENCY 80000000 + +// The XPT2046 requires a lower SPI clock rate of 2.5MHz so we define that here: +#define SPI_TOUCH_FREQUENCY 2500000 + + +// Comment out the following #define if "SPI Transactions" do not need to be +// supported. When commented out the code size will be smaller and sketches will +// run slightly faster, so leave it commented out unless you need it! + +// Transaction support is needed to work with SD library but not needed with TFT_SdFat +// Transaction support is required if other SPI devices are connected. + +// Transactions are automatically enabled by the library for an ESP32 (to use HAL mutex) +// so changing it here has no effect + +//#define SUPPORT_TRANSACTIONS diff --git a/User_Setups/Setup23_ILI9225.h b/User_Setups/Setup23_ILI9225.h new file mode 100644 index 0000000..37d4865 --- /dev/null +++ b/User_Setups/Setup23_ILI9225.h @@ -0,0 +1,230 @@ +// USER DEFINED SETTINGS +// Set driver type, fonts to be loaded, pins used and SPI control method etc +// +// See the User_Setup_Select.h file if you wish to be able to define multiple +// setups and then easily select which setup file is used by the compiler. +// +// If this file is edited correctly then all the library example sketches should +// run without the need to make any more changes for a particular hardware setup! + +// ################################################################################## +// +// Section 0. Call up the right driver file and any options for it +// +// ################################################################################## + +// Only define one driver, the other ones must be commented out +#define ILI9341_DRIVER +//#define ST7735_DRIVER +//#define ILI9163_DRIVER +//#define S6D02A1_DRIVER +//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD + +// For M5Stack ESP32 module with integrated display ONLY, remove // in line below +//#define M5STACK + +// For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation +//#define TFT_WIDTH 80 +//#define TFT_WIDTH 128 +//#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 + +// For ST7735 ONLY, define the type of display, originally this was based on the +// colour of the tab on the screen protector film but this is not always true, so try +// out the different options below if the screen does not display graphics correctly, +// e.g. colours wrong, mirror images, or tray pixels at the edges. +// Comment out ALL BUT ONE of these options for a ST7735 display driver, save this +// this User_Setup file, then rebuild and upload the sketch to the board again: + +//#define ST7735_INITB +//#define ST7735_GREENTAB +//#define ST7735_GREENTAB2 +//#define ST7735_GREENTAB3 +//#define ST7735_GREENTAB128 // For 128 x 128 display +//#define ST7735_GREENTAB80160 // For 80 x 160 display +//#define ST7735_REDTAB +//#define ST7735_BLACKTAB + +// ################################################################################## +// +// Section 1. Define the pins that are used to interface with the display here +// +// ################################################################################## + +// We must use hardware SPI, a minimum of 3 GPIO pins is needed. +// Typical setup for ESP8266 NodeMCU ESP-12 is : +// +// Display SDO/MISO to NodeMCU pin D6 (or leave disconnected if not reading TFT) +// Display LED to NodeMCU pin VIN (or 5V, see below) +// Display SCK to NodeMCU pin D5 +// Display SDI/MOSI to NodeMCU pin D7 +// Display DC (RS/AO)to NodeMCU pin D3 +// Display RESET to NodeMCU pin D4 (or RST, see below) +// Display CS to NodeMCU pin D8 (or GND, see below) +// Display GND to NodeMCU pin GND (0V) +// Display VCC to NodeMCU 5V or 3.3V +// +// The TFT RESET pin can be connected to the NodeMCU RST pin or 3.3V to free up a control pin +// +// The DC (Data Command) pin may be labeled AO or RS (Register Select) +// +// With some displays such as the ILI9341 the TFT CS pin can be connected to GND if no more +// SPI devices (e.g. an SD Card) are connected, in this case comment out the #define TFT_CS +// line below so it is NOT defined. Other displays such at the ST7735 require the TFT CS pin +// to be toggled during setup, so in these cases the TFT_CS line must be defined and connected. +// +// The NodeMCU D0 pin can be used for RST +// +// See Section 2. below if DC or CS is connected to D0 +// +// Note: only some versions of the NodeMCU provide the USB 5V on the VIN pin +// If 5V is not available at a pin you can use 3.3V but backlight brightness +// will be lower. + + +// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP8266 SETUP ###### + +// For NodeMCU - use pin numbers in the form PIN_Dx where Dx is the NodeMCU pin designation +#define TFT_CS PIN_D8 // Chip select control pin D8 +#define TFT_DC PIN_D3 // Data Command control pin +#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line) +//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V + +//#define TOUCH_CS PIN_D1 // Chip select pin (T_CS) of touch screen + +//#define TFT_WR PIN_D2 // Write strobe for modified Raspberry Pi TFT only + + +// ###### FOR ESP8266 OVERLAP MODE EDIT THE PIN NUMBERS IN THE FOLLOWING LINES ###### + +// Overlap mode shares the ESP8266 FLASH SPI bus with the TFT so has a performance impact +// but saves pins for other functions. +// Use NodeMCU SD0=MISO, SD1=MOSI, CLK=SCLK to connect to TFT in overlap mode + +// In ESP8266 overlap mode the TFT chip select MUST connect to pin D3 +//#define TFT_CS PIN_D3 +//#define TFT_DC PIN_D5 // Data Command control pin +//#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line) +//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V + +// In ESP8266 overlap mode the following must be defined +//#define TFT_SPI_OVERLAP + +// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP32 SETUP ###### + +// For ESP32 Dev board (only tested with ILI9341 display) +// The hardware SPI can be mapped to any pins + +//#define TFT_MISO 19 +//#define TFT_MOSI 23 +//#define TFT_SCLK 18 +//#define TFT_CS 15 // Chip select control pin +//#define TFT_DC 2 // Data Command control pin +//#define TFT_RST 4 // Reset pin (could connect to RST pin) +//#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST + +//#define TOUCH_CS 21 // Chip select pin (T_CS) of touch screen + +//#define TFT_WR 22 // Write strobe for modified Raspberry Pi TFT only + +// For the M5Stack module use these #define lines +//#define TFT_MISO 19 +//#define TFT_MOSI 23 +//#define TFT_SCLK 18 +//#define TFT_CS 14 // Chip select control pin +//#define TFT_DC 27 // Data Command control pin +//#define TFT_RST 33 // Reset pin (could connect to Arduino RESET pin) +//#define TFT_BL 32 // LED back-light + +// ################################################################################## +// +// Section 2. Define the way the DC and/or CS lines are driven (ESP8266 only) +// +// ################################################################################## + +// Normally the library uses direct register access for the DC and CS lines for speed +// If D0 (GPIO16) is used for CS or DC then a different slower method must be used +// Uncomment one line if D0 is used for DC or CS +// DC on D0 = 6% performance penalty at 40MHz SPI running graphics test +// CS on D0 = 2% performance penalty at 40MHz SPI running graphics test + +// #define D0_USED_FOR_DC +// #define D0_USED_FOR_CS + +// ################################################################################## +// +// Section 3. Define the fonts that are to be used here +// +// ################################################################################## + +// Comment out the #defines below with // to stop that font being loaded +// The ESP8366 and ESP32 have plenty of memory so commenting out fonts is not +// normally necessary. If all fonts are loaded the extra FLASH space required is +// about 17Kbytes. To save FLASH space only enable the fonts you need! + +#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH +#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters +#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters +#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm +#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:. +#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-. +//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT +#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts + +// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded +// this will save ~20kbytes of FLASH +#define SMOOTH_FONT + +// ################################################################################## +// +// Section 4. Not used +// +// ################################################################################## + + +// ################################################################################## +// +// Section 5. Other options +// +// ################################################################################## + +// Define the SPI clock frequency, this affects the graphics rendering speed. Too +// fast and the TFT driver will not keep up and display corruption appears. +// With an ILI9341 display 40MHz works OK, 80MHz sometimes fails +// With a ST7735 display more than 27MHz may not work (spurious pixels and lines) +// With an ILI9163 display 27 MHz works OK. +// The RPi typically only works at 20MHz maximum. + +// #define SPI_FREQUENCY 1000000 +// #define SPI_FREQUENCY 5000000 +// #define SPI_FREQUENCY 10000000 +// #define SPI_FREQUENCY 20000000 +#define SPI_FREQUENCY 27000000 // Actually sets it to 26.67MHz = 80/3 +// #define SPI_FREQUENCY 40000000 // Maximum to use SPIFFS +// #define SPI_FREQUENCY 80000000 + +// The XPT2046 requires a lower SPI clock rate of 2.5MHz so we define that here: +#define SPI_TOUCH_FREQUENCY 2500000 + + +// Comment out the following #define if "SPI Transactions" do not need to be +// supported. When commented out the code size will be smaller and sketches will +// run slightly faster, so leave it commented out unless you need it! + +// Transaction support is needed to work with SD library but not needed with TFT_SdFat +// Transaction support is required if other SPI devices are connected. + +// Transactions are automatically enabled by the library for an ESP32 (to use HAL mutex) +// so changing it here has no effect + +// #define SUPPORT_TRANSACTIONS diff --git a/User_Setups/Setup2_ST7735.h b/User_Setups/Setup2_ST7735.h index 22c9189..172bdb8 100644 --- a/User_Setups/Setup2_ST7735.h +++ b/User_Setups/Setup2_ST7735.h @@ -19,6 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 #define TFT_WIDTH 128 -#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup3_ILI9163.h b/User_Setups/Setup3_ILI9163.h index 9e8429e..d8cc04f 100644 --- a/User_Setups/Setup3_ILI9163.h +++ b/User_Setups/Setup3_ILI9163.h @@ -19,6 +19,15 @@ #define ILI9163_DRIVER //#define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 #define TFT_WIDTH 128 -#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup4_S6D02A1.h b/User_Setups/Setup4_S6D02A1.h index 503a732..2fa6397 100644 --- a/User_Setups/Setup4_S6D02A1.h +++ b/User_Setups/Setup4_S6D02A1.h @@ -19,6 +19,15 @@ //#define ILI9163_DRIVER #define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup5_RPi_ILI9486.h b/User_Setups/Setup5_RPi_ILI9486.h index 13cd850..f05243c 100644 --- a/User_Setups/Setup5_RPi_ILI9486.h +++ b/User_Setups/Setup5_RPi_ILI9486.h @@ -18,7 +18,16 @@ //#define ST7735_DRIVER //#define ILI9163_DRIVER //#define S6D02A1_DRIVER -#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup6_RPi_Wr_ILI9486.h b/User_Setups/Setup6_RPi_Wr_ILI9486.h index ca16993..09ac8c7 100644 --- a/User_Setups/Setup6_RPi_Wr_ILI9486.h +++ b/User_Setups/Setup6_RPi_Wr_ILI9486.h @@ -19,6 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER #define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/Setup7_ST7735_128x128.h b/User_Setups/Setup7_ST7735_128x128.h index 3bd3623..646a051 100644 --- a/User_Setups/Setup7_ST7735_128x128.h +++ b/User_Setups/Setup7_ST7735_128x128.h @@ -19,6 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK diff --git a/User_Setups/Setup9_ST7735_Overlap.h b/User_Setups/Setup9_ST7735_Overlap.h index 462db1a..ad57fd8 100644 --- a/User_Setups/Setup9_ST7735_Overlap.h +++ b/User_Setups/Setup9_ST7735_Overlap.h @@ -19,6 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 #define TFT_WIDTH 128 -#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try diff --git a/User_Setups/SetupX_Template.h b/User_Setups/SetupX_Template.h index 901af87..43f5a0a 100644 --- a/User_Setups/SetupX_Template.h +++ b/User_Setups/SetupX_Template.h @@ -19,6 +19,15 @@ //#define ILI9163_DRIVER //#define S6D02A1_DRIVER //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI +//#define HX8357D_DRIVER +//#define ILI9481_DRIVER +//#define ILI9486_DRIVER +//#define ILI9488_DRIVER +//#define ST7789_DRIVER +//#define ILI9225_DRIVER + +// For IPS LCD display +//#define IPS_LCD // For M5Stack ESP32 module with integrated display ONLY, remove // in line below //#define M5STACK @@ -26,8 +35,9 @@ // For ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation //#define TFT_WIDTH 80 //#define TFT_WIDTH 128 -//#define TFT_HEIGHT 160 //#define TFT_HEIGHT 128 +//#define TFT_HEIGHT 160 +//#define TFT_HEIGHT 240 // For ST7735 ONLY, define the type of display, originally this was based on the // colour of the tab on the screen protector film but this is not always true, so try