HELP! TFT LCD shield shows a blank white screen no matter what I do

I recently purchased a duinotech 2.8" TFT LCD Shield V3. I have correctly connected the shield onto my Arduino Mega 2560, but whenever I connect it to power, use any libraries, or upload any sketches, the screen stays white. I have tried countless libraries and tried to find people with a similar problem to me, but their solutions either don't work for me, or use concepts and terminology that I don't understand.

The touchscreen works, and when running the Adafruit TouchScreen example, touchscreendemosheild, the coordinates and pressure come up in the serial monitor.

After trying several other libraries and examples, I used the TFTLCD-Library-master example, tftpaint_shield, and the the following message was displayed on the serial monitor after I uploaded the sketch:

Unknown LCD driver chip: 0

What does this mean, and how do I find out what driver chip the TFT LCD has? If I do find the driver chip, how can I put it in the sketch to allow me to successfully use the display?

I have attached a photo of the white screen.

I am relatively new to arduino, so if you can help, please be specific and explain your solution in detail.

Thanks

DSCN9033[1].JPG

Please post a link to the actual device that you have bought e.g. Ebay sale.
If you post a photo, please post photo of pcb.

If you have a problem, run Library Manager.
Quote library versions and library example name.

It looks like a Blue 2.8 inch Mcufriend shield.

  1. Install Adafruit_GFX and MCUFRIEND_kbv libraries via the IDE Library Manager.
  2. Run "diagnostic" examples. Copy-paste the report from the Serial Terminal to your message.
  3. Quote library versions and library example name.

David.

Hi David,

Thanks for the reply, and sorry that I didn't give enough information. Here is a link to the product, on the site that I got it from: 240x320 LCD Touch Screen for Arduino

Here are the reports from the Serial Monitor:

Library: MCUFRIEND_kbv
Example: diagnose_TFT_support
Report:
Diagnose whether this controller is supported
There are FAQs in extras/mcufriend_how_to.txt

tft.readID() finds: ID = 0x8230

MCUFRIEND_kbv version: 2.9.8

This ID is not supported
look up ID in extras/mcufriend_how_to.txt
you may need to edit MCUFRIEND_kbv.cpp
to enable support for this ID
e.g. #define SUPPORT_8347D

New controllers appear on Ebay often
If your ID is not supported
run LCD_ID_readreg.ino from examples/
Copy-Paste the output from the Serial Terminal
to a message in Displays topic on Arduino Forum
or to Issues on GitHub

Note that OPEN-SMART boards have diff pinout
Edit the pin defines in LCD_ID_readreg to match
Edit mcufiend_shield.h for USE_SPECIAL
Edit mcufiend_special.h for USE_OPENSMART_SHIELD_PINOUT

Library: MCUFRIEND_kbv
Example: diagnose_Touchpins
Report:
Making all control and bus pins INPUT_PULLUP
Typical 30k Analog pullup with corresponding pin
would read low when digital is written LOW
e.g. reads ~25 for 300R X direction
e.g. reads ~30 for 500R Y direction

Testing : (A2, D8) = 24
Testing : (A3, D9) = 32
Diagnosing as:-
XM,XP: (A2, D8) = 24
YP,YM: (A3, D9) = 32

Library: MCUFRIEND_kbv
Example: diagnose_TFT_support
Report:
Diagnose whether this controller is supported
There are FAQs in extras/mcufriend_how_to.txt

tft.readID() finds: ID = 0x8230

MCUFRIEND_kbv version: 2.9.8

This ID is not supported
look up ID in extras/mcufriend_how_to.txt
you may need to edit MCUFRIEND_kbv.cpp
to enable support for this ID
e.g. #define SUPPORT_8347D

New controllers appear on Ebay often
If your ID is not supported
run LCD_ID_readreg.ino from examples/
Copy-Paste the output from the Serial Terminal
to a message in Displays topic on Arduino Forum
or to Issues on GitHub

Note that OPEN-SMART boards have diff pinout
Edit the pin defines in LCD_ID_readreg to match
Edit mcufiend_shield.h for USE_SPECIAL
Edit mcufiend_special.h for USE_OPENSMART_SHIELD_PINOUT

Library: Adafruit_GFX
Example: mock_ili9341
Report:

ILI9341 Test!
Display Power Mode: 0x0
MADCTL Mode: 0x0
Pixel Format: 0x0
Image Format: 0x0
Self Diagnostic: 0x0
Benchmark Time (microseconds)
Screen fill 1328600
Text 147204
Lines 1249296
Horiz/Vert Lines 113004
Rectangles (outline) 74320
Rectangles (filled) 2757628
Circles (filled) 442584
Circles (outline) 527304
Triangles (outline) 276328
Triangles (filled) 1231812
Rounded rects (outline) 209064
Rounded rects (filled) 2782300
Done!

Thanks for all your help, I really do appreciate you taking your time to help me.

Edit MCUFRIEND_kbv.cpp

Change line #10 from

//#define SUPPORT_8230              //UC8230 +118 bytes

to

#define SUPPORT_8230              //UC8230 +118 bytes

That is all that you need to do.

All the examples should work. Note that ILI9230-style controllers can only scroll the whole screen.

The diagnostic suggested:

This ID is not supported
look up ID in extras/mcufriend_how_to.txt
you may need to edit MCUFRIEND_kbv.cpp
to enable support for this ID
e.g. #define SUPPORT_8347D

I would appreciate any suggestions to improve the examples.

Adafruit are naughty. They should not put an SPI Adafruit_ILI9341 example under GFX. Especially when they have carefully designed the Mock_ILI9341 example to fail with Ebay Red ILI9341 displays.

David.

1 Like

Hi David,

I’ve had to post this message in three parts, as the message exceeds the maximum allowed length.

I really appreciate your help, but none of the examples I ran had a tenth line, or any line, that read:

//#define SUPPORT_8230              //UC8230 +118 bytes

Here are the three example I ran:

Library: MCUFRIEND_kbv
Example: diagnose_TFT_support
Sketch:

#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;

// Assign human-readable names to some common 16-bit color values:
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
#define GRAY    0x8410

uint16_t version = MCUFRIEND_KBV_H_;

void setup()
{
    Serial.begin(9600);
    if (!Serial) delay(5000);           //allow some time for Leonardo
    uint16_t ID = tft.readID(); //
    Serial.println(F("Diagnose whether this controller is supported"));
    Serial.println(F("There are FAQs in extras/mcufriend_how_to.txt"));
    Serial.println(F(""));
    Serial.print(F("tft.readID() finds: ID = 0x"));
    Serial.println(ID, HEX);
    Serial.println(F(""));
	Serial.print(F("MCUFRIEND_kbv version: "));
    Serial.print(version/100);
	Serial.print(F("."));
    Serial.print((version / 10) % 10);
	Serial.print(F("."));
    Serial.println(version % 10);
    Serial.println(F(""));
    if (ID == 0x0404) {
        Serial.println(F("Probably a write-only Mega2560 Shield"));
        Serial.println(F("#define USE_SPECIAL in mcufriend_shield.h"));
        Serial.println(F("#define appropriate SPECIAL in mcufriend_special.h"));
        Serial.println(F("e.g. USE_MEGA_16BIT_SHIELD"));
        Serial.println(F("e.g. USE_MEGA_8BIT_SHIELD"));
        Serial.println(F("Hint.  A Mega2560 Shield has a 18x2 male header"));
        Serial.println(F("Often a row of resistor-packs near the 18x2"));
        Serial.println(F("RP1-RP7 implies 16-bit but it might be 8-bit"));
        Serial.println(F("RP1-RP4 or RP1-RP5 can only be 8-bit"));
    }
    if (ID == 0xD3D3) {
        uint16_t guess_ID = 0x9481; // write-only shield
        Serial.println(F("Probably a write-only Mega2560 Shield"));
        Serial.print(F("Try to force ID = 0x"));
        Serial.println(guess_ID, HEX);
        tft.begin(guess_ID);
    }
    else tft.begin(ID);
    Serial.println(F(""));
    if (tft.width() == 0) {
        Serial.println(F("This ID is not supported"));
        Serial.println(F("look up ID in extras/mcufriend_how_to.txt"));
        Serial.println(F("you may need to edit MCUFRIEND_kbv.cpp"));
        Serial.println(F("to enable support for this ID"));
        Serial.println(F("e.g. #define SUPPORT_8347D"));
        Serial.println(F(""));
        Serial.println(F("New controllers appear on Ebay often"));
        Serial.println(F("If your ID is not supported"));
        Serial.println(F("run LCD_ID_readreg.ino from examples/"));
        Serial.println(F("Copy-Paste the output from the Serial Terminal"));
        Serial.println(F("to a message in Displays topic on Arduino Forum"));
        Serial.println(F("or to Issues on GitHub"));
        Serial.println(F(""));
        Serial.println(F("Note that OPEN-SMART boards have diff pinout"));
        Serial.println(F("Edit the pin defines in LCD_ID_readreg to match"));
        Serial.println(F("Edit mcufiend_shield.h for USE_SPECIAL"));
        Serial.println(F("Edit mcufiend_special.h for USE_OPENSMART_SHIELD_PINOUT"));
       while (1);    //just die
    } else {
        Serial.print(F("PORTRAIT is "));
        Serial.print(tft.width());
        Serial.print(F(" x "));
        Serial.println(tft.height());
        Serial.println(F(""));
        Serial.println(F("Run the examples/graphictest_kbv sketch"));
        Serial.println(F("All colours, text, directions, rotations, scrolls"));
        Serial.println(F("should work.  If there is a problem,  make notes on paper"));
        Serial.println(F("Post accurate description of problem to Forum"));
        Serial.println(F("Or post a link to a video (or photos)"));
        Serial.println(F(""));
        Serial.println(F("I rely on good information from remote users"));
    }
}

void loop()
{
    static uint8_t aspect = 0;
    const char *aspectname[] = {
        "PORTRAIT", "LANDSCAPE", "PORTRAIT_REV", "LANDSCAPE_REV"
    };
    const char *colorname[] = { "BLUE", "GREEN", "RED", "GRAY" };
    uint16_t colormask[] = { BLUE, GREEN, RED, GRAY };
    uint16_t ID = tft.readID(); //
    tft.setRotation(aspect);
    int width = tft.width();
    int height = tft.height();
    tft.fillScreen(colormask[aspect]);
    tft.drawRect(0, 0, width, height, WHITE);
    tft.drawRect(32, 32, width - 64, height - 64, WHITE);
    tft.setTextSize(2);
    tft.setTextColor(BLACK);
    tft.setCursor(40, 40);
    tft.print("ID=0x");
    tft.print(ID, HEX);
    if (ID == 0xD3D3) tft.print(" w/o");
    tft.setCursor(40, 70);
    tft.print(aspectname[aspect]);
    tft.setCursor(40, 100);
    tft.print(width);
    tft.print(" x ");
    tft.print(height);
    tft.setTextColor(WHITE);
    tft.setCursor(40, 130);
    tft.print(colorname[aspect]);
    tft.setCursor(40, 160);
    tft.setTextSize(1);
    tft.print("MCUFRIEND_KBV_H_ = ");
    tft.print(version);
    if (++aspect > 3) aspect = 0;
    delay(5000);
}

Library: MCUFRIEND_kbv
Example: diagnose_Touchpins
Sketch:

void showpins(int A, int D, int value, const char *msg)
{
    Serial.print(msg);
    Serial.print(" (A" + String(A - A0) + ", D" + String(D) + ") = ");
    Serial.println(value);
}
void setup()
{
    int i, j, value, Apins[2], Dpins[2], Values[2], found = 0;
    Serial.begin(9600);
    Serial.println("Making all control and bus pins INPUT_PULLUP");
    Serial.println("Typical 30k Analog pullup with corresponding pin");
    Serial.println("would read low when digital is written LOW");
    Serial.println("e.g. reads ~25 for 300R X direction");
    Serial.println("e.g. reads ~30 for 500R Y direction");
    Serial.println("");
    for (i = A0; i < A5; i++) pinMode(i, INPUT_PULLUP);
    for (i = 2; i < 10; i++) pinMode(i, INPUT_PULLUP);
    for (i = A0; i < A4; i++) {
        for (j = 5; j < 10; j++) {
            pinMode(j, OUTPUT);
            digitalWrite(j, LOW);
            value = analogRead(i);   // ignore first reading
            value = analogRead(i);
            if (value < 100) {
                showpins(i, j, value, "Testing :");
                if (found < 2) {
                    Apins[found] = i;
                    Dpins[found] = j;
                    Values[found] = value;
                    found++;
                }
            }
            pinMode(j, INPUT_PULLUP);
        }
    }
    if (found == 2) {
        Serial.println("Diagnosing as:-");
        for (i = 0; i < 2; i++) {
            showpins(Apins[i], Dpins[i], Values[i], (Values[i] < Values[!i]) ? "XM,XP: " : "YP,YM: ");
        }
    }
}

void loop()
{
    // put your main code here, to run repeatedly:

}

On my PC:

C:\Users\David Prentice\Documents\Arduino\libraries\Mcufriend_kbv\MCUFRIEND_kbv.cpp

Yours should be similar.

David.

I found the file on my computer, but when I tried to upload it, it had an error:

Arduino: 1.8.8 (Windows 7), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::invertDisplay(bool)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/5.4.0/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::MCUFRIEND_kbv(int, int, int, int, int)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::MCUFRIEND_kbv(int, int, int, int, int)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::reset()'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::WriteCmdData(unsigned int, unsigned int)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::pushCommand(unsigned int, unsigned char*, signed char)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::readReg(unsigned int, signed char)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::readReg32(unsigned int)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::readReg40(unsigned int)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::readID()'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::setAddrWindow(int, int, int, int)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::readGRAM(int, int, unsigned int*, int, int)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::drawPixel(int, int, unsigned int)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::fillRect(int, int, int, int, unsigned int)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::pushColors(unsigned int*, int, bool)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::pushColors(unsigned char*, int, bool)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::pushColors(unsigned char const*, int, bool, bool)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::vertScroll(int, int, int)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::setRotation(unsigned char)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

libraries\MCUFRIEND_kbv\MCUFRIEND_kbv.cpp.o (symbol from plugin): In function `MCUFRIEND_kbv::invertDisplay(bool)':

(.text+0x0): multiple definition of `MCUFRIEND_kbv::begin(unsigned int)'

sketch\sketch_dec27d.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here

C:\Users\Robert\AppData\Local\Temp\cc74Yj92.ltrans0.ltrans.o: In function `main':

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:43: undefined reference to `setup'

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:46: undefined reference to `loop'

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.
Invalid library found in C:\Program Files (x86)\Arduino\libraries\Adafruit-GFX-Library-master: no headers files (.h) found in C:\Program Files (x86)\Arduino\libraries\Adafruit-GFX-Library-master
Invalid library found in C:\Program Files (x86)\Arduino\libraries\Adafruit_TouchScreen-master: no headers files (.h) found in C:\Program Files (x86)\Arduino\libraries\Adafruit_TouchScreen-master
Invalid library found in C:\Program Files (x86)\Arduino\libraries\TFTLCD-Library-master: no headers files (.h) found in C:\Program Files (x86)\Arduino\libraries\TFTLCD-Library-master
Invalid library found in C:\Program Files (x86)\Arduino\libraries\Adafruit-GFX-Library-master: no headers files (.h) found in C:\Program Files (x86)\Arduino\libraries\Adafruit-GFX-Library-master
Invalid library found in C:\Program Files (x86)\Arduino\libraries\Adafruit_TouchScreen-master: no headers files (.h) found in C:\Program Files (x86)\Arduino\libraries\Adafruit_TouchScreen-master
Invalid library found in C:\Program Files (x86)\Arduino\libraries\TFTLCD-Library-master: no headers files (.h) found in C:\Program Files (x86)\Arduino\libraries\TFTLCD-Library-master

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

What does this mean, and how do I fix it?

Thanks

"User" libraries should be stored under C:\Users\David Prentice\Documents\Arduino\libraries
"System" libraries that come with the IDE installation should be stored under C:\Program Files (x86)\Arduino\libraries\

It looks as if you have been "installing by hand". God gave you the Library Manager.

I suggest that you leave the IDE. Then delete any "User" libraries that you have put under Program Files.
You will need to be an Administrator.

It is probably easier to remove the whole Arduino installation and start again.

Did you manage to find MCUFRIEND_kbv.cpp and edit it? e.g. with Notepad or Notepad++

David.

Yes, I have been doing some "installing by hand". How do you tell the difference between a user library and a system library? And yes, I did find MCUFRIEND_kbv.cpp, and changed the 10th line. I got the error I mentioned earlier when I uploaded the edited version. Thanks for all your help, I have to go. I'll be back when I get a chance.

Thanks again,
Bye

Looking at my Arduino-1.8.1 installation, all the "system" libraries have the same timestamp i.e. when I installed 1.8.1

If in doubt, ask. It should be fairly obvious which are the "foreign" culprits.

I am confused. You can edit the CPP file and save it back.
Then select one of the MCUFRIEND_kbv examples in the normal way.

Build and run the graphictest_kbv example.
After all, you managed to run the diagnose_TFT_support.ino example earlier.

You can get away with a minor edit of a library CPP file when the IDE is running.
If you interfere with directories you should restart the IDE.

David.

It works!! Thank you so much for your help! I ran the MCUFRIEND_kbv example, graphictest_kbv, and it worked after I edited and saved the cpp file!

Can I now run any library successfully, or will I have to edit each one?

Thanks again for your help.

Hi David,

No other codes or libraries that I've tried work other than those that include the MCUFRIEND_kbv library. Are there any other codes or libraries that might work?

Thanks

No, you don't have to do anything else. Your "edit" has enabled support for your UltraChip UC8320 controller. All MCUFRIEND_kbv programs should work.

Only if and when there is a new Release you will have to do the edit again.

No, I am not aware of any other library supporting UC8230.

Programs written for other Adafruit_GFX style libraries should work too.
You just change the include and constructor statements to MCUFRIEND_kbv.

David.