Touch Paint! Couldn't start touchscreen controller

problem with touch screen on Adafruit 2.8" TFT screen resistive touch screen connected to Uno. I have be following the tutorials on learn.adafruit.com, it all works until i try the touch screen. Its wired as the tutorial and all libraries are loaded, its using spi mode.

Please can any help?

Please post a link to the actual screen and the actual tutorial.

Adafruit make a lot of screens and publish a lot of "tutorials"

#include <TouchScreen.h>

/***************************************************
This is our touchscreen painting example for the Adafruit ILI9341 Shield
----> 2.8 TFT Touch Shield for Arduino with Resistive Touch Screen : ID 1651 : $34.95 : Adafruit Industries, Unique & fun DIY electronics and kits

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
****************************************************/

#include <Adafruit_GFX.h> // Core graphics library
#include <SPI.h>
#include <Wire.h> // this is needed even tho we aren't using it
#include <Adafruit_ILI9341.h>
#include <Adafruit_STMPE610.h>

// This is calibration data for the raw touch data to the screen coordinates
#define TS_MINX 150
#define TS_MINY 130
#define TS_MAXX 3800
#define TS_MAXY 4000

// The STMPE610 uses hardware SPI on the shield, and #8
#define STMPE_CS 8
Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);

// The display also uses hardware SPI, plus #9 & #10
#define TFT_CS 10
#define TFT_DC 9
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

// Size of the color selection boxes and the paintbrush size
#define BOXSIZE 40
#define PENRADIUS 3
int oldcolor, currentcolor;

void setup(void) {
// while (!Serial); // used for leonardo debugging

Serial.begin(9600);
Serial.println(F("Touch Paint!"));

tft.begin();

if (!ts.begin()) {
Serial.println("Couldn't start touchscreen controller");
while (1);
}
Serial.println("Touchscreen started");

tft.fillScreen(ILI9341_BLACK);

// make the color selection boxes
tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED);
tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW);
tft.fillRect(BOXSIZE2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN);
tft.fillRect(BOXSIZE
3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN);
tft.fillRect(BOXSIZE4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE);
tft.fillRect(BOXSIZE
5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA);

// select the current color 'red'
tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
currentcolor = ILI9341_RED;
}

void loop()
{
// See if there's any touch data for us
if (ts.bufferEmpty()) {
return;
}
/*
// You can also wait for a touch
if (! ts.touched()) {
return;
}
*/

// Retrieve a point
TS_Point p = ts.getPoint();

/*
Serial.print("X = "); Serial.print(p.x);
Serial.print("\tY = "); Serial.print(p.y);
Serial.print("\tPressure = "); Serial.println(p.z);
*/

// Scale from ~0->4000 to tft.width using the calibration #'s
p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());

/*
Serial.print("("); Serial.print(p.x);
Serial.print(", "); Serial.print(p.y);
Serial.println(")");
*/

if (p.y < BOXSIZE) {
oldcolor = currentcolor;

 if (p.x < BOXSIZE) { 
   currentcolor = ILI9341_RED; 
   tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
 } else if (p.x < BOXSIZE*2) {
   currentcolor = ILI9341_YELLOW;
   tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
 } else if (p.x < BOXSIZE*3) {
   currentcolor = ILI9341_GREEN;
   tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
 } else if (p.x < BOXSIZE*4) {
   currentcolor = ILI9341_CYAN;
   tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
 } else if (p.x < BOXSIZE*5) {
   currentcolor = ILI9341_BLUE;
   tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
 } else if (p.x < BOXSIZE*6) {
   currentcolor = ILI9341_MAGENTA;
   tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
 }

 if (oldcolor != currentcolor) {
    if (oldcolor == ILI9341_RED) 
      tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED);
    if (oldcolor == ILI9341_YELLOW) 
      tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW);
    if (oldcolor == ILI9341_GREEN) 
      tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN);
    if (oldcolor == ILI9341_CYAN) 
      tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN);
    if (oldcolor == ILI9341_BLUE) 
      tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE);
    if (oldcolor == ILI9341_MAGENTA) 
      tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA);
 }

}
if (((p.y-PENRADIUS) > BOXSIZE) && ((p.y+PENRADIUS) < tft.height())) {
tft.fillCircle(p.x, p.y, PENRADIUS, currentcolor);
}
}

I have started testing other examples and they are working so there must something wrong with the program, i am a beginner!

Thanks for the link to the screen. That screen contains a bare resistive Touch panel. There is no Touch controller.
You use "Adafruit_Touchscreen.h" library with a bare resistive panel.

Your "program" expects a STMPE610 Touch controller chip. e.g. "Adafruit_STMPE610.h"
Other makes of screen use a XPT2046 Touch controller chip. e.g. "XPT2046_Touchscreen.h"

This is why it is wise to post links to the item(s) that you have bought.
And links to the actual tutorial page (and sketch) that you are using.

I am much happier with replying to a "known" example than to a "pasted" sketch. I can run the "virgin" library example with confidence that the OP has not altered anything.

Of course you often make minor edits to configure an example e,g. constructor statements.
In which case you quote the example "name" and just paste the "altered lines"

David.

Please read the instructions and edit to correct your post #3 accordingly.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.