This is a fork of a functional ILI9341 display with a functional Seeed touch screen library.

Dependencies:   BMP180 UniGraphic mbed BNO055_fusionI_fixed HTU21D GPSISR Compass Fonts uGUI

Fork of TFT_test_NUCLEO-F411RE by Motoo Tanaka

/media/uploads/trevieze/win_20170427_21_31_20_pro.jpg

Had to move sensors to a remote board because of interference. Added spi burst mode to supported displays.

To do.... ugui buttons are slow. will need to add rtos to project. Finish other way points screen. Will have to rewrite portions of the touch screen class. Sense touch, delay, read values and then average, touch released, is the sequence. Add cadence input and logic to program for computer screen.

Committer:
trevieze
Date:
Mon Feb 20 19:10:30 2017 +0000
Revision:
9:a3cb458d7b1c
Parent:
8:855884782f67
Child:
10:869a102dd31c
GPS serial interrupt service routine is working with nmea library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:cd5e3d371b54 1 /* mbed main.cpp to test adafruit 2.8" TFT LCD shiled w Touchscreen
Rhyme 0:cd5e3d371b54 2 * Copyright (c) 2014, 2015 Motoo Tanaka @ Design Methodology Lab
Rhyme 0:cd5e3d371b54 3 *
Rhyme 0:cd5e3d371b54 4 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
Rhyme 0:cd5e3d371b54 5 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
Rhyme 0:cd5e3d371b54 6 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
Rhyme 0:cd5e3d371b54 7 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
Rhyme 0:cd5e3d371b54 8 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Rhyme 0:cd5e3d371b54 9 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
Rhyme 0:cd5e3d371b54 10 * THE SOFTWARE.
Rhyme 0:cd5e3d371b54 11 */
Rhyme 0:cd5e3d371b54 12
Rhyme 0:cd5e3d371b54 13 /*
Rhyme 0:cd5e3d371b54 14 * Note: This program is derived from the SeeeStudioTFTv2 program.
Rhyme 0:cd5e3d371b54 15 * Although both program share same ILI9341 TFT driver,
Rhyme 0:cd5e3d371b54 16 * the touch sensor was not same with the Display I purchased from Akizuki.
Rhyme 0:cd5e3d371b54 17 * http://akizukidenshi.com/catalog/g/gM-07747/
Rhyme 0:cd5e3d371b54 18 * The touch sensor on the display is STMPE610,
Rhyme 0:cd5e3d371b54 19 * so I hacked the minimum spi driver for it (polling mode only).
Rhyme 0:cd5e3d371b54 20 */
Rhyme 0:cd5e3d371b54 21
Rhyme 0:cd5e3d371b54 22 #include "mbed.h"
Rhyme 0:cd5e3d371b54 23 #include <math.h>
Rhyme 0:cd5e3d371b54 24 #include "ILI9341.h"
trevieze 2:c5085faf2aa5 25 #include "SeeedStudioTFTv2.h"
trevieze 5:6eb4b9322931 26 #include "BNO055.h"
trevieze 5:6eb4b9322931 27 #include "HTU21D.h"
trevieze 5:6eb4b9322931 28 #include "BMP180.h"
trevieze 7:8aa9cdab4a07 29 #include "SDFileSystem.h"
trevieze 7:8aa9cdab4a07 30 #include "GPSISR.h"
trevieze 8:855884782f67 31
trevieze 5:6eb4b9322931 32
Rhyme 0:cd5e3d371b54 33 #include "Arial12x12.h"
Rhyme 0:cd5e3d371b54 34 #include "Arial24x23.h"
Rhyme 0:cd5e3d371b54 35 #include "Arial28x28.h"
Rhyme 0:cd5e3d371b54 36 #include "Arial43x48_numb.h"
Rhyme 0:cd5e3d371b54 37
trevieze 7:8aa9cdab4a07 38 //#define PIN_CS_TSC PA_9
trevieze 7:8aa9cdab4a07 39 //#define PIN_TSC_INTR PA_8
Rhyme 0:cd5e3d371b54 40 #define PIN_RESET_TFT PC_13 /* place holder */
trevieze 7:8aa9cdab4a07 41 //ILI9341 SPI PINS
trevieze 1:e265e7245ab8 42 #define PIN_XP A3
trevieze 1:e265e7245ab8 43 #define PIN_XM A1
trevieze 1:e265e7245ab8 44 #define PIN_YP A2
trevieze 1:e265e7245ab8 45 #define PIN_YM A0
trevieze 7:8aa9cdab4a07 46 #define PIN_MOSI_SPI1 D11 //SPI 1 MOSI
trevieze 7:8aa9cdab4a07 47 #define PIN_MISO_SPI1 D12 //SPI 1 MISO
trevieze 7:8aa9cdab4a07 48 #define PIN_SCLK_SPI1 D13 //SPI 1 SLCK
trevieze 7:8aa9cdab4a07 49 #define PIN_CS_SPI1 D5 // SPI CS D10 Was D5
trevieze 1:e265e7245ab8 50 #define PIN_DC_TFT D6
trevieze 1:e265e7245ab8 51 #define PIN_CS_SD D4
trevieze 5:6eb4b9322931 52 #define PIN_RESET D7
trevieze 7:8aa9cdab4a07 53 // SD Card on GPS shield PINS
trevieze 7:8aa9cdab4a07 54 #define PIN_MOSI_SPI3 PB_15 //SPI 1 MOSI
trevieze 7:8aa9cdab4a07 55 #define PIN_MISO_SPI3 PB_14 //SPI 1 MISO
trevieze 7:8aa9cdab4a07 56 #define PIN_SCLK_SPI3 PB_13 //SPI 1 SLCK
trevieze 7:8aa9cdab4a07 57 #define PIN_CS_SPI3 D2 // SPI CS
trevieze 7:8aa9cdab4a07 58 #define PIN_RX_GPS PA_12 //GPS Shield RX pin
trevieze 7:8aa9cdab4a07 59 #define PIN_TX_GPS PA_11 //GPS Shield TX pin
trevieze 7:8aa9cdab4a07 60
trevieze 5:6eb4b9322931 61
trevieze 5:6eb4b9322931 62 BNO055_ID_INF_TypeDef bno055_id_inf;
trevieze 5:6eb4b9322931 63 BNO055_EULER_TypeDef euler_angles;
trevieze 5:6eb4b9322931 64 BNO055_QUATERNION_TypeDef quaternion;
trevieze 5:6eb4b9322931 65 BNO055_LIN_ACC_TypeDef linear_acc;
trevieze 5:6eb4b9322931 66 BNO055_GRAVITY_TypeDef gravity;
trevieze 5:6eb4b9322931 67 BNO055_TEMPERATURE_TypeDef chip_temp;
trevieze 1:e265e7245ab8 68
Rhyme 0:cd5e3d371b54 69 #define DEVICE_NAME "F411RE"
Rhyme 0:cd5e3d371b54 70
Rhyme 0:cd5e3d371b54 71 #ifndef TARGET_NECLEO_F411RE
Rhyme 0:cd5e3d371b54 72 #define TARGET_NECLEO_F411RE
Rhyme 0:cd5e3d371b54 73 #endif
Rhyme 0:cd5e3d371b54 74
trevieze 6:b78ff34209e5 75 //DigitalOut backlight(PB_3) ;
trevieze 5:6eb4b9322931 76 // DigitalOut tsc_cs(PA_9, 1) ;
trevieze 5:6eb4b9322931 77 // DigitalOut tft_cs(PB_6, 1) ;
Rhyme 0:cd5e3d371b54 78
trevieze 7:8aa9cdab4a07 79 Serial pc(USBTX, USBRX);
trevieze 7:8aa9cdab4a07 80
trevieze 5:6eb4b9322931 81 // Display
Rhyme 0:cd5e3d371b54 82 ILI9341 TFT(SPI_8, 10000000,
trevieze 7:8aa9cdab4a07 83 PIN_MOSI_SPI1, PIN_MISO_SPI1, PIN_SCLK_SPI1,
trevieze 7:8aa9cdab4a07 84 PIN_CS_SPI1, PIN_RESET_TFT, PIN_DC_TFT, "Adafruit2.8") ;
trevieze 5:6eb4b9322931 85
trevieze 5:6eb4b9322931 86 // TouchScreen
trevieze 2:c5085faf2aa5 87 TouchScreen TSC(PIN_XP, PIN_XM, PIN_YP, PIN_YM);
Rhyme 0:cd5e3d371b54 88
trevieze 5:6eb4b9322931 89 // 3 Axis IMU
trevieze 6:b78ff34209e5 90 BNO055 imu(I2C_SDA, I2C_SCL, PIN_RESET); // Reset =D7, addr = BNO055_G_CHIP_ADDR, mode = MODE_NDOF <- as default
trevieze 5:6eb4b9322931 91
trevieze 5:6eb4b9322931 92 // Humidity and Temperature
trevieze 5:6eb4b9322931 93 HTU21D temphumid(I2C_SDA, I2C_SCL);
trevieze 5:6eb4b9322931 94
trevieze 5:6eb4b9322931 95 // Pressure
trevieze 6:b78ff34209e5 96 BMP180 bmp180(I2C_SDA, I2C_SCL);
trevieze 5:6eb4b9322931 97
trevieze 7:8aa9cdab4a07 98 // SD Card Reader On Adafruit GPS Shield
trevieze 7:8aa9cdab4a07 99 SDFileSystem sd(PIN_MOSI_SPI3, PIN_MISO_SPI3, PIN_SCLK_SPI3, PIN_CS_SPI3, "sd"); // the pinout on the mbed Cool Components workshop board
trevieze 7:8aa9cdab4a07 100
trevieze 8:855884782f67 101 // Set up serial interrupe service handler for gps characters.
trevieze 7:8aa9cdab4a07 102 GPS MyGPS(PIN_TX_GPS,PIN_RX_GPS, 9600);
trevieze 8:855884782f67 103
trevieze 7:8aa9cdab4a07 104
Rhyme 0:cd5e3d371b54 105 int page = 0 ;
Rhyme 0:cd5e3d371b54 106 int numPage = 2 ;
Rhyme 0:cd5e3d371b54 107
Rhyme 0:cd5e3d371b54 108 void initTFT(void)
Rhyme 0:cd5e3d371b54 109 {
Rhyme 0:cd5e3d371b54 110 //Configure the display driver
Rhyme 0:cd5e3d371b54 111 TFT.BusEnable(true) ;
Rhyme 0:cd5e3d371b54 112 TFT.FastWindow(true) ;
Rhyme 0:cd5e3d371b54 113 TFT.background(Black);
Rhyme 0:cd5e3d371b54 114 TFT.foreground(White);
Rhyme 0:cd5e3d371b54 115 wait(0.01) ;
Rhyme 0:cd5e3d371b54 116 TFT.cls();
Rhyme 0:cd5e3d371b54 117 TFT.BusEnable(false) ;
Rhyme 0:cd5e3d371b54 118 }
Rhyme 0:cd5e3d371b54 119
Rhyme 0:cd5e3d371b54 120 void screen1(void) // Welcome Screen
Rhyme 0:cd5e3d371b54 121 {
Rhyme 0:cd5e3d371b54 122 TFT.BusEnable(true) ;
trevieze 6:b78ff34209e5 123 //backlight = 0 ;
Rhyme 0:cd5e3d371b54 124 TFT.background(White) ;
Rhyme 0:cd5e3d371b54 125 wait(0.1) ;
Rhyme 0:cd5e3d371b54 126 TFT.cls() ;
Rhyme 0:cd5e3d371b54 127 wait(0.1) ;
Rhyme 0:cd5e3d371b54 128
Rhyme 0:cd5e3d371b54 129 TFT.set_font((unsigned char*) Arial24x23);
Rhyme 0:cd5e3d371b54 130 TFT.foreground(Red) ;
Rhyme 0:cd5e3d371b54 131 TFT.locate(80, 40) ;
trevieze 7:8aa9cdab4a07 132 TFT.printf("MBED") ;
Rhyme 0:cd5e3d371b54 133 TFT.foreground(Blue);
Rhyme 0:cd5e3d371b54 134 TFT.locate(60, 80) ;
Rhyme 0:cd5e3d371b54 135 TFT.printf("2.8\"TFT") ;
Rhyme 0:cd5e3d371b54 136 TFT.locate(40, 120) ;
Rhyme 0:cd5e3d371b54 137 TFT.printf("with touch") ;
Rhyme 0:cd5e3d371b54 138 TFT.foreground(Black);
Rhyme 0:cd5e3d371b54 139 TFT.set_font((unsigned char*) Arial12x12);
Rhyme 0:cd5e3d371b54 140 TFT.foreground(Blue) ;
Rhyme 0:cd5e3d371b54 141 TFT.locate(30, 180) ;
Rhyme 0:cd5e3d371b54 142 TFT.printf("This program is running on") ;
Rhyme 0:cd5e3d371b54 143 TFT.locate(30, 200) ;
Rhyme 0:cd5e3d371b54 144 TFT.printf("ST Nucleo F411RE with") ;
Rhyme 0:cd5e3d371b54 145 TFT.locate(30, 220) ;
Rhyme 0:cd5e3d371b54 146 TFT.printf("a program developed in mbed") ;
Rhyme 0:cd5e3d371b54 147 TFT.foreground(Green) ;
Rhyme 0:cd5e3d371b54 148 TFT.locate(30, 260) ;
Rhyme 0:cd5e3d371b54 149 TFT.printf("To advance demo page, touch") ;
Rhyme 0:cd5e3d371b54 150 TFT.locate(30, 280) ;
Rhyme 0:cd5e3d371b54 151 TFT.printf("and hold right side of screen") ;
Rhyme 0:cd5e3d371b54 152 TFT.locate(30, 300) ;
Rhyme 0:cd5e3d371b54 153 TFT.printf("until the next screen starts") ;
Rhyme 0:cd5e3d371b54 154 TFT.BusEnable(false) ;
trevieze 6:b78ff34209e5 155 //backlight = 1 ;
Rhyme 0:cd5e3d371b54 156 }
Rhyme 0:cd5e3d371b54 157
Rhyme 0:cd5e3d371b54 158 void screen2(void) // Graphics
Rhyme 0:cd5e3d371b54 159 {
Rhyme 0:cd5e3d371b54 160 //Draw some graphics
Rhyme 0:cd5e3d371b54 161 int i, x[2], y[2] ;
trevieze 6:b78ff34209e5 162 //backlight = 0 ;
Rhyme 0:cd5e3d371b54 163 TFT.BusEnable(true) ;
Rhyme 0:cd5e3d371b54 164 TFT.background(Black);
Rhyme 0:cd5e3d371b54 165 wait(0.1) ;
Rhyme 0:cd5e3d371b54 166 TFT.foreground(White);
Rhyme 0:cd5e3d371b54 167 wait(0.1) ;
Rhyme 0:cd5e3d371b54 168 TFT.cls() ;
Rhyme 0:cd5e3d371b54 169 wait(0.1) ;
Rhyme 0:cd5e3d371b54 170 TFT.set_font((unsigned char*) Arial12x12);
Rhyme 0:cd5e3d371b54 171 TFT.locate(90,0);
Rhyme 0:cd5e3d371b54 172 TFT.printf("Graphics");
Rhyme 0:cd5e3d371b54 173
Rhyme 0:cd5e3d371b54 174 x[0] = 25 ; x[1] = 224 ;
Rhyme 0:cd5e3d371b54 175 y[0] = 20 ; y[1] = 219 ;
Rhyme 0:cd5e3d371b54 176 for (i = 20 ; i < 220 ; i += 10) {
Rhyme 0:cd5e3d371b54 177 TFT.line(i+5, y[0], i+5, y[1], Blue) ;
Rhyme 0:cd5e3d371b54 178 TFT.line(x[0], i, x[1], i, Blue) ;
Rhyme 0:cd5e3d371b54 179 }
Rhyme 0:cd5e3d371b54 180 TFT.line(125, y[0], 125, y[1], Green) ;
Rhyme 0:cd5e3d371b54 181 TFT.line(x[0], 120, x[1], 120, Green) ;
Rhyme 0:cd5e3d371b54 182 TFT.rect(x[0],y[0], x[1], y[1], Green) ;
Rhyme 0:cd5e3d371b54 183 TFT.locate(10, 20) ;
Rhyme 0:cd5e3d371b54 184 TFT.printf("V") ;
Rhyme 0:cd5e3d371b54 185 TFT.locate(0, 115) ;
Rhyme 0:cd5e3d371b54 186 TFT.printf("0.0") ;
Rhyme 0:cd5e3d371b54 187 TFT.locate(115, 225) ;
Rhyme 0:cd5e3d371b54 188 TFT.printf("0.0") ;
Rhyme 0:cd5e3d371b54 189 TFT.locate(215, 225) ;
Rhyme 0:cd5e3d371b54 190 TFT.printf("T") ;
Rhyme 0:cd5e3d371b54 191
Rhyme 0:cd5e3d371b54 192 double s;
Rhyme 0:cd5e3d371b54 193 for (int i = x[0]; i < 225; i++) {
Rhyme 0:cd5e3d371b54 194 s = 40 * sin((long double)i / 20);
Rhyme 0:cd5e3d371b54 195 TFT.pixel(i, 120 + (int)s, White);
Rhyme 0:cd5e3d371b54 196 }
Rhyme 0:cd5e3d371b54 197
Rhyme 0:cd5e3d371b54 198 TFT.fillrect(10, 240, 229, 309, White) ;
Rhyme 0:cd5e3d371b54 199 TFT.rect(10, 240, 229, 309, Red) ;
Rhyme 0:cd5e3d371b54 200 TFT.rect(11, 241, 228, 308, Red) ;
Rhyme 0:cd5e3d371b54 201
Rhyme 0:cd5e3d371b54 202 TFT.background(White) ;
Rhyme 0:cd5e3d371b54 203 TFT.foreground(Black) ;
Rhyme 0:cd5e3d371b54 204 TFT.locate(20, 250) ;
Rhyme 0:cd5e3d371b54 205 TFT.printf("With QVGA resolution") ;
Rhyme 0:cd5e3d371b54 206 TFT.locate(20, 270) ;
Rhyme 0:cd5e3d371b54 207 TFT.printf("simple graphics drawing") ;
Rhyme 0:cd5e3d371b54 208 TFT.locate(20, 290) ;
Rhyme 0:cd5e3d371b54 209 TFT.printf("capability is provided") ;
Rhyme 0:cd5e3d371b54 210 TFT.BusEnable(false) ;
trevieze 6:b78ff34209e5 211 //backlight = 1 ;
Rhyme 0:cd5e3d371b54 212 }
Rhyme 0:cd5e3d371b54 213
Rhyme 0:cd5e3d371b54 214 double clip(double src)
Rhyme 0:cd5e3d371b54 215 {
Rhyme 0:cd5e3d371b54 216 double value ;
Rhyme 0:cd5e3d371b54 217 value = src ;
Rhyme 0:cd5e3d371b54 218 if (value < 0.0) {
Rhyme 0:cd5e3d371b54 219 value = 0.0 ;
Rhyme 0:cd5e3d371b54 220 } else if (value > 2.0) {
Rhyme 0:cd5e3d371b54 221 value = 2.0 ;
Rhyme 0:cd5e3d371b54 222 }
Rhyme 0:cd5e3d371b54 223 return( value ) ;
Rhyme 0:cd5e3d371b54 224 }
Rhyme 0:cd5e3d371b54 225
Rhyme 0:cd5e3d371b54 226 void incPage(void)
Rhyme 0:cd5e3d371b54 227 {
Rhyme 0:cd5e3d371b54 228 page++ ;
Rhyme 0:cd5e3d371b54 229 if (page >= numPage) {
Rhyme 0:cd5e3d371b54 230 page = 0 ;
Rhyme 0:cd5e3d371b54 231 }
Rhyme 0:cd5e3d371b54 232 }
Rhyme 0:cd5e3d371b54 233
Rhyme 0:cd5e3d371b54 234 void decPage(void)
Rhyme 0:cd5e3d371b54 235 {
Rhyme 0:cd5e3d371b54 236 page-- ;
Rhyme 0:cd5e3d371b54 237 if (page < 0) {
Rhyme 0:cd5e3d371b54 238 page = numPage - 1 ;
Rhyme 0:cd5e3d371b54 239 }
Rhyme 0:cd5e3d371b54 240 }
Rhyme 0:cd5e3d371b54 241
trevieze 7:8aa9cdab4a07 242
Rhyme 0:cd5e3d371b54 243 int main()
Rhyme 0:cd5e3d371b54 244 {
trevieze 9:a3cb458d7b1c 245 TFT.BusEnable(true) ;
trevieze 9:a3cb458d7b1c 246 TFT.FastWindow(true) ;
trevieze 9:a3cb458d7b1c 247 wait(0.1);
trevieze 9:a3cb458d7b1c 248 TFT.cls();
trevieze 9:a3cb458d7b1c 249 wait(0.1);
trevieze 7:8aa9cdab4a07 250 Timer refresh_Timer; //sets up a timer for use in loop; how often do we print GPS info?
trevieze 9:a3cb458d7b1c 251 const int refresh_Time = 2000; //refresh time in ms
trevieze 7:8aa9cdab4a07 252 refresh_Timer.start(); //starts the clock on the timer
trevieze 7:8aa9cdab4a07 253 //backlight = 0 ;
trevieze 9:a3cb458d7b1c 254 TFT.set_font((unsigned char*) Arial24x23);
trevieze 9:a3cb458d7b1c 255 TFT.fillrect(2, 2, 237, 317, White);
trevieze 9:a3cb458d7b1c 256 TFT.foreground(Blue);
trevieze 9:a3cb458d7b1c 257 TFT.background(White);
trevieze 9:a3cb458d7b1c 258 wait(0.1);
trevieze 9:a3cb458d7b1c 259
trevieze 9:a3cb458d7b1c 260
trevieze 7:8aa9cdab4a07 261 while (1) {
trevieze 7:8aa9cdab4a07 262 //check if we recieved a new message from GPS, if so, attempt to parse it,
trevieze 7:8aa9cdab4a07 263 if (refresh_Timer.read_ms() >= refresh_Time) {
trevieze 7:8aa9cdab4a07 264 refresh_Timer.reset();
trevieze 9:a3cb458d7b1c 265
trevieze 9:a3cb458d7b1c 266 if (MyGPS.dataready()) {
trevieze 9:a3cb458d7b1c 267 MyGPS.read();
trevieze 8:855884782f67 268 pc.printf("NMEA has valid data");
trevieze 9:a3cb458d7b1c 269 pc.printf("Sats : %d \n", MyGPS.buffer.satellites);
trevieze 9:a3cb458d7b1c 270 pc.printf("%d-%d-%d\n", MyGPS.buffer.month, MyGPS.buffer.day, MyGPS.buffer.year);
trevieze 9:a3cb458d7b1c 271 pc.printf("%d:%d:%d\n", MyGPS.buffer.hours, MyGPS.buffer.minutes, MyGPS.buffer.seconds);
trevieze 9:a3cb458d7b1c 272
trevieze 9:a3cb458d7b1c 273
trevieze 9:a3cb458d7b1c 274 TFT.locate(2, 2) ;
trevieze 9:a3cb458d7b1c 275 TFT.printf("%d-%d-%d", MyGPS.buffer.month, MyGPS.buffer.day, MyGPS.buffer.year);
trevieze 9:a3cb458d7b1c 276 TFT.locate(2, 26) ;
trevieze 9:a3cb458d7b1c 277 TFT.printf("%d:%d:%d", MyGPS.buffer.hours, MyGPS.buffer.minutes, MyGPS.buffer.seconds);
trevieze 9:a3cb458d7b1c 278
trevieze 8:855884782f67 279 }
trevieze 8:855884782f67 280 else {
trevieze 8:855884782f67 281 pc.printf("NMEA has no valid data");
trevieze 8:855884782f67 282 }
trevieze 8:855884782f67 283
trevieze 7:8aa9cdab4a07 284 }
trevieze 7:8aa9cdab4a07 285 }
trevieze 6:b78ff34209e5 286
trevieze 5:6eb4b9322931 287 // uint16_t x, y, z ;
Rhyme 0:cd5e3d371b54 288 int prevPage = 99 ;
Rhyme 0:cd5e3d371b54 289 bool waitTouch = false ;
trevieze 2:c5085faf2aa5 290 point p;
Rhyme 0:cd5e3d371b54 291
Rhyme 0:cd5e3d371b54 292 printf("Hello World\n") ;
trevieze 6:b78ff34209e5 293
trevieze 5:6eb4b9322931 294 // screen0() ;
Rhyme 0:cd5e3d371b54 295
Rhyme 0:cd5e3d371b54 296 printf("Program Started!\n\r") ;
Rhyme 0:cd5e3d371b54 297
Rhyme 0:cd5e3d371b54 298 for(;;) {
Rhyme 0:cd5e3d371b54 299 // printf("TFT width = %d, height = %d\n\r", TFT.width(), TFT.height()) ;
trevieze 5:6eb4b9322931 300 // tft_cs = 0 ;
Rhyme 0:cd5e3d371b54 301 switch(page) {
Rhyme 0:cd5e3d371b54 302 case 0:
Rhyme 0:cd5e3d371b54 303 if (prevPage != page) {
Rhyme 0:cd5e3d371b54 304 screen1() ;
Rhyme 0:cd5e3d371b54 305 }
Rhyme 0:cd5e3d371b54 306 waitTouch = true ;
Rhyme 0:cd5e3d371b54 307 break ;
Rhyme 0:cd5e3d371b54 308 case 1:
Rhyme 0:cd5e3d371b54 309 if (prevPage != page) {
Rhyme 0:cd5e3d371b54 310 screen2() ;
Rhyme 0:cd5e3d371b54 311 }
Rhyme 0:cd5e3d371b54 312 waitTouch = true ;
Rhyme 0:cd5e3d371b54 313 break ;
Rhyme 0:cd5e3d371b54 314 default:
Rhyme 0:cd5e3d371b54 315 page = 0 ;
Rhyme 0:cd5e3d371b54 316 break ;
Rhyme 0:cd5e3d371b54 317 }
Rhyme 0:cd5e3d371b54 318 prevPage = page ;
Rhyme 0:cd5e3d371b54 319
trevieze 5:6eb4b9322931 320 // tft_cs = 1 ;
Rhyme 0:cd5e3d371b54 321 do {
trevieze 2:c5085faf2aa5 322 TSC.getTouch(p);
trevieze 6:b78ff34209e5 323 //printf("Touched X %d\n\r", p.x) ;
trevieze 6:b78ff34209e5 324 //printf("Touched Y %d\n\r", p.y) ;
trevieze 6:b78ff34209e5 325 //printf("Touched Z %d\n\r", p.z) ;
trevieze 4:25554dc066a0 326 wait(3) ;
trevieze 2:c5085faf2aa5 327 if (p.z > __PRESURE) {
trevieze 2:c5085faf2aa5 328 if (p.y < 30000) { // left
Rhyme 0:cd5e3d371b54 329 decPage() ;
trevieze 2:c5085faf2aa5 330 } else if (p.y > 90000) { // right
Rhyme 0:cd5e3d371b54 331 incPage() ;
Rhyme 0:cd5e3d371b54 332 }
Rhyme 0:cd5e3d371b54 333 waitTouch = false ;
Rhyme 0:cd5e3d371b54 334 }
trevieze 2:c5085faf2aa5 335 //tsc_cs = 1 ;
trevieze 2:c5085faf2aa5 336 }
trevieze 2:c5085faf2aa5 337 while(waitTouch != false) ;
trevieze 3:6f47fcd415ab 338 //wait(1) ;
Rhyme 0:cd5e3d371b54 339 }
trevieze 9:a3cb458d7b1c 340 }