void Stage::manualControl() { //Get pressure point from TS. p = ts.getPoint(); if(p.z > 10){ //If pressed, move stage depending on sector if(p.y<400 && p.x>600){ //Move forwards _y_target = _y_pos - 1; } if(p.y>700 && p.x>600){ //Move backwards _y_target = _y_pos + 1; } if(p.x<700 &&p.x>380&&p.y>450&&p.y<650){ //Move right _x_target = _x_pos + 1; } if(p.x>750&&p.y>450&&p.y<650){ //Move left _x_target = _x_pos - 1; } if(p.x<310 && p.y<500){ //Move up _z_target = _z_pos + 1; } if(p.x<310 && p.y>500){ //Move down _z_target = _z_pos - 1; } } }
void loop() { // Retrieve a point TSPoint p = ts.getPoint(); // we have some minimum pressure we consider 'valid' // pressure of 0 means no pressing! if (p.z < MINPRESSURE || p.z > MAXPRESSURE) { return; } Serial.print("X = "); Serial.print(p.x); Serial.print("\tY = "); Serial.print(p.y); Serial.print("\tPressure = "); Serial.println(p.z); // Scale from ~0->1000 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 = HX8357_RED; tft.drawRect(0, 0, BOXSIZE, BOXSIZE, HX8357_WHITE); } else if (p.x < BOXSIZE*2) { currentcolor = HX8357_YELLOW; tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, HX8357_WHITE); } else if (p.x < BOXSIZE*3) { currentcolor = HX8357_GREEN; tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, HX8357_WHITE); } else if (p.x < BOXSIZE*4) { currentcolor = HX8357_CYAN; tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, HX8357_WHITE); } else if (p.x < BOXSIZE*5) { currentcolor = HX8357_BLUE; tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, HX8357_WHITE); } else if (p.x < BOXSIZE*6) { currentcolor = HX8357_MAGENTA; tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, HX8357_WHITE); } else if (p.x < BOXSIZE*7) { currentcolor = HX8357_WHITE; tft.drawRect(BOXSIZE*6, 0, BOXSIZE, BOXSIZE, HX8357_RED); } else if (p.x < BOXSIZE*8) { currentcolor = HX8357_BLACK; tft.drawRect(BOXSIZE*7, 0, BOXSIZE, BOXSIZE, HX8357_WHITE); } if (oldcolor != currentcolor) { if (oldcolor == HX8357_RED) tft.fillRect(0, 0, BOXSIZE, BOXSIZE, HX8357_RED); if (oldcolor == HX8357_YELLOW) tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, HX8357_YELLOW); if (oldcolor == HX8357_GREEN) tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, HX8357_GREEN); if (oldcolor == HX8357_CYAN) tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, HX8357_CYAN); if (oldcolor == HX8357_BLUE) tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, HX8357_BLUE); if (oldcolor == HX8357_MAGENTA) tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, HX8357_MAGENTA); if (oldcolor == HX8357_WHITE) tft.fillRect(BOXSIZE*6, 0, BOXSIZE, BOXSIZE, HX8357_WHITE); if (oldcolor == HX8357_BLACK) tft.fillRect(BOXSIZE*7, 0, BOXSIZE, BOXSIZE, HX8357_BLACK); } } if (((p.y-PENRADIUS) > BOXSIZE) && ((p.y+PENRADIUS) < tft.height())) { tft.fillCircle(p.x, p.y, PENRADIUS, currentcolor); } }