SCIndicatorDisplay.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #pragma once
  2. #include <helpers/ui/LGFXDisplay.h>
  3. #define LGFX_USE_V1
  4. #include <LovyanGFX.hpp>
  5. #include <lgfx/v1/platforms/esp32s3/Panel_RGB.hpp>
  6. #include <lgfx/v1/platforms/esp32s3/Bus_RGB.hpp>
  7. class LGFX : public lgfx::LGFX_Device
  8. {
  9. lgfx::Panel_ST7701 _panel_instance;
  10. lgfx::Bus_RGB _bus_instance;
  11. lgfx::Light_PWM _light_instance;
  12. lgfx::Touch_FT5x06 _touch_instance;
  13. public:
  14. const uint16_t screenWidth = 480;
  15. const uint16_t screenHeight = 480;
  16. bool hasButton(void) { return true; }
  17. LGFX(void)
  18. {
  19. {
  20. auto cfg = _panel_instance.config();
  21. cfg.memory_width = 480;
  22. cfg.memory_height = 480;
  23. cfg.panel_width = screenWidth;
  24. cfg.panel_height = screenHeight;
  25. cfg.offset_x = 0;
  26. cfg.offset_y = 0;
  27. cfg.offset_rotation = 1;
  28. _panel_instance.config(cfg);
  29. }
  30. {
  31. auto cfg = _panel_instance.config_detail();
  32. cfg.pin_cs = 4 | IO_EXPANDER;
  33. cfg.pin_sclk = 41;
  34. cfg.pin_mosi = 48;
  35. cfg.use_psram = 1;
  36. _panel_instance.config_detail(cfg);
  37. }
  38. {
  39. auto cfg = _bus_instance.config();
  40. cfg.panel = &_panel_instance;
  41. cfg.freq_write = 8000000;
  42. cfg.pin_henable = 18;
  43. cfg.pin_pclk = 21;
  44. cfg.pclk_active_neg = 0;
  45. cfg.pclk_idle_high = 0;
  46. cfg.de_idle_high = 1;
  47. cfg.pin_hsync = 16;
  48. cfg.hsync_polarity = 0;
  49. cfg.hsync_front_porch = 10;
  50. cfg.hsync_pulse_width = 8;
  51. cfg.hsync_back_porch = 50;
  52. cfg.pin_vsync = 17;
  53. cfg.vsync_polarity = 0;
  54. cfg.vsync_front_porch = 10;
  55. cfg.vsync_pulse_width = 8;
  56. cfg.vsync_back_porch = 20;
  57. cfg.pin_d0 = 15;
  58. cfg.pin_d1 = 14;
  59. cfg.pin_d2 = 13;
  60. cfg.pin_d3 = 12;
  61. cfg.pin_d4 = 11;
  62. cfg.pin_d5 = 10;
  63. cfg.pin_d6 = 9;
  64. cfg.pin_d7 = 8;
  65. cfg.pin_d8 = 7;
  66. cfg.pin_d9 = 6;
  67. cfg.pin_d10 = 5;
  68. cfg.pin_d11 = 4;
  69. cfg.pin_d12 = 3;
  70. cfg.pin_d13 = 2;
  71. cfg.pin_d14 = 1;
  72. cfg.pin_d15 = 0;
  73. _bus_instance.config(cfg);
  74. }
  75. _panel_instance.setBus(&_bus_instance);
  76. {
  77. auto cfg = _light_instance.config();
  78. cfg.pin_bl = 45;
  79. _light_instance.config(cfg);
  80. }
  81. _panel_instance.light(&_light_instance);
  82. {
  83. auto cfg = _touch_instance.config();
  84. cfg.pin_cs = GPIO_NUM_NC;
  85. cfg.x_min = 0;
  86. cfg.x_max = 479;
  87. cfg.y_min = 0;
  88. cfg.y_max = 479;
  89. cfg.pin_int = GPIO_NUM_NC;
  90. cfg.pin_rst = GPIO_NUM_NC;
  91. cfg.bus_shared = true;
  92. cfg.offset_rotation = 0;
  93. cfg.i2c_port = 0;
  94. cfg.i2c_addr = 0x48;
  95. cfg.pin_sda = 39;
  96. cfg.pin_scl = 40;
  97. cfg.freq = 400000;
  98. _touch_instance.config(cfg);
  99. _panel_instance.setTouch(&_touch_instance);
  100. }
  101. setPanel(&_panel_instance);
  102. }
  103. };
  104. class SCIndicatorDisplay : public LGFXDisplay {
  105. LGFX disp;
  106. public:
  107. SCIndicatorDisplay() : LGFXDisplay(480, 480, disp) {}
  108. };