Search Forum.. 

2.6 "320x240 LCD touchscreen returning wrong pixel coordinates

I've bought a 2.6 "320x240 LCD  touchscreen that works OK as display, but when I use the commands RPNXYI, W or C, the touch screen returns numbers that do not correspond at all with the pixels I touched. It's always the same four numbers, regardless the location on the screen that I touch.

How can I solve this problem?


Thanks in advance,


Jan Jor


Use command "TUCHC" to re-calibrate the touch panel. 


That does not help. That calibraton part of the program works OK, but if not touched, the digole returns 4F FF FF FF and after touching the screen it returns 9E 3C 78 F0, REGARDLESS where I touch the screen.

Also if I want to read RDTMP of RDBAT, it always gives the same value, even if I do not apply any voltage at all to the relevant pin. It's very annoying, and expensive because I bought two of these LCD's.

I use I2C for the communication. The displays both work OK as display (I already had an old 220x176 display that also works fine) but the touch screen is lousy. How did they do that in the Youtyube video ??

The forum of Picaxe users has already spend several mails on my question to them (I use Picaxes as microchips) but they cannot solve the problem either because there is insufficient detailed info in the 2017 Digole manual about the touchscreen commands under I2C.

Can I return the displays and get my money back?



Jan Jor


Hi Jan,

"...Don't give in without a fight..." -  Pink Floyd, The Wall (Hey You)

I use 2.4" with touchscreen and most of the problems I had to solve by myself. It's a pity that a product with perspectives has such a miserable manual where many things are

simply not described well. It could save us hell of time for stupid investigation. I don't understand such a policy..

Regarding your problem, I also have tried 2.6 version and luckily I have achieved a result with touch screen BUT I try as often as possible to avoid I2C communication. I use UART.

I2C I use only in cases when applied chip has no other port. But even if mu MCU has no free SCI ports then I emulate it by software. So at first try this communication.

If you have then still problems I will help you. One thing is important that each new module (at the firstr start) needs to be calibrated.

Kind regards



Hi Jacek,

Thanks for your kind E-mail. I fully agree with your quote not to give up easily. But in this case, I didn't know what I could do any further. I use Picaxe microchips ( and I use an old Digole 220x176 pixel 2.2" (not a touch screen) with I2C without problems. Writing to the new 2.6 " also works well, but as said, I receive always the same value when the 2".6"sends info back. Also the battery check RDBAT and RDTMP do not work properly.

Someone of the Picaxe forum also proposed to use UART, as you did, so I tried that with the old 2.2". This display works OK with I2C and I'm familiar with that display so in order to avoid mistakes I decided to use this one for UART testing. The start-up screen of that display indicates that it works at 4800 Baud, so I connected the +, the- with the MPU and the "data" port of the display to a TX-port of the MPU. And of course I disconnected the I2C connection on the back of the display print. According to the Digole manual this simple 3-tread connection should do the job. I used the command serout 7,N4800,("CL") or serout 7,T4800,("CL"). (7 is the port I use for TX) This is the easiest and most simple setup I can come up with. It should clear the screen. Normally, one of these two commands works well with other serial displays. However, my 2.2"does not respond to this command. (With I2C the 2.2" works OK).

This eplains that I gave up my hope to get a decent signal back from my (two) new 2.6" touch screens. As said, they work OK with I2C, but only one way: as a display. Sending back info from the screen fails (I get something back but that's alsways the same info, so something happens but no clue what is going wrong here). Please note: I've calibrated the screen several times: the TUCHC command is recognised under I2C and the screen shows four crosses and then says: "OK ". So that does not seem the problem.

I'll try the UART way of transmission tonight with a 4-thread connection with my 2.6"touchscreen, as you proposed, but given the above, without much hope.

If that experiment also fails, I'm afraid that I have to ask you for further help, if possible.

I'll let you know if I succeed or not using UART with the 2.6"

Thanks again for your E-mail.




Hi Jacek:


Success !

Indeed I tried your UART procedure with the 2.6" (without any hope) but after an hour of trying and trying, removing the obvoious mistakes ;-)  and reprogramming and reprogramming, I succeeded.

Thanks again for your help in this matter. Otherwise, I would have given up!

I'm very happy with the result and I'll put your quote "don't give in" above my computer !

Thanks again,




Dear Ronald,

my experience says "first be 150% sure that your communication port works properly". Many times it has occured that the problem was

on my side. Anyway I propose to go through the steps as below :

1. Buy or build an USB/UART translator. I have applied my own design as I use it for other purposes - based on CP2102 from Silicon Labs

2. Conect Tx, Rx, GND and Vcc to Digole module as indicated in manual (of corse desolder all these connections on module PCB for I2C)

3. Download from the net very helpful program : CoolTerm
This is very good serial interface where you can easily send any number of bytes (in ASCII or hex) and observe what you receive.

I was learning on it how to use  FLASH on my Digole module by erasing, writing and reading. Also with many other commands.

Another very useful program is Real Terminal - I use it for other purposes as well.

4. After running it make all necessary settings like baud, 8 bits, no parity 1 stop etc.

5. Send first some simple commands to check if the communication works.

6. Try then to send command related to touch screen operation. Touch the screen and look for the answer.

First you have to be sure that it works this way. Then if still something goes wrong you must examine your MCU or its port or software....

I have spent some weeks on this game, the module has some defects (eg. I cannot send one long string of text, it hangs up, so I split it into two shorter..)

but generally it works (sometimes with surprises - the big yellow square on the screen when you erase a part of the FLASH).

OK, try the above and let me know good news :-)  !!

kind regards





it looks that we both have been writing at the same time !

Anyway I always advise to have another tool like this software I have mentioned to check where exactly the problem is located.

It is just always a pleasure to help !

Have success with your design.

Greetings, Jacek

PS. I travel from time to time to Holland as I have a big friend of mine (Dutch guy) in Almere.


If using I2C to receive touch panel data from Display, remember to avoid this problem:

Most of software limited the waiting time on receiving data from I2C, but the display only sending data out when touch panel pressed, so software designer need to know if the reading was returned due to time out or not.

Use like Wire.available() (in Arduino) to check if the reading data available before read them out.

Copyright Digole Digital Solutions, 2008-2022. All rights reserved.
Powered by Digole