Inaccurate colors on Giga Display Shield

Hello all,
I've recently noticed that my Arduino Giga Display Shield has begun to lack the ability to display the color red at it's normal levels. This results in hot colors such as orange turning green, and solid WHITE (0xffff) turning teal.

On a test sketch where it blinks Red, Green, and Blue, I've gotten this result:
(I've stitched the photos together to show the output. Ignore the glare please)


Red is the only color that lacks any glare in this photo. Clearly, red isn't showing correctly.

I've tried:

  • uploading separate sketches to attempt to see if any software issues are present. No change.
  • removing, cleaning, then replacing the display to attempt to see if there are any glaring hardware issues. There wasn't.

Furthermore, I've checked, and high temperatures and other immediate signs of damage are nonexistent. I'm using Arduino_GigaDisplay_GFX.h.
Any and all help is appreciated. Thank you!

Orange: 0xFF8000 // 0xRRGGBB
Green: 0x00FF00

White: 0xFFFFFF
Teal (cyan): 0x00FFFF

Looks like "R" is missing (not being used). What is the picture representing? The non-filtered part looks "red" to me.

What code are you using?

Here is my code (Values from This Repo )

#include <Arduino_GigaDisplay_GFX.h>

GigaDisplay_GFX display;

void setup() {
  display.begin();
  delay(100);
}

void loop() {
  delay(1000);
  display.fillScreen(0xF800); // Red
  delay(2000);
  display.fillScreen(0x07E0); // Green
  delay(2000);
  display.fillScreen(0x001F); // Blue
  delay(2000);
  display.fillScreen(0xFFFF); // White (appears teal)
  delay(2000);
  display.fillScreen(0x0000); // Black
}

This is just an example sketch that I've used in the photo and in testing.

"565" red is missing.... maybe a wire? Maybe a driver chip?

   Red    ⏐    Green    ⏐   Blue
1 1 1 1 1 ⏐ 0 0 0 0 0 0 ⏐ 0 0 0 0 0 // red 0xF800...
0 0 0 0 0 ⏐ 0 0 0 0 0 0 ⏐ 0 0 0 0 0 // without 5 red bits is black 0x0000

0 0 0 0 0 ⏐ 1 1 1 1 1 1 ⏐ 0 0 0 0 0 // green  0x07E0...
0 0 0 0 0 ⏐ 1 1 1 1 1 1 ⏐ 0 0 0 0 0 // without 5 red bits is green 0x07E0

0 0 0 0 0 ⏐ 0 0 0 0 0 0 ⏐ 1 1 1 1 1 // blue 0x001F...
0 0 0 0 0 ⏐ 0 0 0 0 0 0 ⏐ 1 1 1 1 1 // without 5 red bits is blue 0x001F

1 1 1 1 1 ⏐ 1 1 1 1 1 1 ⏐ 1 1 1 1 1 // white 0xFFFF...
0 0 0 0 0 ⏐ 1 1 1 1 1 1 ⏐ 1 1 1 1 1 // without 5 red bits is teal 0x07FF

0 0 0 0 0 ⏐ 0 0 0 0 0 0 ⏐ 0 0 0 0 0 // black 0x0000...
0 0 0 0 0 ⏐ 0 0 0 0 0 0 ⏐ 0 0 0 0 0 // without 5 red bits is black 0x0000

1 1 1 1 1 ⏐ 1 0 0 0 0 0 ⏐ 0 0 0 0 0 // orange 0xFC00...
0 0 0 0 0 ⏐ 1 0 0 0 0 0 ⏐ 0 0 0 0 0 // without 5 red bits is green 0x0400

It is possible that only four "red" MSB bits are missing, as the resulting color would appear the same as five red bits missing.

Yes, that's likely part of the problem.
Trying this code, I should be able to see a smooth gradient change, however I'm only able to see seven hard steps:

#include <Arduino_GigaDisplay_GFX.h>
GigaDisplay_GFX tft;

void setup() {
  tft.begin();
  delay(500);

  for (int i = 0; i < 32; i++) {
    uint16_t color = (i << 11);
    tft.fillScreen(color);
    delay(500);
  }
}

void loop() {}

It's only able to show 8 separate colors during this.
This, if on the right track, would mean that it's either a damaged ribbon cable / trace / connection elsewhere, or maybe a driver problem.
Any ideas? not quite sure what to do from here.

Physically examine your wiring.

The middle (green) color max value is 64 (0 to 63) in the 565 (5 bits red, 6 bits green, 5 bits blue) color scheme.

I'm not currently using anything other than the base Arduino Giga and it's display shield. Looking here, I'm unable to see any glaring issues or faults in their wiring. (Both of the front sides look exactly the same as advertised)

Furthermore, the only notable thing I've noticed is that the orange flex cables have released from their seated position - though that is if they were seated in the first place.

Hi @bheitz780.

By "seated", do you mean the cables being attached to the PCB along their length (rather than only by the connections at each end of the cable? If so, then no there was never an attachment to the PCB along the length of the cable.

That makes sense. The screen colors must be done in a screen driver (the square I.C.?). All the red/grn/blu lines on the schematic diagram are for the RGB LED.

https://docs.arduino.cc/resources/schematics/ASX00039-schematics.pdf