Hi, I have a brand new Giga R1 and a Display shield. The Display is blank. I cannot get any graphics to display. I have installed all of the libraries. I have tried all examples.... IMU example shows data in serial, as does the touch example. RGB LED and microphone are working. I have tried the backlight example and it also works (I can see the backlight getting brighter and dimmer). Just no graphics is there anything that I could try?
Update..... IMU not working now?
Is there a way to reflash the display?
Reflash the display? Why do you think it even possible?
Why do you think that the problem in the display firmware and not in your code, in your connections, or not caused by faulty parts?
Read the forum guidelines to see how to properly ask a question and some good information on making a good post.
Hi b707, I will take your advice and read the guidelines. I think the problem is with the display because the unit is brand new (Giga and display) Nothing is connected to the giga other than the display. They were correctly assembled and then powered on. Then I loaded the Giga library and then the display libraries. Every example works with the exception being, no graphics.
Please ensure that you have connected the display in the correct position as shown in this tutorial, specifically, to use the GIGA Display Shield, mount it on the bottom side of the GIGA R1 WiFi board. The GIGA R1 WiFi board will be flipped upside down when the display is used.
If you still encounter issues, don't hesitate to contact support through this form, and we'll do our best to assist you.
It might help Arduino to help solve some of these problems, if they had additional information. Things like maybe a couple of pictures. One that shows the front of the GIGA shield and another showing from the back of the Shield that shows the Arduino GIGA board. That way they maybe can see if it looks like the two are properly plugged into each other.
Also, more details about what you have tried, what works, what that does not. For example here is a slightly modified version of the touchpaint sketch I posted in the other thread:
/***************************************************
This is our touchscreen painting example for the Adafruit ILI9341 Shield
----> http://www.adafruit.com/products/1651
Check out the links above for our tutorials and wiring diagrams
These displays use SPI to communicate, 4 or 5 pins are required to
interface (RST is optional)
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
MIT license, all text above must be included in any redistribution
****************************************************/
REDIRECT_STDOUT_TO(Serial)
#include "Arduino_GigaDisplay_GFX.h"
#include "Arduino_GigaDisplayTouch.h"
#include <Arduino_GigaDisplay.h>
GigaDisplay_GFX display;
Arduino_GigaDisplayTouch touchDetector;
GigaDisplayRGB rgb; //create rgb object
#define GC9A01A_CYAN 0x07FF
#define GC9A01A_RED 0xf800
#define GC9A01A_BLUE 0x001F
#define GC9A01A_GREEN 0x07E0
#define GC9A01A_MAGENTA 0xF81F
#define GC9A01A_WHITE 0xffff
#define GC9A01A_BLACK 0x0000
#define GC9A01A_YELLOW 0xFFE0
// The buffer used to rotate and resize the frame
// Size of the color selection boxes and the paintbrush size
#define BOXSIZE 80
#define PENRADIUS 5
int oldcolor, currentcolor;
void setup(void) {
// while (!Serial); // used for leonardo debugging
Serial.begin(9600);
Serial.println(F("Touch Paint!"));
rgb.begin(); //init the library
display.begin();
rgb.on(255, 0, 0);
display.fillScreen(GC9A01A_RED);
delay(500);
rgb.on(0, 255, 0); //turn on blue pixel
display.fillScreen(GC9A01A_GREEN);
delay(500);
rgb.on(0, 0, 255); //turn on blue pixel
display.fillScreen(GC9A01A_BLUE);
delay(500);
rgb.on(255, 255, 255);
display.fillScreen(GC9A01A_WHITE);
delay(500);
rgb.off(); //turn off all pixels
display.fillScreen(GC9A01A_BLACK);
delay(500);
if (touchDetector.begin()) {
Serial.print("Touch controller init - OK");
} else {
Serial.print("Touch controller init - FAILED");
while (1) {
rgb.on(255, 0, 0);
delay(1000);
rgb.off();
delay(1000);
}
}
display.fillScreen(GC9A01A_BLACK);
// make the color selection boxes
display.fillRect(0, 0, BOXSIZE, BOXSIZE, GC9A01A_RED);
display.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, GC9A01A_YELLOW);
display.fillRect(BOXSIZE * 2, 0, BOXSIZE, BOXSIZE, GC9A01A_GREEN);
display.fillRect(BOXSIZE * 3, 0, BOXSIZE, BOXSIZE, GC9A01A_CYAN);
display.fillRect(BOXSIZE * 4, 0, BOXSIZE, BOXSIZE, GC9A01A_BLUE);
display.fillRect(BOXSIZE * 5, 0, BOXSIZE, BOXSIZE, GC9A01A_MAGENTA);
// select the current color 'red'
display.drawRect(0, 0, BOXSIZE, BOXSIZE, GC9A01A_WHITE);
currentcolor = GC9A01A_RED;
}
void loop() {
uint8_t contacts;
GDTpoint_t points[5];
contacts = touchDetector.getTouchPoints(points);
if (contacts == 0) {
rgb.off();
return;
}
rgb.on(0, 32, 0);
// Retrieve a point
int touch_x = points[0].x;
int touch_y = points[0].y;
/*
Serial.print("X = "); Serial.print(touch_x);
Serial.print("\tY = "); Serial.print(touch_y);
Serial.print("\tPressure = "); Serial.println(p.z);
*/
// Scale from ~0->4000 to display.width using the calibration #'s
// touch_x = map(touch_x, TS_MINX, TS_MAXX, 0, display.width());
// touch_y = map(touch_y, TS_MINY, TS_MAXY, 0, display.height());
/*
Serial.print("("); Serial.print(touch_x);
Serial.print(", "); Serial.print(touch_y);
Serial.println(")");
*/
if (touch_y < BOXSIZE) {
oldcolor = currentcolor;
if (touch_x < BOXSIZE) {
currentcolor = GC9A01A_RED;
display.drawRect(0, 0, BOXSIZE, BOXSIZE, GC9A01A_WHITE);
} else if (touch_x < BOXSIZE * 2) {
currentcolor = GC9A01A_YELLOW;
display.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, GC9A01A_WHITE);
} else if (touch_x < BOXSIZE * 3) {
currentcolor = GC9A01A_GREEN;
display.drawRect(BOXSIZE * 2, 0, BOXSIZE, BOXSIZE, GC9A01A_WHITE);
} else if (touch_x < BOXSIZE * 4) {
currentcolor = GC9A01A_CYAN;
display.drawRect(BOXSIZE * 3, 0, BOXSIZE, BOXSIZE, GC9A01A_WHITE);
} else if (touch_x < BOXSIZE * 5) {
currentcolor = GC9A01A_BLUE;
display.drawRect(BOXSIZE * 4, 0, BOXSIZE, BOXSIZE, GC9A01A_WHITE);
} else if (touch_x < BOXSIZE * 6) {
currentcolor = GC9A01A_MAGENTA;
display.drawRect(BOXSIZE * 5, 0, BOXSIZE, BOXSIZE, GC9A01A_WHITE);
}
if (oldcolor != currentcolor) {
if (oldcolor == GC9A01A_RED)
display.fillRect(0, 0, BOXSIZE, BOXSIZE, GC9A01A_RED);
if (oldcolor == GC9A01A_YELLOW)
display.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, GC9A01A_YELLOW);
if (oldcolor == GC9A01A_GREEN)
display.fillRect(BOXSIZE * 2, 0, BOXSIZE, BOXSIZE, GC9A01A_GREEN);
if (oldcolor == GC9A01A_CYAN)
display.fillRect(BOXSIZE * 3, 0, BOXSIZE, BOXSIZE, GC9A01A_CYAN);
if (oldcolor == GC9A01A_BLUE)
display.fillRect(BOXSIZE * 4, 0, BOXSIZE, BOXSIZE, GC9A01A_BLUE);
if (oldcolor == GC9A01A_MAGENTA)
display.fillRect(BOXSIZE * 5, 0, BOXSIZE, BOXSIZE, GC9A01A_MAGENTA);
}
}
if (((touch_y - PENRADIUS) > BOXSIZE) && ((touch_y + PENRADIUS) < display.height())) {
display.fillCircle(touch_x, touch_y, PENRADIUS, currentcolor);
}
}
It starts off doing something I often do with display sketches and fills the screen with a solid color pauses, shows a different color... In this case Red, Green, Blue, White, Black. But in this case while I am doing this, I am also turning on the RGB led on the shield with the same colors.
So if you run this, does the screen do anything? How about the LED?
It then starts the touch screen, if that fails, it should slowely blink the RGB.
If this all succeeds, it should show some color squares on the left hand side of the display. touching the screen in one of these boxes should choose a color, and touching elsewhere on the screen should draw in that color. When you are touching the LED should show green, and then go off when not touching...
As @KurtE mentioned please add more details like images of the display behaviour and picture of the board. If you tried to run some of the examples which examples you tried and what was the behaviour on the screen? If it was always just a blank screen or any colors?
I found that I didn't have the display pins pushed all the way into the giga headers. Once I did that the display lit up but this is all it shows. I've tried running the examples programs and also the sketch posted in this thread and it also looks just like this.
Hi , I have been looking at these posts as I seem to have the same problems. Using your code the LED flashes the different colours but the screen flashes some lines and then stays a dull white. For information the demo code with the touch sensor and giro work fine. thanks.
Is there a possibility to try the display shield or examples on a different GIGA R1 WiFi?
This is to see if that makes any difference in the behaviour of the Display shield.
Not really, I sent back my original screen thinking there must be a problem but now presumably it must be either the GIGA board of the software instead :-/
Mine looks identical to this when the program has not loaded fully and is stuck at setup. For example if I have a temperature probe that is not initialising and it's stuck in a while loop in setup. The code never loads beyond that.
I've purchased my giga + giga shield 3 days ago and when I try to do the sketches it ends up the same as you guys, the rgb is working correctly, but the display is not working.
I'd like to highlight something mrcarlfox said above. Be sure the display board is fully seated. I'm a veteran gray-haired electronics engineer, I know how to put together electronic assemblies in my sleep. But I made the exact same mistake. I did have the display plugged in on the correct side of the board, but I thought to myself, "this connection is not very secure", and assumed things would be more robust when I install standoffs to bolt the assembly together.
After reading the post above, I revisited the connection and found the problem. My Giga board had been shipped with one of the display connector's "caps" still installed. This is a small square "cap" that plugs into the connector, and gives a flat surface that the vacuum gripper of the PCB assembly pick and place machine pick up the part by. The factory had removed one of those caps, but not both. Once I removed the cap, the display board seated nice and firm. You'll know it's seated properly when you can just barely see the tips of the pins through the connector when viewed from the component side of the Giga MCU board.
There may still be library issues for people, but as of May 2024, I just downloaded the library called out in the getting started sketch and I'm seeing Hello World on my screen. YMMV
There were no caps on mine, but your post made me think that perhaps I need to apply more force to seat it properly. I huffed and I puffed, and snap! It fell into position and now works perfectly. I guess the old adage of if it doesn't fit, force it, may be correct after all.