Skip to content

Colours

Configure

No configuration is required, as the object myColours provides the colours.

Colours are coded internally on 16 bits, with 5 bits for red, 6 bits for green and 5 bits for blue, or called RGB565.

rrrrr gggggg bbbbb
43210 543210 43210

The Red-Green-Blue components are 8-bit sized and 0x00..0xff scaled.

The monochrome e-paper screens provides two basic colours. Combining those two basic colours gives an additional shade, totalling three colours.

  • white: basic colour;
  • black: basic colour;
  • grey: combined colour, one pixel black, another pixel white.

The colour e-paper screens provides three basic colours. Combining those three basic colours gives two additional shades, totalling six colours.

  • white: basic colour;
  • black: basic colour;
  • red: basic colour.

and

  • grey: combined colour, one pixel black, another pixel white;
  • light red: combined colour, one pixel red, another pixel white;
  • dark red: combined colour, one pixel red, another pixel black.

Use

The monochrome or black-and-white screens feature three colours:

  • myColours.white for white;
  • myColours.black for black;
  • myColours.grey for grey, with one pixel black and another white.

The colour screens bring three more colours:

  • myColours.red for red;
  • myColours.lightRed for light red, with one pixel red and another white;
  • myColours.darkRed for dark red, with one pixel black and another red.

Example

This is the core of the code from example Common_Colours.ino.

void displayPalette()
{
    displayRGB(myColours.blue);
    myScreen.setOrientation(myOrientation);
    myScreen.setPenSolid(false);

    uint16_t x0, y0, dx, dy, dz;

    dz = min((myScreen.screenSizeX() * 10 / 50), (myScreen.screenSizeY() * 10 / 35));
    dx = (myScreen.screenSizeX() - dz * 50 / 10) / 2;
    dy = (myScreen.screenSizeY() - dz * 35 / 10) / 2;

    y0 = dy + dz / 2;
    x0 = dx + dz / 2;
    myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.red);
    x0 = dx + dz * 4 / 2;
    myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.red);
    x0 = dx + dz * 7 / 2;
    myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.red);

    y0 = dy + dz * 4 / 2;
    x0 = dx + dz / 2;
    myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.black);
    x0 = dx + dz * 4 / 2;
    myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.black);
    x0 = dx + dz * 7 / 2;
    myScreen.dRectangle(x0 - 2, y0 - 2, dz + 4, dz + 4, myColours.black);

    myScreen.setPenSolid(true);
    myScreen.selectFont(fontSmall);

    // Light red
    x0 = dx + dz / 2;
    y0 = dy + dz / 2;
    myScreen.dRectangle(x0, y0, dz, dz, myColours.lightRed);
    myScreen.gText(x0, y0 + dz + 6, "light", myColours.red);

    // Red
    x0 = dx + dz * 4 / 2;
    y0 = dy + dz / 2;
    myScreen.dRectangle(x0, y0, dz, dz, myColours.red);
    myScreen.gText(x0, y0 + dz + 6, "colour", myColours.red);

    // Dark-red
    x0 = dx + dz * 7 / 2;
    y0 = dy + dz / 2;
    myScreen.dRectangle(x0, y0, dz, dz, myColours.darkRed);
    myScreen.gText(x0, y0 + dz + 6, "dark", myColours.red);

    // White
    x0 = dx + dz / 2;
    y0 = dy + dz * 4 / 2;
    myScreen.dRectangle(x0, y0, dz, dz, myColours.white);
    myScreen.gText(x0, y0 + dz + 6, "white", myColours.black);

    // Grey
    x0 = dx + dz * 4 / 2;
    y0 = dy + dz * 4 / 2;
    myScreen.dRectangle(x0, y0, dz, dz, myColours.grey);
    myScreen.gText(x0, y0 + dz + 6, "grey", myColours.black);

    // Black
    x0 = dx + dz * 7 / 2;
    y0 = dy + dz * 4 / 2;
    myScreen.dRectangle(x0, y0, dz, dz, myColours.black);
    myScreen.gText(x0, y0 + dz + 6, "black", myColours.black);

    myScreen.gText(0, 0, myScreen.WhoAmI(), myColours.black);

    myScreen.flush();
}
Back to top