ESP32 / ESP8266 & BME280 / SHT2x sensor with InfluxDB support
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

User_Setup.h 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. // USER DEFINED SETTINGS
  2. // Set driver type, fonts to be loaded, pins used and SPI control method etc
  3. //
  4. // See the User_Setup_Select.h file if you wish to be able to define multiple
  5. // setups and then easily select which setup file is used by the compiler.
  6. //
  7. // If this file is edited correctly then all the library example sketches should
  8. // run without the need to make any more changes for a particular hardware setup!
  9. // Note that some sketches are designed for a particular TFT pixel width/height
  10. // User defined information reported by "Read_User_Setup" test & diagnostics example
  11. #define USER_SETUP_INFO "User_Setup"
  12. // Define to disable all #warnings in library (can be put in User_Setup_Select.h)
  13. //#define DISABLE_ALL_LIBRARY_WARNINGS
  14. // ##################################################################################
  15. //
  16. // Section 1. Call up the right driver file and any options for it
  17. //
  18. // ##################################################################################
  19. // Define STM32 to invoke optimised processor support (only for STM32)
  20. //#define STM32
  21. // Defining the STM32 board allows the library to optimise the performance
  22. // for UNO compatible "MCUfriend" style shields
  23. //#define NUCLEO_64_TFT
  24. //#define NUCLEO_144_TFT
  25. // STM32 8 bit parallel only:
  26. // If STN32 Port A or B pins 0-7 are used for 8 bit parallel data bus bits 0-7
  27. // then this will improve rendering performance by a factor of ~8x
  28. //#define STM_PORTA_DATA_BUS
  29. //#define STM_PORTB_DATA_BUS
  30. // Tell the library to use parallel mode (otherwise SPI is assumed)
  31. //#define TFT_PARALLEL_8_BIT
  32. //#defined TFT_PARALLEL_16_BIT // **** 16 bit parallel ONLY for RP2040 processor ****
  33. // Display type - only define if RPi display
  34. //#define RPI_DISPLAY_TYPE // 20MHz maximum SPI
  35. // Only define one driver, the other ones must be commented out
  36. //#define ILI9341_DRIVER // Generic driver for common displays
  37. #define ILI9341_2_DRIVER // Alternative ILI9341 driver, see https://github.com/Bodmer/TFT_eSPI/issues/1172
  38. //#define ST7735_DRIVER // Define additional parameters below for this display
  39. //#define ILI9163_DRIVER // Define additional parameters below for this display
  40. //#define S6D02A1_DRIVER
  41. //#define RPI_ILI9486_DRIVER // 20MHz maximum SPI
  42. //#define HX8357D_DRIVER
  43. //#define ILI9481_DRIVER
  44. //#define ILI9486_DRIVER
  45. //#define ILI9488_DRIVER // WARNING: Do not connect ILI9488 display SDO to MISO if other devices share the SPI bus (TFT SDO does NOT tristate when CS is high)
  46. //#define ST7789_DRIVER // Full configuration option, define additional parameters below for this display
  47. //#define ST7789_2_DRIVER // Minimal configuration option, define additional parameters below for this display
  48. //#define R61581_DRIVER
  49. //#define RM68140_DRIVER
  50. //#define ST7796_DRIVER
  51. //#define SSD1351_DRIVER
  52. //#define SSD1963_480_DRIVER
  53. //#define SSD1963_800_DRIVER
  54. //#define SSD1963_800ALT_DRIVER
  55. //#define ILI9225_DRIVER
  56. //#define GC9A01_DRIVER
  57. // Some displays support SPI reads via the MISO pin, other displays have a single
  58. // bi-directional SDA pin and the library will try to read this via the MOSI line.
  59. // To use the SDA line for reading data from the TFT uncomment the following line:
  60. // #define TFT_SDA_READ // This option is for ESP32 ONLY, tested with ST7789 and GC9A01 display only
  61. // For ST7735, ST7789 and ILI9341 ONLY, define the colour order IF the blue and red are swapped on your display
  62. // Try ONE option at a time to find the correct colour order for your display
  63. // #define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue
  64. // #define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red
  65. // For M5Stack ESP32 module with integrated ILI9341 display ONLY, remove // in line below
  66. // #define M5STACK
  67. // For ST7789, ST7735, ILI9163 and GC9A01 ONLY, define the pixel width and height in portrait orientation
  68. // #define TFT_WIDTH 80
  69. // #define TFT_WIDTH 128
  70. // #define TFT_WIDTH 172 // ST7789 172 x 320
  71. #define TFT_WIDTH 240 // ST7789 240 x 240 and 240 x 320
  72. // #define TFT_HEIGHT 160
  73. // #define TFT_HEIGHT 128
  74. // #define TFT_HEIGHT 240 // ST7789 240 x 240
  75. #define TFT_HEIGHT 320 // ST7789 240 x 320
  76. // #define TFT_HEIGHT 240 // GC9A01 240 x 240
  77. #define LCD_WIDTH TFT_HEIGHT
  78. #define LCD_HEIGHT TFT_WIDTH
  79. // For ST7735 ONLY, define the type of display, originally this was based on the
  80. // colour of the tab on the screen protector film but this is not always true, so try
  81. // out the different options below if the screen does not display graphics correctly,
  82. // e.g. colours wrong, mirror images, or stray pixels at the edges.
  83. // Comment out ALL BUT ONE of these options for a ST7735 display driver, save this
  84. // this User_Setup file, then rebuild and upload the sketch to the board again:
  85. // #define ST7735_INITB
  86. // #define ST7735_GREENTAB
  87. // #define ST7735_GREENTAB2
  88. // #define ST7735_GREENTAB3
  89. // #define ST7735_GREENTAB128 // For 128 x 128 display
  90. // #define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 offset)
  91. // #define ST7735_ROBOTLCD // For some RobotLCD arduino shields (128x160, BGR, https://docs.arduino.cc/retired/getting-started-guides/TFT)
  92. // #define ST7735_REDTAB
  93. // #define ST7735_BLACKTAB
  94. // #define ST7735_REDTAB160x80 // For 160 x 80 display with 24 pixel offset
  95. // If colours are inverted (white shows as black) then uncomment one of the next
  96. // 2 lines try both options, one of the options should correct the inversion.
  97. // #define TFT_INVERSION_ON
  98. // #define TFT_INVERSION_OFF
  99. // ##################################################################################
  100. //
  101. // Section 2. Define the pins that are used to interface with the display here
  102. //
  103. // ##################################################################################
  104. // If a backlight control signal is available then define the TFT_BL pin in Section 2
  105. // below. The backlight will be turned ON when tft.begin() is called, but the library
  106. // needs to know if the LEDs are ON with the pin HIGH or LOW. If the LEDs are to be
  107. // driven with a PWM signal or turned OFF/ON then this must be handled by the user
  108. // sketch. e.g. with digitalWrite(TFT_BL, LOW);
  109. #define TFT_BL 21 // LED back-light control pin
  110. #define TFT_BACKLIGHT_ON HIGH // Level to turn ON back-light (HIGH or LOW)
  111. // We must use hardware SPI, a minimum of 3 GPIO pins is needed.
  112. // Typical setup for ESP8266 NodeMCU ESP-12 is :
  113. //
  114. // Display SDO/MISO to NodeMCU pin D6 (or leave disconnected if not reading TFT)
  115. // Display LED to NodeMCU pin VIN (or 5V, see below)
  116. // Display SCK to NodeMCU pin D5
  117. // Display SDI/MOSI to NodeMCU pin D7
  118. // Display DC (RS/AO)to NodeMCU pin D3
  119. // Display RESET to NodeMCU pin D4 (or RST, see below)
  120. // Display CS to NodeMCU pin D8 (or GND, see below)
  121. // Display GND to NodeMCU pin GND (0V)
  122. // Display VCC to NodeMCU 5V or 3.3V
  123. //
  124. // The TFT RESET pin can be connected to the NodeMCU RST pin or 3.3V to free up a control pin
  125. //
  126. // The DC (Data Command) pin may be labelled AO or RS (Register Select)
  127. //
  128. // With some displays such as the ILI9341 the TFT CS pin can be connected to GND if no more
  129. // SPI devices (e.g. an SD Card) are connected, in this case comment out the #define TFT_CS
  130. // line below so it is NOT defined. Other displays such at the ST7735 require the TFT CS pin
  131. // to be toggled during setup, so in these cases the TFT_CS line must be defined and connected.
  132. //
  133. // The NodeMCU D0 pin can be used for RST
  134. //
  135. //
  136. // Note: only some versions of the NodeMCU provide the USB 5V on the VIN pin
  137. // If 5V is not available at a pin you can use 3.3V but backlight brightness
  138. // will be lower.
  139. // ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP8266 SETUP ######
  140. // For NodeMCU - use pin numbers in the form PIN_Dx where Dx is the NodeMCU pin designation
  141. //#define TFT_CS PIN_D8 // Chip select control pin D8
  142. //#define TFT_DC PIN_D3 // Data Command control pin
  143. //#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line)
  144. //#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V
  145. //#define TFT_BL PIN_D1 // LED back-light (only for ST7789 with backlight control pin)
  146. //#define TOUCH_CS PIN_D2 // Chip select pin (T_CS) of touch screen
  147. //#define TFT_WR PIN_D2 // Write strobe for modified Raspberry Pi TFT only
  148. // ###### FOR ESP8266 OVERLAP MODE EDIT THE PIN NUMBERS IN THE FOLLOWING LINES ######
  149. // Overlap mode shares the ESP8266 FLASH SPI bus with the TFT so has a performance impact
  150. // but saves pins for other functions. It is best not to connect MISO as some displays
  151. // do not tristate that line when chip select is high!
  152. // Note: Only one SPI device can share the FLASH SPI lines, so a SPI touch controller
  153. // cannot be connected as well to the same SPI signals.
  154. // On NodeMCU 1.0 SD0=MISO, SD1=MOSI, CLK=SCLK to connect to TFT in overlap mode
  155. // On NodeMCU V3 S0 =MISO, S1 =MOSI, S2 =SCLK
  156. // In ESP8266 overlap mode the following must be defined
  157. //#define TFT_SPI_OVERLAP
  158. // In ESP8266 overlap mode the TFT chip select MUST connect to pin D3
  159. //#define TFT_CS PIN_D3
  160. //#define TFT_DC PIN_D5 // Data Command control pin
  161. //#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line)
  162. //#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V
  163. // ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP32 SETUP ######
  164. // For ESP32 Dev board (only tested with ILI9341 display)
  165. // The hardware SPI can be mapped to any pins
  166. #define TFT_MISO 12
  167. #define TFT_MOSI 13
  168. #define TFT_SCLK 14
  169. #define TFT_CS 15 // Chip select control pin
  170. #define TFT_DC 2 // Data Command control pin
  171. //#define TFT_RST 4 // Reset pin (could connect to RST pin)
  172. #define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST
  173. // For ESP32 Dev board (only tested with GC9A01 display)
  174. // The hardware SPI can be mapped to any pins
  175. //#define TFT_MOSI 15 // In some display driver board, it might be written as "SDA" and so on.
  176. //#define TFT_SCLK 14
  177. //#define TFT_CS 5 // Chip select control pin
  178. //#define TFT_DC 27 // Data Command control pin
  179. //#define TFT_RST 33 // Reset pin (could connect to Arduino RESET pin)
  180. //#define TFT_BL 22 // LED back-light
  181. //#define TOUCH_CS 21 // Chip select pin (T_CS) of touch screen
  182. //#define TFT_WR 22 // Write strobe for modified Raspberry Pi TFT only
  183. // For the M5Stack module use these #define lines
  184. //#define TFT_MISO 19
  185. //#define TFT_MOSI 23
  186. //#define TFT_SCLK 18
  187. //#define TFT_CS 14 // Chip select control pin
  188. //#define TFT_DC 27 // Data Command control pin
  189. //#define TFT_RST 33 // Reset pin (could connect to Arduino RESET pin)
  190. //#define TFT_BL 32 // LED back-light (required for M5Stack)
  191. // ###### EDIT THE PINs BELOW TO SUIT YOUR ESP32 PARALLEL TFT SETUP ######
  192. // The library supports 8 bit parallel TFTs with the ESP32, the pin
  193. // selection below is compatible with ESP32 boards in UNO format.
  194. // Wemos D32 boards need to be modified, see diagram in Tools folder.
  195. // Only ILI9481 and ILI9341 based displays have been tested!
  196. // Parallel bus is only supported for the STM32 and ESP32
  197. // Example below is for ESP32 Parallel interface with UNO displays
  198. // Tell the library to use 8 bit parallel mode (otherwise SPI is assumed)
  199. //#define TFT_PARALLEL_8_BIT
  200. // The ESP32 and TFT the pins used for testing are:
  201. //#define TFT_CS 33 // Chip select control pin (library pulls permanently low
  202. //#define TFT_DC 15 // Data Command control pin - must use a pin in the range 0-31
  203. //#define TFT_RST 32 // Reset pin, toggles on startup
  204. //#define TFT_WR 4 // Write strobe control pin - must use a pin in the range 0-31
  205. //#define TFT_RD 2 // Read strobe control pin
  206. //#define TFT_D0 12 // Must use pins in the range 0-31 for the data bus
  207. //#define TFT_D1 13 // so a single register write sets/clears all bits.
  208. //#define TFT_D2 26 // Pins can be randomly assigned, this does not affect
  209. //#define TFT_D3 25 // TFT screen update performance.
  210. //#define TFT_D4 17
  211. //#define TFT_D5 16
  212. //#define TFT_D6 27
  213. //#define TFT_D7 14
  214. // ###### EDIT THE PINs BELOW TO SUIT YOUR STM32 SPI TFT SETUP ######
  215. // The TFT can be connected to SPI port 1 or 2
  216. //#define TFT_SPI_PORT 1 // SPI port 1 maximum clock rate is 55MHz
  217. //#define TFT_MOSI PA7
  218. //#define TFT_MISO PA6
  219. //#define TFT_SCLK PA5
  220. //#define TFT_SPI_PORT 2 // SPI port 2 maximum clock rate is 27MHz
  221. //#define TFT_MOSI PB15
  222. //#define TFT_MISO PB14
  223. //#define TFT_SCLK PB13
  224. // Can use Ardiuno pin references, arbitrary allocation, TFT_eSPI controls chip select
  225. //#define TFT_CS D5 // Chip select control pin to TFT CS
  226. //#define TFT_DC D6 // Data Command control pin to TFT DC (may be labelled RS = Register Select)
  227. //#define TFT_RST D7 // Reset pin to TFT RST (or RESET)
  228. // OR alternatively, we can use STM32 port reference names PXnn
  229. //#define TFT_CS PE11 // Nucleo-F767ZI equivalent of D5
  230. //#define TFT_DC PE9 // Nucleo-F767ZI equivalent of D6
  231. //#define TFT_RST PF13 // Nucleo-F767ZI equivalent of D7
  232. //#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to processor reset
  233. // Use an Arduino pin for initial testing as connecting to processor reset
  234. // may not work (pulse too short at power up?)
  235. // ##################################################################################
  236. //
  237. // Section 3. Define the fonts that are to be used here
  238. //
  239. // ##################################################################################
  240. // Comment out the #defines below with // to stop that font being loaded
  241. // The ESP8366 and ESP32 have plenty of memory so commenting out fonts is not
  242. // normally necessary. If all fonts are loaded the extra FLASH space required is
  243. // about 17Kbytes. To save FLASH space only enable the fonts you need!
  244. #define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
  245. #define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
  246. #define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
  247. #define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
  248. #define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
  249. #define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
  250. //#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
  251. #define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
  252. // Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
  253. // this will save ~20kbytes of FLASH
  254. #define SMOOTH_FONT
  255. // ##################################################################################
  256. //
  257. // Section 4. Other options
  258. //
  259. // ##################################################################################
  260. // For RP2040 processor and SPI displays, uncomment the following line to use the PIO interface.
  261. //#define RP2040_PIO_SPI // Leave commented out to use standard RP2040 SPI port interface
  262. // For RP2040 processor and 8 or 16 bit parallel displays:
  263. // The parallel interface write cycle period is derived from a division of the CPU clock
  264. // speed so scales with the processor clock. This means that the divider ratio may need
  265. // to be increased when overclocking. I may also need to be adjusted dependant on the
  266. // display controller type (ILI94341, HX8357C etc). If RP2040_PIO_CLK_DIV is not defined
  267. // the library will set default values which may not suit your display.
  268. // The display controller data sheet will specify the minimum write cycle period. The
  269. // controllers often work reliably for shorter periods, however if the period is too short
  270. // the display may not initialise or graphics will become corrupted.
  271. // PIO write cycle frequency = (CPU clock/(4 * RP2040_PIO_CLK_DIV))
  272. //#define RP2040_PIO_CLK_DIV 1 // 32ns write cycle at 125MHz CPU clock
  273. //#define RP2040_PIO_CLK_DIV 2 // 64ns write cycle at 125MHz CPU clock
  274. //#define RP2040_PIO_CLK_DIV 3 // 96ns write cycle at 125MHz CPU clock
  275. // For the RP2040 processor define the SPI port channel used (default 0 if undefined)
  276. //#define TFT_SPI_PORT 1 // Set to 0 if SPI0 pins are used, or 1 if spi1 pins used
  277. // For the STM32 processor define the SPI port channel used (default 1 if undefined)
  278. //#define TFT_SPI_PORT 2 // Set to 1 for SPI port 1, or 2 for SPI port 2
  279. // Define the SPI clock frequency, this affects the graphics rendering speed. Too
  280. // fast and the TFT driver will not keep up and display corruption appears.
  281. // With an ILI9341 display 40MHz works OK, 80MHz sometimes fails
  282. // With a ST7735 display more than 27MHz may not work (spurious pixels and lines)
  283. // With an ILI9163 display 27 MHz works OK.
  284. // #define SPI_FREQUENCY 1000000
  285. // #define SPI_FREQUENCY 5000000
  286. // #define SPI_FREQUENCY 10000000
  287. // #define SPI_FREQUENCY 20000000
  288. //#define SPI_FREQUENCY 27000000
  289. // #define SPI_FREQUENCY 40000000
  290. #define SPI_FREQUENCY 55000000 // STM32 SPI1 only (SPI2 maximum is 27MHz)
  291. // #define SPI_FREQUENCY 80000000
  292. // Optional reduced SPI frequency for reading TFT
  293. #define SPI_READ_FREQUENCY 20000000
  294. // The XPT2046 requires a lower SPI clock rate of 2.5MHz so we define that here:
  295. #define SPI_TOUCH_FREQUENCY 2500000
  296. // The ESP32 has 2 free SPI ports i.e. VSPI and HSPI, the VSPI is the default.
  297. // If the VSPI port is in use and pins are not accessible (e.g. TTGO T-Beam)
  298. // then uncomment the following line:
  299. //#define USE_HSPI_PORT
  300. // Comment out the following #define if "SPI Transactions" do not need to be
  301. // supported. When commented out the code size will be smaller and sketches will
  302. // run slightly faster, so leave it commented out unless you need it!
  303. // Transaction support is needed to work with SD library but not needed with TFT_SdFat
  304. // Transaction support is required if other SPI devices are connected.
  305. // Transactions are automatically enabled by the library for an ESP32 (to use HAL mutex)
  306. // so changing it here has no effect
  307. // #define SUPPORT_TRANSACTIONS