Arduino_STM32/STM32F1/libraries/Serasidis_XPT2046_touch/examples/TouchButtons/TouchButtons.ino

61 lines
2.1 KiB
C++

/**
* XPT2046 touch screen buttons.
*
* It divides the touch screen into COLUMNS * LINES areas (4*2=8 buttons) and creates virtual buttons.
* if the touch screen area is pressed and prints on Serial Port 1 the X,Y coordinates.
*
* Copyright (c) 02 Dec 2015 by Vassilis Serasidis
* Home: http://www.serasidis.gr
* email: avrsite@yahoo.gr
*
* The sketch example has been created for using it with STM32Duino (http://www.stm32duino.com)
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#include "XPT2046_touch.h"
#include <SPI.h>;
#define CS_PIN PA3 // Chip Select pin
#define LINES 2
#define COLUMNS 4
SPIClass mySPI(1); //Create an SPI instance on SPI1 port.
XPT2046_touch ts(CS_PIN, mySPI); // Chip Select pin, SPI port
uint16_t xy[2];
void setup() {
Serial.begin(9600);
Serial.println("-------------------------------------------------");
Serial.println("XPT2046 touch screen buttons");
Serial.println("Copyright (c) 02 Dec 2015 by Vassilis Serasidis");
Serial.println("Home: http://www.serasidis.gr");
Serial.println("-------------------------------------------------");
ts.begin(); //Begin TouchScreen.
ts.setButtonsNumber(COLUMNS, LINES); //Divide the Touch screen area into 4 columns and 2 lines and make them act as buttons.
}
void loop() {
if(ts.read_XY(xy)){ //If the touch screen is preesed, read the X,Y coordinates and print them on Serial port.
uint8_t buttonNumber = ts.getButtonNumber();
if(buttonNumber > 0){
Serial.print("Button: ");
Serial.println(buttonNumber);
Serial.print("X: ");
Serial.println(xy[0]); //Print X value
Serial.print("Y: ");
Serial.println(xy[1]); //Print Y value
Serial.println();
}
delay(500);
}
}