Paso 1: Scetch
#include / / librería gráfica de base
#include / / hardware específico biblioteca #include
#define YP A1 / / debe ser un pin analógico, utilice "Una" notación! #define A2 XM / / debe ser un pin analógico, utilice "Una" notación! #define 7 YM / / puede ser un pin digital #define 6 de XP / / puede ser un pin digital
#define TS_MINX 150 #define #define TS_MINY 120 TS_MAXX 920 #define TS_MAXY 940
Para una mejor precisión de la presión, tenemos que saber la resistencia / / entre X + y X - uso cualquier multímetro para leer / para los que estamos utilizando, sus 300 ohmios a través de la X placa pantalla táctil ts = pantalla táctil (XP, YP, XM, YM, 300);
Asignar nombres legibles a algunos valores de color de 16 bits comunes: #define negro 0 x 0000 #define azul 0x001F #define rojo 0xF800 #define verde 0x07E0 #define cian 0x07FF #define MAGENTA 0xF81F #define amarillo 0xFFE0 #define blanco 0xFFFF
SWTFT tft;
#define PACKINGCOLORTAMAÑO 40 #define PENRADIUS 3 int oldcolor, currentcolor;
void setup(void) {Serial.begin(9600); Serial.println(F("Paint!")); TFT.Reset(); uint16_t identificador = tft.readID();
Serial.Print (F ("chip controlador de LCD:")); Serial.println (identificador, hexagonal);
TFT.Begin(identifier);
tft.fillScreen(BLACK);
tft.fillRect (0, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, rojo); tft.fillRect (PACKINGCOLORTAMAÑO, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, amarillo); tft.fillRect (PACKINGCOLORTAMAÑO * 2, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, verde); tft.fillRect (PACKINGCOLORTAMAÑO * 3, 0, PACKINGCOLORTAMAÑO PACKINGCOLORTAMAÑO, cian); tft.fillRect (PACKINGCOLORTAMAÑO * 4, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, azul); tft.fillRect (PACKINGCOLORTAMAÑO * 5, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, MAGENTA); tft.fillRect (PACKINGCOLORTAMAÑO * 6, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, blanco); tft.drawRect (0, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, blanco); currentcolor = rojo; pinMode (13, salida); }
#define MINGRADO 10 #define MAXPRESSURE 1000
void loop() {digitalWrite (13, HIGH); / / fue retitulado recientemente punto TSPoint en la biblioteca de la pantalla táctil / si está utilizando una versión anterior de la biblioteca, utilice el / / definición, comentó en su lugar. Punto p = ts.getPoint(); TSPoint p = ts.getPoint(); digitalWrite (13, bajo);
compartiendo pins, usted necesitará fijar las direcciones de la pantalla táctil pins //pinMode (XP, salida); pinMode (XM, salida); pinMode (YP, salida); pinMode (YM, salida);
tenemos cierta presión mínima que consideramos 'válidos' / / presión de 0 no significa presionar!
Si (p.z > MINGRADO & & 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 (PY < (TS_MINY-5)) {Serial.println("erase"); / / Presione la parte inferior de la pantalla para borrar tft.fillRect (0, PACKINGCOLORTAMAÑO, tft.width(), (tft.height)-PACKINGCOLORTAMAÑO, negro);} / / escala de 0 -> 1023 a tft.width p.x = tft.width ()-(mapa (p.x, TS_MINX, TS_MAXX, tft.width(), 0)); py = tft.height ()-(mapa (PY, TS_MINY, TS_MAXY, tft.height(), 0)); / * Serial.print("("); Serial.Print(p.x); Serial.Print (","); Serial.Print(p.y); Serial.println(")"); * / if (PY < PACKINGCOLORTAMAÑO) {oldcolor = currentcolor;
Si (p.x < PACKINGCOLORTAMAÑO) {currentcolor = rojo; tft.drawRect (0, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, blanco);} else if (p.x < PACKINGCOLORTAMAÑO * 2) {currentcolor = amarillo; tft.drawRect (PACKINGCOLORTAMAÑO, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, blanco);} else if (p.x < PACKINGCOLORTAMAÑO * 3) {currentcolor = verde; tft.drawRect (PACKINGCOLORTAMAÑO * 2, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, blanco);} else if (p.x < PACKINGCOLORTAMAÑO * 4) {currentcolor = CYAN; tft.drawRect (PACKINGCOLORTAMAÑO * 3, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, blanco);} else if (p.x < PACKINGCOLORTAMAÑO * 5) {currentcolor = azul; tft.drawRect(BOXSIZE*4 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, BLANCO); } else if (p.x < PACKINGCOLORTAMAÑO * 6) {currentcolor = MAGENTA; tft.drawRect (PACKINGCOLORTAMAÑO * 5, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, blanco);}
Si (oldcolor! = currentcolor) {si (oldcolor == rojo) tft.fillRect (0, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, rojo); si (oldcolor == amarillo) tft.fillRect (PACKINGCOLORTAMAÑO, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, amarillo); si (oldcolor == verde) tft.fillRect (PACKINGCOLORTAMAÑO * 2, 0, PACKINGCOLORTAMAÑO PACKINGCOLORTAMAÑO, GREEN); si (oldcolor == cian) tft.fillRect (PACKINGCOLORTAMAÑO * 3, 0, PACKINGCOLORTAMAÑO PACKINGCOLORTAMAÑO, cian); si (oldcolor == azul) tft.fillRect (PACKINGCOLORTAMAÑO * 4, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, azul); si (oldcolor == MAGENTA) tft.fillRect (PACKINGCOLORTAMAÑO * 5, 0, PACKINGCOLORTAMAÑO, PACKINGCOLORTAMAÑO, MAGENTA);}} Si (((p.y-PENRADIUS) > PACKINGCOLORTAMAÑO) & & ((p.y+PENRADIUS) < tft.height())) {tft.fillCircle (p.x, py, PENRADIUS, currentcolor);}} }