Hi all,
I have one of these displays (link) and i just CANNOT get it to stop flickering like mad. Unfortunately I’m just not familiar enough with Arduino development to just wholesale switch over to that.
I’ve had zero issues getting the touchscreen to work, getting it to work with home assistant, or even opening an RTSP mjpeg feed on it. I just cant get it to stop flickering.
I’ve tried all sorts of playing with the refresh rates, the pulse widths and the PSRAM clock speed. Basically every build I’ve done has issues flickering.
I clean my build files between every compile. I have also tried preparing it for first use again, and while it helps for a couple seconds on the next boot, it doesnt make any sort of permenant fix.
I’ve added a .gif of the issue I’m experiencing.

If anyone can point me in the right direction, that would be amazing.
Here is the code that produced the most recent failure.
esphome:
name: esp-display
friendly_name: ESP Display
platformio_options:
board_build.flash_mode: dio
esp32:
board: esp32s3box
framework:
type: esp-idf
psram:
mode: octal
speed: 80Mhz
# Enable logging
logger:
# level: DEBUG
spi:
clk_pin:
number: 7
allow_other_uses: true
mosi_pin: GPIO6
i2c:
sda: GPIO08
scl: GPIO09
# Enable Home Assistant API
api:
wifi:
ssid: [---!---]
password: [---!---]
manual_ip:
static_ip: [---!---]
gateway: [---!---]
subnet: [---!---]
bluetooth_proxy:
active: true
button:
- platform: restart
name: "Restart Device"
text_sensor:
- platform: wifi_info
ip_address:
name: IP Address
ssid:
name: Connected SSID
bssid:
name: Connected BSSID
mac_address:
name: Mac Wifi Address
scan_results:
name: Latest Scan Results
sensor:
- platform: wifi_signal
name: "WiFi Signal Sensor"
update_interval: 60s
- platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
captive_portal:
display:
- platform: rpi_dpi_rgb
auto_clear_enabled: false
color_order: RGB
pclk_frequency: 16MHz
dimensions:
width: 800
height: 480
de_pin:
number: 5
hsync_pin:
number: 46
ignore_strapping_warning: true
vsync_pin:
number: 3
ignore_strapping_warning: true
pclk_pin:
number: 7
allow_other_uses: true
hsync_back_porch: 30
hsync_front_porch: 210
hsync_pulse_width: 30
vsync_back_porch: 4
vsync_front_porch: 4
vsync_pulse_width: 4
data_pins:
red:
- 1 #r3
- 2 #r4
- 42 #r5
- 41 #r6
- 40 #r7
blue:
- 14 #b3
- 38 #b4
- 18 #b5
- 17 #b6
- 10 #b7
green:
- 39 #g2
- 0 #g3
- 45 #g4
- 48 #g5
- 47 #g6
- 21 #g7
lambda: |-
int shift_x = (it.get_width()-310)/2;
int shift_y = (it.get_height()-256)/2;
for(auto i = 0; i<256; i++) {
it.horizontal_line(shift_x+ 0,i+shift_y,50, my_red.fade_to_white(i));
it.horizontal_line(shift_x+ 50,i+shift_y,50, my_red.fade_to_black(i));
it.horizontal_line(shift_x+105,i+shift_y,50, my_green.fade_to_white(i));
it.horizontal_line(shift_x+155,i+shift_y,50, my_green.fade_to_black(i));
it.horizontal_line(shift_x+210,i+shift_y,50, my_blue.fade_to_white(i));
it.horizontal_line(shift_x+260,i+shift_y,50, my_blue.fade_to_black(i));
}
it.rectangle(shift_x+ 0, 0+shift_y, shift_x+ 310, 256+shift_y, my_yellow);
color:
- id: my_blue
blue: 100%
- id: my_red
red: 100%
- id: my_green
green: 100%
- id: my_white
red: 100%
blue: 100%
green: 100%
- id: my_yellow
hex: ffff00