1

I'm using a Waveshare e-ink display (5x7) attached to a Pi Zero W via a HAT. I'm building the content from top to bottom.

As you can see from this photo (apologies for the reflection of the conservatory roof), all is fine up until this point :

Raspberry Pi display with no issues

However, if I then proceed to draw one or more boxes below the content, the weather icons fade out from right to left, like so :

Raspberry Pi display with issues

The order in which I draw is irrelevant - it happens whether I draw the boxes then the weather data, or vice versa.

Relevant code is as follows :

    # Draw one rectangle for top data
    draw.rectangle([(0,0),(479,120)],outline = 0)
    # And another for the tasks
    draw.rectangle([(0,220),(239,700)],outline = 0)
    # And a third for something else
    draw.rectangle([(241,220),(479,700)],outline = 0)
    # Draw the forecast (on a loop)
    # If we have 400 pixels to play with, forecast covers next 5 hours, so 80 pixels per entry
    i = 0
    xoffset = 40
    yoffset = 130
    forecast = get_forecast()
    while i < 5:

        # Get the data
        icon = get_icon(forecast[i]['icon'])
        time = forecast[i]['time']
        temperature = str(forecast[i]['temperature']) + u'\N{DEGREE SIGN}' + "C"

        # Draw the forecast time
        timewidth = forecastfont.getsize(time)[0]
        textx = calculate_offset(xoffset, timewidth, xoffset)
        texty = yoffset
        draw.text((textx, texty), time, font = forecastfont, fill=0)

        # Draw the forecast icon
        iconwidth = weather24.getsize(icon)[0]
        iconx = calculate_offset(xoffset, iconwidth, xoffset)
        icony = yoffset + forecastfont.getsize(time)[1] + 5
        draw.text((iconx, icony), icon, font = weather24, fill = 0)

        # Draw the forecast temperature
        tempwidth = temperaturefont.getsize(temperature)[0]
        tempx = calculate_offset(xoffset, tempwidth, xoffset)
        tempy = yoffset + forecastfont.getsize(time)[1] + weather24.getsize(icon)[1] + 5
        draw.text((tempx, tempy), temperature, font = temperaturefont, fill=0)

        # Advance the loop and move the offset
        i += 1
        xoffset += 60

My research appears to suggest that sleeping the display after writing should help, but I'm already doing that :

    epd.display(epd.getbuffer(image))
    epd.sleep()
Giles Bennett
  • 1,509
  • 1
  • 12
  • 15

1 Answers1

0

This seems to be caused by too much light when the screen does update. It happends also once the screen is static but in reverse (screen darken with direct light). It's a bit disapointing but you may want to move the screen in a darken place and especially avoid any direct lighting. I noted this with a waveshare 7.5 v2 screen with esp32 drivers.

Rexave
  • 367
  • 1
  • 3
  • 15