diff --git a/examples/graphicstest/graphicstest.pde b/examples/graphicstest/graphicstest.pde index bf43e76..a3f660c 100644 --- a/examples/graphicstest/graphicstest.pde +++ b/examples/graphicstest/graphicstest.pde @@ -45,12 +45,12 @@ Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); void setup(void) { Serial.begin(9600); - Serial.println("TFT LCD test"); + progmemPrintln(PSTR("TFT LCD test")); #ifdef USE_ADAFRUIT_SHIELD_PINOUT - Serial.println("Using Adafruit 2.8\" TFT Arduino Shield Pinout"); + progmemPrintln(PSTR("Using Adafruit 2.8\" TFT Arduino Shield Pinout")); #else - Serial.println("Using Adafruit 2.8\" TFT Breakout Board Pinout"); + progmemPrintln(PSTR("Using Adafruit 2.8\" TFT Breakout Board Pinout")); #endif tft.reset(); @@ -58,75 +58,75 @@ void setup(void) { uint16_t identifier = tft.readID(); if(identifier == 0x9325) { - Serial.println(PSTR("Found ILI9325 LCD driver")); + progmemPrintln(PSTR("Found ILI9325 LCD driver")); } else if(identifier == 0x9328) { - Serial.println(PSTR("Found ILI9328 LCD driver")); + progmemPrintln(PSTR("Found ILI9328 LCD driver")); } else if(identifier == 0x7575) { - Serial.println(PSTR("Found HX8347G LCD driver")); + progmemPrintln(PSTR("Found HX8347G LCD driver")); } else { - Serial.print(PSTR("Unknown LCD driver chip: ")); + progmemPrint(PSTR("Unknown LCD driver chip: ")); Serial.println(identifier, HEX); - Serial.println(PSTR("If using the Adafruit 2.8\" TFT Arduino shield, the line:")); - Serial.println(PSTR(" #define USE_ADAFRUIT_SHIELD_PINOUT")); - Serial.println(PSTR("should appear in the library header (Adafruit_TFT.h).")); - Serial.println(PSTR("If using the breakout board, it should NOT be #defined!")); - Serial.println(PSTR("Also if using the breakout, double-check that all wiring")); - Serial.println(PSTR("matches the tutorial.")); + progmemPrintln(PSTR("If using the Adafruit 2.8\" TFT Arduino shield, the line:")); + progmemPrintln(PSTR(" #define USE_ADAFRUIT_SHIELD_PINOUT")); + progmemPrintln(PSTR("should appear in the library header (Adafruit_TFT.h).")); + progmemPrintln(PSTR("If using the breakout board, it should NOT be #defined!")); + progmemPrintln(PSTR("Also if using the breakout, double-check that all wiring")); + progmemPrintln(PSTR("matches the tutorial.")); return; } tft.begin(identifier); - Serial.println("Benchmark Time (microseconds)"); + progmemPrintln(PSTR("Benchmark Time (microseconds)")); - Serial.print("Screen fill "); + progmemPrint(PSTR("Screen fill ")); Serial.println(testFillScreen()); delay(500); - Serial.print("Text "); + progmemPrint(PSTR("Text ")); Serial.println(testText()); delay(3000); - Serial.print("Lines "); + progmemPrint(PSTR("Lines ")); Serial.println(testLines(CYAN)); delay(500); - Serial.print("Horiz/Vert Lines "); + progmemPrint(PSTR("Horiz/Vert Lines ")); Serial.println(testFastLines(RED, BLUE)); delay(500); - Serial.print("Rectangles (outline) "); + progmemPrint(PSTR("Rectangles (outline) ")); Serial.println(testRects(GREEN)); delay(500); - Serial.print("Rectangles (filled) "); + progmemPrint(PSTR("Rectangles (filled) ")); Serial.println(testFilledRects(YELLOW, MAGENTA)); delay(500); - Serial.print("Circles (filled) "); + progmemPrint(PSTR("Circles (filled) ")); Serial.println(testFilledCircles(10, MAGENTA)); - Serial.print("Circles (outline) "); + progmemPrint(PSTR("Circles (outline) ")); Serial.println(testCircles(10, WHITE)); delay(500); - Serial.print("Triangles (outline) "); + progmemPrint(PSTR("Triangles (outline) ")); Serial.println(testTriangles()); delay(500); - Serial.print("Triangles (filled) "); + progmemPrint(PSTR("Triangles (filled) ")); Serial.println(testFilledTriangles()); delay(500); - Serial.print("Rounded rects (outline) "); + progmemPrint(PSTR("Rounded rects (outline) ")); Serial.println(testRoundRects()); delay(500); - Serial.print("Rounded rects (filled) "); + progmemPrint(PSTR("Rounded rects (filled) ")); Serial.println(testFilledRoundRects()); delay(500); - Serial.println("Done!"); + progmemPrintln(PSTR("Done!")); } void loop(void) { @@ -377,3 +377,17 @@ unsigned long testFilledRoundRects() { return micros() - start; } + +// Copy string from flash to serial port +// Source string MUST be inside a PSTR() declaration! +void progmemPrint(const char *str) { + char c; + while(c = pgm_read_byte(str++)) Serial.print(c); +} + +// Same as above, with trailing newline +void progmemPrintln(const char *str) { + progmemPrint(str); + Serial.println(); +} + diff --git a/examples/rotationtest/rotationtest.pde b/examples/rotationtest/rotationtest.pde index e62484a..3d067de 100644 --- a/examples/rotationtest/rotationtest.pde +++ b/examples/rotationtest/rotationtest.pde @@ -45,12 +45,12 @@ Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); void setup(void) { Serial.begin(9600); - Serial.println("TFT LCD test"); + progmemPrintln(PSTR("TFT LCD test")); #ifdef USE_ADAFRUIT_SHIELD_PINOUT - Serial.println("Using Adafruit 2.8\" TFT Arduino Shield Pinout"); + progmemPrintln(PSTR("Using Adafruit 2.8\" TFT Arduino Shield Pinout")); #else - Serial.println("Using Adafruit 2.8\" TFT Breakout Board Pinout"); + progmemPrintln(PSTR("Using Adafruit 2.8\" TFT Breakout Board Pinout")); #endif tft.reset(); @@ -58,20 +58,20 @@ void setup(void) { uint16_t identifier = tft.readID(); if(identifier == 0x9325) { - Serial.println("Found ILI9325 LCD driver"); + progmemPrintln(PSTR("Found ILI9325 LCD driver")); } else if(identifier == 0x9328) { - Serial.println("Found ILI9328 LCD driver"); + progmemPrintln(PSTR("Found ILI9328 LCD driver")); } else if(identifier == 0x7575) { - Serial.println("Found HX8347G LCD driver"); + progmemPrintln(PSTR("Found HX8347G LCD driver")); } else { - Serial.print("Unknown LCD driver chip: "); + progmemPrint(PSTR("Unknown LCD driver chip: ")); Serial.println(identifier, HEX); - Serial.println("If using the Adafruit 2.8\" TFT Arduino shield, the line:"); - Serial.println(" #define USE_ADAFRUIT_SHIELD_PINOUT"); - Serial.println("should appear in the library header (Adafruit_TFT.h)."); - Serial.println("If using the breakout board, it should NOT be #defined!"); - Serial.println("Also if using the breakout, double-check that all wiring"); - Serial.println("matches the tutorial."); + progmemPrintln(PSTR("If using the Adafruit 2.8\" TFT Arduino shield, the line:")); + progmemPrintln(PSTR(" #define USE_ADAFRUIT_SHIELD_PINOUT")); + progmemPrintln(PSTR("should appear in the library header (Adafruit_TFT.h).")); + progmemPrintln(PSTR("If using the breakout board, it should NOT be #defined!")); + progmemPrintln(PSTR("Also if using the breakout, double-check that all wiring")); + progmemPrintln(PSTR("matches the tutorial.")); return; } @@ -79,8 +79,8 @@ void setup(void) { tft.fillScreen(BLACK); - Serial.println("This is a test of the rotation capabilities of the TFT library!"); - Serial.println("Press (or type a character) to advance"); + progmemPrintln(PSTR("This is a test of the rotation capabilities of the TFT library!")); + progmemPrintln(PSTR("Press (or type a character) to advance")); } void loop(void) { @@ -216,3 +216,17 @@ void rotatePixel(void) { tft.setRotation(tft.getRotation()+1); } } + +// Copy string from flash to serial port +// Source string MUST be inside a PSTR() declaration! +void progmemPrint(const char *str) { + char c; + while(c = pgm_read_byte(str++)) Serial.print(c); +} + +// Same as above, with trailing newline +void progmemPrintln(const char *str) { + progmemPrint(str); + Serial.println(); +} + diff --git a/examples/tftbmp/tftbmp.pde b/examples/tftbmp/tftbmp.pde index 6eb1c4f..8e3ea02 100644 --- a/examples/tftbmp/tftbmp.pde +++ b/examples/tftbmp/tftbmp.pde @@ -48,31 +48,31 @@ void setup() uint16_t identifier = tft.readID(); if(identifier == 0x9325) { - Serial.println(PSTR("Found ILI9325 LCD driver")); + progmemPrintln(PSTR("Found ILI9325 LCD driver")); } else if(identifier == 0x9328) { - Serial.println(PSTR("Found ILI9328 LCD driver")); + progmemPrintln(PSTR("Found ILI9328 LCD driver")); } else if(identifier == 0x7575) { - Serial.println(PSTR("Found HX8347G LCD driver")); + progmemPrintln(PSTR("Found HX8347G LCD driver")); } else { - Serial.print(PSTR("Unknown LCD driver chip: ")); + progmemPrint(PSTR("Unknown LCD driver chip: ")); Serial.println(identifier, HEX); - Serial.println(PSTR("If using the Adafruit 2.8\" TFT Arduino shield, the line:")); - Serial.println(PSTR(" #define USE_ADAFRUIT_SHIELD_PINOUT")); - Serial.println(PSTR("should appear in the library header (Adafruit_TFT.h).")); - Serial.println(PSTR("If using the breakout board, it should NOT be #defined!")); - Serial.println(PSTR("Also if using the breakout, double-check that all wiring")); - Serial.println(PSTR("matches the tutorial.")); + progmemPrintln(PSTR("If using the Adafruit 2.8\" TFT Arduino shield, the line:")); + progmemPrintln(PSTR(" #define USE_ADAFRUIT_SHIELD_PINOUT")); + progmemPrintln(PSTR("should appear in the library header (Adafruit_TFT.h).")); + progmemPrintln(PSTR("If using the breakout board, it should NOT be #defined!")); + progmemPrintln(PSTR("Also if using the breakout, double-check that all wiring")); + progmemPrintln(PSTR("matches the tutorial.")); return; } tft.begin(identifier); - Serial.print("Initializing SD card..."); + progmemPrint(PSTR("Initializing SD card...")); if (!SD.begin(SD_CS)) { - Serial.println("failed!"); + progmemPrintln(PSTR("failed!")); return; } - Serial.println("OK!"); + progmemPrintln(PSTR("OK!")); bmpDraw("woof.bmp", 0, 0); delay(1000); @@ -121,32 +121,32 @@ void bmpDraw(char *filename, int x, int y) { if((x >= tft.width()) || (y >= tft.height())) return; Serial.println(); - Serial.print("Loading image '"); + progmemPrint(PSTR("Loading image '")); Serial.print(filename); Serial.println('\''); // Open requested file on SD card if ((bmpFile = SD.open(filename)) == NULL) { - Serial.print("File not found"); + progmemPrintln(PSTR("File not found")); return; } // Parse BMP header if(read16(bmpFile) == 0x4D42) { // BMP signature - Serial.print("File size: "); Serial.println(read32(bmpFile)); + progmemPrint(PSTR("File size: ")); Serial.println(read32(bmpFile)); (void)read32(bmpFile); // Read & ignore creator bytes bmpImageoffset = read32(bmpFile); // Start of image data - Serial.print("Image Offset: "); Serial.println(bmpImageoffset, DEC); + progmemPrint(PSTR("Image Offset: ")); Serial.println(bmpImageoffset, DEC); // Read DIB header - Serial.print("Header size: "); Serial.println(read32(bmpFile)); + progmemPrint(PSTR("Header size: ")); Serial.println(read32(bmpFile)); bmpWidth = read32(bmpFile); bmpHeight = read32(bmpFile); if(read16(bmpFile) == 1) { // # planes -- must be '1' bmpDepth = read16(bmpFile); // bits per pixel - Serial.print("Bit Depth: "); Serial.println(bmpDepth); + progmemPrint(PSTR("Bit Depth: ")); Serial.println(bmpDepth); if((bmpDepth == 24) && (read32(bmpFile) == 0)) { // 0 = uncompressed goodBmp = true; // Supported BMP format -- proceed! - Serial.print("Image size: "); + progmemPrint(PSTR("Image size: ")); Serial.print(bmpWidth); Serial.print('x'); Serial.println(bmpHeight); @@ -210,7 +210,7 @@ void bmpDraw(char *filename, int x, int y) { if(lcdidx > 0) { tft.pushColors(lcdbuffer, lcdidx, first); } - Serial.print("Loaded in "); + progmemPrint(PSTR("Loaded in ")); Serial.print(millis() - startTime); Serial.println(" ms"); } // end goodBmp @@ -218,7 +218,7 @@ void bmpDraw(char *filename, int x, int y) { } bmpFile.close(); - if(!goodBmp) Serial.println("BMP format not recognized."); + if(!goodBmp) progmemPrintln(PSTR("BMP format not recognized.")); } // These read 16- and 32-bit types from the SD card file. @@ -241,3 +241,16 @@ uint32_t read32(File f) { return result; } +// Copy string from flash to serial port +// Source string MUST be inside a PSTR() declaration! +void progmemPrint(const char *str) { + char c; + while(c = pgm_read_byte(str++)) Serial.print(c); +} + +// Same as above, with trailing newline +void progmemPrintln(const char *str) { + progmemPrint(str); + Serial.println(); +} + diff --git a/examples/tftbmp_shield/tftbmp_shield.pde b/examples/tftbmp_shield/tftbmp_shield.pde index 9ff201c..72815ad 100644 --- a/examples/tftbmp_shield/tftbmp_shield.pde +++ b/examples/tftbmp_shield/tftbmp_shield.pde @@ -24,31 +24,31 @@ void setup() uint16_t identifier = tft.readID(); if(identifier == 0x9325) { - Serial.println(PSTR("Found ILI9325 LCD driver")); + progmemPrintln(PSTR("Found ILI9325 LCD driver")); } else if(identifier == 0x9328) { - Serial.println(PSTR("Found ILI9328 LCD driver")); + progmemPrintln(PSTR("Found ILI9328 LCD driver")); } else if(identifier == 0x7575) { - Serial.println(PSTR("Found HX8347G LCD driver")); + progmemPrintln(PSTR("Found HX8347G LCD driver")); } else { - Serial.print(PSTR("Unknown LCD driver chip: ")); + progmemPrint(PSTR("Unknown LCD driver chip: ")); Serial.println(identifier, HEX); - Serial.println(PSTR("If using the Adafruit 2.8\" TFT Arduino shield, the line:")); - Serial.println(PSTR(" #define USE_ADAFRUIT_SHIELD_PINOUT")); - Serial.println(PSTR("should appear in the library header (Adafruit_TFT.h).")); - Serial.println(PSTR("If using the breakout board, it should NOT be #defined!")); - Serial.println(PSTR("Also if using the breakout, double-check that all wiring")); - Serial.println(PSTR("matches the tutorial.")); + progmemPrintln(PSTR("If using the Adafruit 2.8\" TFT Arduino shield, the line:")); + progmemPrintln(PSTR(" #define USE_ADAFRUIT_SHIELD_PINOUT")); + progmemPrintln(PSTR("should appear in the library header (Adafruit_TFT.h).")); + progmemPrintln(PSTR("If using the breakout board, it should NOT be #defined!")); + progmemPrintln(PSTR("Also if using the breakout, double-check that all wiring")); + progmemPrintln(PSTR("matches the tutorial.")); return; } tft.begin(identifier); - Serial.print("Initializing SD card..."); + progmemPrint(PSTR("Initializing SD card...")); if (!SD.begin(SD_CS)) { - Serial.println("failed!"); + progmemPrintln(PSTR("failed!")); return; } - Serial.println("OK!"); + progmemPrintln(PSTR("OK!")); spi_save = SPCR; bmpDraw("woof.bmp", 0, 0); @@ -109,21 +109,21 @@ void bmpDraw(char *filename, int x, int y) { // Parse BMP header if(read16(bmpFile) == 0x4D42) { // BMP signature - Serial.print("File size: "); Serial.println(read32(bmpFile)); + progmemPrint(PSTR("File size: ")); Serial.println(read32(bmpFile)); (void)read32(bmpFile); // Read & ignore creator bytes bmpImageoffset = read32(bmpFile); // Start of image data - Serial.print("Image Offset: "); Serial.println(bmpImageoffset, DEC); + progmemPrint(PSTR("Image Offset: ")); Serial.println(bmpImageoffset, DEC); // Read DIB header - Serial.print("Header size: "); Serial.println(read32(bmpFile)); + progmemPrint(PSTR("Header size: ")); Serial.println(read32(bmpFile)); bmpWidth = read32(bmpFile); bmpHeight = read32(bmpFile); if(read16(bmpFile) == 1) { // # planes -- must be '1' bmpDepth = read16(bmpFile); // bits per pixel - Serial.print("Bit Depth: "); Serial.println(bmpDepth); + progmemPrint(PSTR("Bit Depth: ")); Serial.println(bmpDepth); if((bmpDepth == 24) && (read32(bmpFile) == 0)) { // 0 = uncompressed goodBmp = true; // Supported BMP format -- proceed! - Serial.print("Image size: "); + progmemPrint(PSTR("Image size: ")); Serial.print(bmpWidth); Serial.print('x'); Serial.println(bmpHeight); @@ -192,7 +192,7 @@ void bmpDraw(char *filename, int x, int y) { SPCR = 0; tft.pushColors(lcdbuffer, lcdidx, first); } - Serial.print("Loaded in "); + progmemPrint(PSTR("Loaded in ")); Serial.print(millis() - startTime); Serial.println(" ms"); } // end goodBmp @@ -223,3 +223,16 @@ uint32_t read32(File f) { return result; } +// Copy string from flash to serial port +// Source string MUST be inside a PSTR() declaration! +void progmemPrint(const char *str) { + char c; + while(c = pgm_read_byte(str++)) Serial.print(c); +} + +// Same as above, with trailing newline +void progmemPrintln(const char *str) { + progmemPrint(str); + Serial.println(); +} + diff --git a/examples/tftpaint/tftpaint.pde b/examples/tftpaint/tftpaint.pde index 1a80de3..0ec6a53 100644 --- a/examples/tftpaint/tftpaint.pde +++ b/examples/tftpaint/tftpaint.pde @@ -60,20 +60,20 @@ int oldcolor, currentcolor; void setup(void) { Serial.begin(9600); - Serial.println("Paint!"); + progmemPrintln(PSTR("Paint!")); tft.reset(); uint16_t identifier = tft.readID(); if(identifier == 0x9325) { - Serial.println("Found ILI9325 LCD driver"); + progmemPrintln(PSTR("Found ILI9325 LCD driver")); } else if(identifier == 0x9328) { - Serial.println("Found ILI9328 LCD driver"); + progmemPrintln(PSTR("Found ILI9328 LCD driver")); } else if(identifier == 0x7575) { - Serial.println("Found HX8347G LCD driver"); + progmemPrintln(PSTR("Found HX8347G LCD driver")); } else { - Serial.print("Unknown LCD driver chip: "); + progmemPrint(PSTR("Unknown LCD driver chip: ")); Serial.println(identifier, HEX); return; } @@ -171,3 +171,17 @@ void loop() } } } + +// Copy string from flash to serial port +// Source string MUST be inside a PSTR() declaration! +void progmemPrint(const char *str) { + char c; + while(c = pgm_read_byte(str++)) Serial.print(c); +} + +// Same as above, with trailing newline +void progmemPrintln(const char *str) { + progmemPrint(str); + Serial.println(); +} + diff --git a/examples/tftpaint_shield/tftpaint_shield.pde b/examples/tftpaint_shield/tftpaint_shield.pde index 74f482c..5287ce9 100644 --- a/examples/tftpaint_shield/tftpaint_shield.pde +++ b/examples/tftpaint_shield/tftpaint_shield.pde @@ -49,20 +49,20 @@ int oldcolor, currentcolor; void setup(void) { Serial.begin(9600); - Serial.println("Paint!"); + progmemPrintln(PSTR("Paint!")); tft.reset(); uint16_t identifier = tft.readID(); if(identifier == 0x9325) { - Serial.println("Found ILI9325 LCD driver"); + progmemPrintln(PSTR("Found ILI9325 LCD driver")); } else if(identifier == 0x9328) { - Serial.println("Found ILI9328 LCD driver"); + progmemPrintln(PSTR("Found ILI9328 LCD driver")); } else if(identifier == 0x7575) { - Serial.println("Found HX8347G LCD driver"); + progmemPrintln(PSTR("Found HX8347G LCD driver")); } else { - Serial.print("Unknown LCD driver chip: "); + progmemPrint(PSTR("Unknown LCD driver chip: ")); Serial.println(identifier, HEX); return; } @@ -160,3 +160,17 @@ void loop() } } } + +// Copy string from flash to serial port +// Source string MUST be inside a PSTR() declaration! +void progmemPrint(const char *str) { + char c; + while(c = pgm_read_byte(str++)) Serial.print(c); +} + +// Same as above, with trailing newline +void progmemPrintln(const char *str) { + progmemPrint(str); + Serial.println(); +} + diff --git a/examples/tftpaintshield/tftpaintshield.pde b/examples/tftpaintshield/tftpaintshield.pde deleted file mode 100644 index 143cbf4..0000000 --- a/examples/tftpaintshield/tftpaintshield.pde +++ /dev/null @@ -1,164 +0,0 @@ -#include // Core graphics library -#include // Hardware-specific library -#include - -#if not defined USE_ADAFRUIT_SHIELD_PINOUT - #error "For use with the shield, make sure to #define USE_ADAFRUIT_SHIELD_PINOUT in the TFTLCD.h library file" -#endif - -// These are the pins for the shield! -#define YP A1 // must be an analog pin, use "An" notation! -#define XM A2 // must be an analog pin, use "An" notation! -#define YM 7 // can be a digital pin -#define XP 6 // can be a digital pin - -#define TS_MINX 150 -#define TS_MINY 120 -#define TS_MAXX 920 -#define TS_MAXY 940 - -// For better pressure precision, we need to know the resistance -// between X+ and X- Use any multimeter to read it -// For the one we're using, its 300 ohms across the X plate -TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); - -#define LCD_CS A3 -#define LCD_CD A2 -#define LCD_WR A1 -#define LCD_RD A0 - -// Color definitions -#define BLACK 0x0000 -#define BLUE 0x001F -#define RED 0xF800 -#define GREEN 0x07E0 -#define CYAN 0x07FF -#define MAGENTA 0xF81F -#define YELLOW 0xFFE0 -#define WHITE 0xFFFF - - -Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, 0); - -#define BOXSIZE 40 -#define PENRADIUS 4 -int oldcolor, currentcolor; - -void setup(void) { - Serial.begin(9600); - Serial.println("Paint!"); - - tft.reset(); - - uint16_t identifier = tft.readRegister(0x0); - if (identifier == 0x9325) { - Serial.println("Found ILI9325"); - } else if (identifier == 0x9328) { - Serial.println("Found ILI9328"); - } else if (identifier == 0x7575) { - Serial.println("Found HX8347G"); - } else { - Serial.print("Unknown driver chip "); - Serial.println(identifier, HEX); - while (1); - } - - tft.begin(identifier); - tft.fillScreen(BLACK); - - tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED); - tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW); - tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN); - tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN); - tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE); - tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA); - // tft.fillRect(BOXSIZE*6, 0, BOXSIZE, BOXSIZE, WHITE); - - tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE); - currentcolor = RED; - - pinMode(13, OUTPUT); -} - -#define MINPRESSURE 10 -#define MAXPRESSURE 1000 - -void loop() -{ - digitalWrite(13, HIGH); - Point p = ts.getPoint(); - digitalWrite(13, LOW); - - // if you're sharing pins, you'll need to fix the directions of the touchscreen pins! - //pinMode(XP, OUTPUT); - pinMode(XM, OUTPUT); - pinMode(YP, OUTPUT); - //pinMode(YM, OUTPUT); - - // we have some minimum pressure we consider 'valid' - // pressure of 0 means no pressing! - - if (p.z > MINPRESSURE && p.z < MAXPRESSURE) { - /* - Serial.print("X = "); Serial.print(p.x); - Serial.print("\tY = "); Serial.print(p.y); - Serial.print("\tPressure = "); Serial.println(p.z); - */ - - if (p.y < (TS_MINY-5)) { - Serial.println("erase"); - // press the bottom of the screen to erase - tft.fillRect(0, BOXSIZE, tft.width(), tft.height()-BOXSIZE, BLACK); - - } - // turn from 0->1023 to tft.width - p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0); - p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0); - /* - 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 = RED; - tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE); - } - else if (p.x < BOXSIZE*2) { - currentcolor = YELLOW; - tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, WHITE); - } - else if (p.x < BOXSIZE*3) { - currentcolor = GREEN; - tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, WHITE); - } - else if (p.x < BOXSIZE*4) { - currentcolor = CYAN; - tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, WHITE); - } - else if (p.x < BOXSIZE*5) { - currentcolor = BLUE; - tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, WHITE); - } - else if (p.x < BOXSIZE*6) { - currentcolor = MAGENTA; - tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, WHITE); - } - - if (oldcolor != currentcolor) { - if (oldcolor == RED) tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED); - if (oldcolor == YELLOW) tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW); - if (oldcolor == GREEN) tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN); - if (oldcolor == CYAN) tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN); - if (oldcolor == BLUE) tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE); - if (oldcolor == MAGENTA) tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA); - } - } - if (((p.y-PENRADIUS) > BOXSIZE) && ((p.y+PENRADIUS) < tft.height())) { - tft.fillCircle(p.x, p.y, PENRADIUS, currentcolor); - } - } -}