Random triggering of touchscreen for no reason...UPDATE


I have an Adafruit 2.4" TFT with resistive touchscreen using an Arduino Nano 33 BLE and I'm having problems. The touch screen keeps randomly triggering. I thought it might be the touch threshold, but that didn't help. Then I discovered that there is a strange pulsing on the resistive lines. This is what X- looks like:

I thought that maybe it was crosstalk, but it doesn't match any of the signals on any other pin. "X-" is the worst one, but it is present to some degree on all four pins. I tried turning off the BLE radio and that didn't seem to help either.

Have any of you run into this problem before?



Well, I disconnected the touchscreen pins (X+, X-, Y+, Y-) to see if the glitch was coming from the display or from the Arduino.

All the pins on the Arduino are dead, but the pins on the display are outputting a 15 kHz square wave (see photo). If I press on the screen, the wave blurs on the scope according to how hard I push.

It’s as if it’s an unfiltered PWM output. Is this normal, or do I have a faulty display? I don’t want to buy another one unless I have to. Are the analog pins of the Arduino supposed to handle the filtering? Can they accept a non-DC input like this?



as you have not posted a link to your display, we don't know if you have just the bare resistive touch panel, or a touch controller on the display board.

This post is to give you a faster chance to get a good response from an expert.


This is the display:


Adafruit provide documentation.

e.g. how to solder header pins, how to configure for SPI. how to connect to Arduino.

Explain what you have done to the hardware.
Run all the Adafruit library examples.
Quote which library example is giving a problem.

Install libraries via the IDE Library Manager.
This will report version numbers.

Or copy-paste the library and memory lines from a verbose compile.
This reports versions and library location on your PC.


But, before I do all that, I have a simple question:

Is it normal for the analog outputs of that display to put out a 15 kHz sqare wave?

It depends on how you measure.

15 kHz reminds me on old TVs with their line deflection frequency you could hear when you were young.

I think TFTs still use similar frequencies, and most likely you measure a capacitively coupled TFT signal with your high impedance scope.

Please provide the details you have been asked for. And maybe re-state you issue more clearly.

Added some links:

Adafruit 2.4" TFT LCD with Touchscreen Breakout w/MicroSD Socket - ILI9341

OK, I uploaded the sample program “touchscreendemo” from the example library. This reads from the touchscreen only with no output to the display. I made one modification–I changed the #define XP 9 line to pin 2 (D2), which is what I’m using. Otherwise I wire it just like the Adafruit example for SPI serial.

The Adafruit example says that any digital pin can be used for X+ or Y-.

When I run the program, I still get random nuisance triggering. Attached is a picture of what I get after waiting about three minutes without touching anything.


Well, I was able to write a work-around in my code (thanks to a suggestion by a poster in the Adafruit forum). This code will force the program to look for presses 100 ms apart, which is enough to catch a real press twice, but ignores the single, random pulses.

TSPoint p = ts.getPoint();
    if(p.z > ts.pressureThreshhold)                 //if screen pressed
      while(loopcount < 2){                         //wait for another touch sense (filter noise)
        loopcount ++;
        TSPoint p = ts.getPoint();
        if(p.z > ts.pressureThreshhold){         
          InterpretTouch(p, RADIO_uv);              //interpret screen touch position and react
          loopcount = 0;
    loopcount = 0;

This will get me by, but I still think I have a defective display.