Inkplate 10 displaying incorrect grey levels and dark colours

Customer:

When I changed my code to display 7 rectangles—one of each colour—I got the same problem on one of my Inkplate 10s. I’m not getting the correct range of colours: 0 is black, 1 and 3 are the same, 2 and 4 are the same, 5 and 6 are the same, and 7 is white. My other Inkplate 10 works correctly as expected.

Code being used:

display.clearDisplay();
display.fillRect(0, 0, 150, 412, 0);
display.fillRect(150, 0, 150, 412, 1);
display.fillRect(300, 0, 150, 412, 2);
display.fillRect(450, 0, 150, 412, 3);
display.fillRect(600, 0, 150, 412, 4);
display.fillRect(750, 0, 150, 412, 5);
display.fillRect(900, 0, 150, 412, 6);
display.fillRect(1050, 0, 150, 412, 7);
displayCurrentAction("Drawing rectangle");
display.display();

Attachment omitted in migration: IMG_3003.jpeg

Originally submitted via email support on 27 April 2023. Migrated to the forum for community visibility.

Soldered Support:

This appears to be an issue with the VCOM and/or Waveform settings.

VCOM is a small negative voltage of a very specific amount programmed into the Inkplate 10’s ePaper power supply controller (TPS65186). The correct VCOM should be printed on a sticker on the ePaper itself, as it’s different for each model.

A Waveform is a predefined set of voltage sequences that help the ePaper display correctly show data. Each ePaper model has a different Waveform, so if the controller has it set incorrectly, this can result in the mixup of grays on your display.

To fix this, open the sketch Inkplate10_Factory_Programming_VCOM.ino and make these modifications:

  1. Change the integer in this line from 16 to another number (e.g., 2, 4, 5):

    const int EEPROMoffset = 16;
    
  2. Comment out the call to testperipheral() to avoid tests and make setting VCOM faster:

    // Test all the peripherals
    // testPeripheral();
    

When you run the sketch, you will be prompted to enter VCOM via serial. Enter the number you read on the label with the negative sign (e.g., send “-1.39” via serial at 115200 baud). Then you will be presented with a screen to select the waveform, also via serial. Try the different waveforms and see which one looks best.

Attachment omitted in migration: image.png

Customer:

I used the factory programming sketch with VCOM -1.28 from the ribbon cable label. It’s much better but not as good as my other Inkplate 10.

I have two issues:

  1. The black is not as dark as on my second Inkplate 10 (which has a VCOM of -1.48)
  2. Colours 2 and 3 and 4 and 5 are almost identical (my second Inkplate has a better range)

Are there other suggestions? Getting the black darker would help. Is there anything I can do in code to darken the black?

Attachment omitted in migration: image001.jpg

Attachment omitted in migration: image002.jpg

Soldered Support:

If you prefer darker blacks, you can experiment with changing the VCOM value. The value printed on the label is the manufacturer’s suggestion. Try decreasing it by a small amount (like -0.1, so the number goes further into negative) and see how that works. Make sure to try different waveforms when you change the VCOM as well.

Using the display at a slightly different VCOM will not damage it long term and may provide better results for what you’re looking for.

Be aware that the VCOM value is stored in EEPROM memory of the TPS65186, which can only be programmed approximately 100 times due to EEPROM limitations (it’s meant to be written to very rarely for permanent configuration data like VCOM), but you should find something that works well before reaching that limit.