Hi, I am using a 2.8" TFT shield V3, I've been able to get it to operate quite well with an Arduino Mega, however, I have an issue with the LCD_Digital pins being on the 2 to 9 as I need these pins for the operation of other components. I want to change the definition of the pins in the library to digital pins 21 to 28, however, I have had trouble determining where they are or how to do that without destabilizing the library.
I have no idea what a 2.8" TFT shield V3 is. Please provide a link or photo (of pcb side)
God invented Shields for the Arduino. You plug the shield into the corresponding female header sockets.
If you want to run a TFT on a Mega, buy a Mcufriend mega2560 shield. It plugs into a Mega2560.
I can see no point in routeing LCD_D# pins to 21-28
There is a USE_MEGA_8BIT_PROTOSHIELD SPECIAL which maps LCD_D0..D7 to 22..29
But quite honestly, you can access pins 22-53 with a Uno Shield in place. You can also access A8-A15 and 14-21. Surely it is easier to connect external electronics to those pins.
mooseman32: I have an issue with the LCD_Digital pins being on the 2 to 9 as I need these pins for the operation of other components.
Then you seriously need to explain why you would want to do that.
Clearly, if you are using a shield, the pin allocation is already fixed.
Yeah, sorry new to the forum and all so I guess I was a bit vague. I have a link of this guy who has pictures of the same LCD screen. (not sure how to add photos to the forum)
I need to use the PWM of 13 to 2 for PWM control and for use with the SoftwareSerial library (it seems my serial pins are bit fucked). David, I think using the USE_MEGA_8BIT_PROTOSHIELD SPECIAL which maps LCD_D0..D7 to 22..29 I think should work. The main thing question is "do I just uncomment the definition in the special.h file so it looks like below?"
//#define USE_MEGA_8BIT_SHIELD // 4.7sec Mega2560 Shield
Because the #elif that seems to map LCD_D0..D7 to 22..29 seems to have two conditions.
elif defined(AVR_ATmega2560) && defined(USE_MEGA_8BIT_PROTOSHIELD)
Yes. You have uncommented the define correctly. The SPECIAL will work on both Mega2560 and Due.
So your home-made Adapter can be plugged into either board.
Ok, so I uncommented mcufriend_special lines that were suggested and included it in the graphictest_kbv example, however, the pins 2 to 9 are still set up as the LDC_digital pins. I’ve attached the files if you want to take a look, did I do something wrong or misunderstood something? I’ve got to admit I don’t understand a lot of the code.
MCUFRIEND_special.h (44.6 KB)
graphictest_kbv.ino (17.9 KB)
From the how_to file:
17. If you do not have a standard Uno Shield, you can add a SPECIAL to the mcufriend_special.h Edit mcufriend_shield.h: #define USE_SPECIAL Edit mcufriend_special.h: e.g. #define USE_MEGA_16BIT_SHIELD If your "special" is write-only, the library can not read the ID. It always returns 0xD3D3 18. Please run LCD_ID_readreg.ino to verify your non-standard wiring. Paste the defines to a Forum message.
You have omitted mcufriend_shield.h
You have edited mcufriend_special.h correctly i.e. for your Protoshield
You do not include mcufriend_special.h in any sketch. I doubt if it would find it. It might cause havoc.
Make the Protoshield. Edit the defines in LCD_ID_readreg.ino to verify your non-standard wiring. This should read registers 100% correctly. It has nothing to do with any library. It uses regular digitalWRite()
Thank you very much, David, I just tested on an Arduino ADK and it works great, it's even faster than with the original pins.