Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: MMA8451Q SPI_STMPE610 SPI_TFT_ILI9341 TFT_fonts mbed
main.cpp@2:2ea45263d1d3, 2014-11-09 (annotated)
- Committer:
- Rhyme
- Date:
- Sun Nov 09 07:03:50 2014 +0000
- Revision:
- 2:2ea45263d1d3
- Parent:
- 1:5ea1dc8f875f
- Child:
- 3:5b9647f22941
Commit for publish
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Rhyme | 1:5ea1dc8f875f | 1 | /* mbed main.cpp to test adafruit 2.8" TFT LCD shiled w Touchscreen |
| Rhyme | 1:5ea1dc8f875f | 2 | * Copyright (c) 2014 Motoo Tanaka @ Design Methodology Lab |
| Rhyme | 1:5ea1dc8f875f | 3 | * |
| Rhyme | 1:5ea1dc8f875f | 4 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| Rhyme | 1:5ea1dc8f875f | 5 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| Rhyme | 1:5ea1dc8f875f | 6 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| Rhyme | 1:5ea1dc8f875f | 7 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| Rhyme | 1:5ea1dc8f875f | 8 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| Rhyme | 1:5ea1dc8f875f | 9 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| Rhyme | 1:5ea1dc8f875f | 10 | * THE SOFTWARE. |
| Rhyme | 1:5ea1dc8f875f | 11 | */ |
| Rhyme | 1:5ea1dc8f875f | 12 | |
| Rhyme | 1:5ea1dc8f875f | 13 | /* * |
| Rhyme | 1:5ea1dc8f875f | 14 | * @note This program is derived from the SeeeStudioTFTv2 program. |
| Rhyme | 1:5ea1dc8f875f | 15 | * @note Although both program share same ILI9341 TFT driver, |
| Rhyme | 1:5ea1dc8f875f | 16 | * @note the touch sensor was not same with the Display I purchased from Akizuki. |
| Rhyme | 1:5ea1dc8f875f | 17 | * @note http://akizukidenshi.com/catalog/g/gM-07747/ |
| Rhyme | 1:5ea1dc8f875f | 18 | * @note The touch sensor on the display is STMPE610, |
| Rhyme | 1:5ea1dc8f875f | 19 | * @note so I hacked the minimum spi driver for it (polling mode only). |
| Rhyme | 1:5ea1dc8f875f | 20 | */ |
| Rhyme | 1:5ea1dc8f875f | 21 | /** |
| Rhyme | 1:5ea1dc8f875f | 22 | * @note To make this work with FRDM-K64F |
| Rhyme | 1:5ea1dc8f875f | 23 | * @note PTA0 must be disconnected from the swd clk by cutting J11. |
| Rhyme | 1:5ea1dc8f875f | 24 | * @note But to re-active SWD you need to put jumper header to J11 |
| Rhyme | 1:5ea1dc8f875f | 25 | * @note so that it can be re-connected by a jumper. |
| Rhyme | 1:5ea1dc8f875f | 26 | */ |
| Rhyme | 0:227c21cd26be | 27 | |
| Rhyme | 0:227c21cd26be | 28 | #include "mbed.h" |
| Rhyme | 0:227c21cd26be | 29 | #include "MMA8451Q.h" |
| Rhyme | 0:227c21cd26be | 30 | #include <math.h> |
| Rhyme | 0:227c21cd26be | 31 | #include "SPI_TFT_ILI9341.h" |
| Rhyme | 0:227c21cd26be | 32 | #include "SPI_STMPE610.h" |
| Rhyme | 0:227c21cd26be | 33 | #include "Arial12x12.h" |
| Rhyme | 0:227c21cd26be | 34 | #include "Arial24x23.h" |
| Rhyme | 0:227c21cd26be | 35 | #include "Arial28x28.h" |
| Rhyme | 0:227c21cd26be | 36 | #include "font_big.h" |
| Rhyme | 0:227c21cd26be | 37 | |
| Rhyme | 0:227c21cd26be | 38 | #if 0 |
| Rhyme | 0:227c21cd26be | 39 | /* |
| Rhyme | 0:227c21cd26be | 40 | // For FRDM-KL25Z |
| Rhyme | 0:227c21cd26be | 41 | #define PIN_XP PTB3 |
| Rhyme | 0:227c21cd26be | 42 | #define PIN_XM PTB1 |
| Rhyme | 0:227c21cd26be | 43 | #define PIN_YP PTB2 |
| Rhyme | 0:227c21cd26be | 44 | #define PIN_YM PTB0 |
| Rhyme | 0:227c21cd26be | 45 | #define PIN_MOSI PTD2 |
| Rhyme | 0:227c21cd26be | 46 | #define PIN_MISO PTD3 |
| Rhyme | 0:227c21cd26be | 47 | #define PIN_SCLK PTD1 |
| Rhyme | 0:227c21cd26be | 48 | #define PIN_CS_TFT PTD0 |
| Rhyme | 0:227c21cd26be | 49 | #define PIN_DC_TFT PTD5 |
| Rhyme | 0:227c21cd26be | 50 | #define PIN_BL_TFT PTC9 |
| Rhyme | 0:227c21cd26be | 51 | #define PIN_CS_SD PTA4 |
| Rhyme | 0:227c21cd26be | 52 | #define PIN_CS_TSC PTA13 |
| Rhyme | 0:227c21cd26be | 53 | #define PIN_TSC_INTR PTC9 |
| Rhyme | 0:227c21cd26be | 54 | #define PIN_BACKLIGHT PTA12 |
| Rhyme | 0:227c21cd26be | 55 | */ |
| Rhyme | 0:227c21cd26be | 56 | #endif |
| Rhyme | 0:227c21cd26be | 57 | |
| Rhyme | 0:227c21cd26be | 58 | #if 1 |
| Rhyme | 0:227c21cd26be | 59 | // For FRDM-K64F |
| Rhyme | 0:227c21cd26be | 60 | #define PIN_XP PTB11 |
| Rhyme | 0:227c21cd26be | 61 | #define PIN_XM PTB3 |
| Rhyme | 0:227c21cd26be | 62 | #define PIN_YP PTB10 |
| Rhyme | 0:227c21cd26be | 63 | #define PIN_YM PTB2 |
| Rhyme | 0:227c21cd26be | 64 | #define PIN_MOSI PTD2 |
| Rhyme | 0:227c21cd26be | 65 | #define PIN_MISO PTD3 |
| Rhyme | 0:227c21cd26be | 66 | #define PIN_SCLK PTD1 |
| Rhyme | 0:227c21cd26be | 67 | #define PIN_CS_TFT PTD0 |
| Rhyme | 0:227c21cd26be | 68 | #define PIN_DC_TFT PTC4 |
| Rhyme | 0:227c21cd26be | 69 | #define PIN_BL_TFT PTC3 |
| Rhyme | 0:227c21cd26be | 70 | #define PIN_CS_SD PTB23 |
| Rhyme | 0:227c21cd26be | 71 | #define PIN_CS_TSC PTA0 |
| Rhyme | 0:227c21cd26be | 72 | #define PIN_TSC_INTR PTC3 |
| Rhyme | 0:227c21cd26be | 73 | #define PIN_BACKLIGHT PTA1 |
| Rhyme | 0:227c21cd26be | 74 | #endif |
| Rhyme | 0:227c21cd26be | 75 | |
| Rhyme | 0:227c21cd26be | 76 | |
| Rhyme | 0:227c21cd26be | 77 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
| Rhyme | 0:227c21cd26be | 78 | MMA8451Q *acc = 0 ; |
| Rhyme | 0:227c21cd26be | 79 | |
| Rhyme | 0:227c21cd26be | 80 | // SeeedStudioTFTv2 TFT(PIN_XP, PIN_XM, PIN_YP, PIN_YM, PIN_MOSI, PIN_MISO, PIN_SCLK, PIN_CS_TFT, PIN_DC_TFT, PIN_BL_TFT, PIN_CS_SD); |
| Rhyme | 0:227c21cd26be | 81 | // SPI_TFT_ILI9341(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName reset, PinName dc, const char* name ="TFT"); |
| Rhyme | 0:227c21cd26be | 82 | SPI_TFT_ILI9341 TFT(PIN_MOSI, PIN_MISO, PIN_SCLK, PIN_CS_TFT, PIN_BL_TFT, PIN_DC_TFT) ; |
| Rhyme | 0:227c21cd26be | 83 | SPI_STMPE610 TSC(PIN_MOSI, PIN_MISO, PIN_SCLK, PIN_CS_TSC) ; |
| Rhyme | 0:227c21cd26be | 84 | |
| Rhyme | 0:227c21cd26be | 85 | DigitalOut backlight(PIN_BACKLIGHT) ; |
| Rhyme | 0:227c21cd26be | 86 | DigitalIn pinD7(PIN_TSC_INTR) ; |
| Rhyme | 0:227c21cd26be | 87 | |
| Rhyme | 0:227c21cd26be | 88 | int page = 0 ; |
| Rhyme | 0:227c21cd26be | 89 | int numPage = 3 ; |
| Rhyme | 0:227c21cd26be | 90 | |
| Rhyme | 0:227c21cd26be | 91 | void initTFT(void) |
| Rhyme | 0:227c21cd26be | 92 | { |
| Rhyme | 0:227c21cd26be | 93 | //Configure the display driver |
| Rhyme | 0:227c21cd26be | 94 | TFT.background(Black); |
| Rhyme | 0:227c21cd26be | 95 | TFT.foreground(White); |
| Rhyme | 0:227c21cd26be | 96 | wait(0.01) ; |
| Rhyme | 0:227c21cd26be | 97 | TFT.cls(); |
| Rhyme | 0:227c21cd26be | 98 | } |
| Rhyme | 0:227c21cd26be | 99 | |
| Rhyme | 0:227c21cd26be | 100 | void screen1(void) // Welcome Screen |
| Rhyme | 0:227c21cd26be | 101 | { |
| Rhyme | 0:227c21cd26be | 102 | backlight = 0 ; |
| Rhyme | 0:227c21cd26be | 103 | TFT.background(White) ; |
| Rhyme | 0:227c21cd26be | 104 | TFT.cls() ; |
| Rhyme | 0:227c21cd26be | 105 | |
| Rhyme | 0:227c21cd26be | 106 | wait(0.1) ; |
| Rhyme | 0:227c21cd26be | 107 | TFT.set_font((unsigned char*) Arial24x23); |
| Rhyme | 0:227c21cd26be | 108 | TFT.foreground(Red) ; |
| Rhyme | 0:227c21cd26be | 109 | TFT.locate(80, 40) ; |
| Rhyme | 0:227c21cd26be | 110 | TFT.printf("mbed") ; |
| Rhyme | 0:227c21cd26be | 111 | TFT.foreground(Blue); |
| Rhyme | 0:227c21cd26be | 112 | TFT.locate(60, 80) ; |
| Rhyme | 0:227c21cd26be | 113 | TFT.printf("TFT 2.8\"") ; |
| Rhyme | 0:227c21cd26be | 114 | TFT.locate(40, 120) ; |
| Rhyme | 0:227c21cd26be | 115 | TFT.printf("with touch") ; |
| Rhyme | 0:227c21cd26be | 116 | TFT.foreground(Black); |
| Rhyme | 0:227c21cd26be | 117 | TFT.set_font((unsigned char*) Arial12x12); |
| Rhyme | 0:227c21cd26be | 118 | TFT.foreground(Blue) ; |
| Rhyme | 0:227c21cd26be | 119 | TFT.locate(10, 180) ; |
| Rhyme | 0:227c21cd26be | 120 | TFT.printf("This program is running on") ; |
| Rhyme | 0:227c21cd26be | 121 | TFT.locate(10, 200) ; |
| Rhyme | 0:227c21cd26be | 122 | TFT.printf("freescale FRDM-K64F with") ; |
| Rhyme | 0:227c21cd26be | 123 | TFT.locate(10, 220) ; |
| Rhyme | 0:227c21cd26be | 124 | TFT.printf("a program developed on mbed") ; |
| Rhyme | 0:227c21cd26be | 125 | TFT.foreground(Green) ; |
| Rhyme | 0:227c21cd26be | 126 | TFT.locate(10, 260) ; |
| Rhyme | 0:227c21cd26be | 127 | TFT.printf("To advance demo page, touch") ; |
| Rhyme | 0:227c21cd26be | 128 | TFT.locate(10, 280) ; |
| Rhyme | 0:227c21cd26be | 129 | TFT.printf("and hold right side of screen") ; |
| Rhyme | 0:227c21cd26be | 130 | TFT.locate(10, 300) ; |
| Rhyme | 0:227c21cd26be | 131 | TFT.printf("until the next screen starts") ; |
| Rhyme | 0:227c21cd26be | 132 | backlight = 1 ; |
| Rhyme | 0:227c21cd26be | 133 | } |
| Rhyme | 0:227c21cd26be | 134 | |
| Rhyme | 0:227c21cd26be | 135 | void screen2(void) // Graphics |
| Rhyme | 0:227c21cd26be | 136 | { |
| Rhyme | 0:227c21cd26be | 137 | //Draw some graphics |
| Rhyme | 0:227c21cd26be | 138 | int i, x[2], y[2] ; |
| Rhyme | 0:227c21cd26be | 139 | backlight = 0 ; |
| Rhyme | 0:227c21cd26be | 140 | |
| Rhyme | 0:227c21cd26be | 141 | TFT.background(Black); |
| Rhyme | 0:227c21cd26be | 142 | TFT.foreground(White); |
| Rhyme | 0:227c21cd26be | 143 | TFT.cls() ; |
| Rhyme | 0:227c21cd26be | 144 | TFT.set_font((unsigned char*) Arial12x12); |
| Rhyme | 0:227c21cd26be | 145 | TFT.locate(90,0); |
| Rhyme | 0:227c21cd26be | 146 | TFT.printf("Graphics"); |
| Rhyme | 0:227c21cd26be | 147 | |
| Rhyme | 0:227c21cd26be | 148 | x[0] = 25 ; x[1] = 224 ; |
| Rhyme | 0:227c21cd26be | 149 | y[0] = 20 ; y[1] = 219 ; |
| Rhyme | 0:227c21cd26be | 150 | for (i = 20 ; i < 220 ; i += 10) { |
| Rhyme | 0:227c21cd26be | 151 | TFT.line(i+5, y[0], i+5, y[1], Blue) ; |
| Rhyme | 0:227c21cd26be | 152 | TFT.line(x[0], i, x[1], i, Blue) ; |
| Rhyme | 0:227c21cd26be | 153 | } |
| Rhyme | 0:227c21cd26be | 154 | TFT.line(125, y[0], 125, y[1], Green) ; |
| Rhyme | 0:227c21cd26be | 155 | TFT.line(x[0], 120, x[1], 120, Green) ; |
| Rhyme | 0:227c21cd26be | 156 | TFT.rect(x[0],y[0], x[1], y[1], Green) ; |
| Rhyme | 0:227c21cd26be | 157 | TFT.locate(10, 20) ; |
| Rhyme | 0:227c21cd26be | 158 | TFT.printf("V") ; |
| Rhyme | 0:227c21cd26be | 159 | TFT.locate(0, 115) ; |
| Rhyme | 0:227c21cd26be | 160 | TFT.printf("0.0") ; |
| Rhyme | 0:227c21cd26be | 161 | TFT.locate(115, 225) ; |
| Rhyme | 0:227c21cd26be | 162 | TFT.printf("0.0") ; |
| Rhyme | 0:227c21cd26be | 163 | TFT.locate(215, 225) ; |
| Rhyme | 0:227c21cd26be | 164 | TFT.printf("T") ; |
| Rhyme | 0:227c21cd26be | 165 | |
| Rhyme | 0:227c21cd26be | 166 | double s; |
| Rhyme | 0:227c21cd26be | 167 | for (int i = x[0]; i < 225; i++) { |
| Rhyme | 0:227c21cd26be | 168 | s = 40 * sin((long double)i / 20); |
| Rhyme | 0:227c21cd26be | 169 | TFT.pixel(i, 120 + (int)s, White); |
| Rhyme | 0:227c21cd26be | 170 | } |
| Rhyme | 0:227c21cd26be | 171 | |
| Rhyme | 0:227c21cd26be | 172 | TFT.fillrect(10, 240, 229, 309, White) ; |
| Rhyme | 0:227c21cd26be | 173 | TFT.rect(10, 240, 229, 309, Red) ; |
| Rhyme | 0:227c21cd26be | 174 | TFT.rect(11, 241, 228, 308, Red) ; |
| Rhyme | 0:227c21cd26be | 175 | |
| Rhyme | 0:227c21cd26be | 176 | TFT.background(White) ; |
| Rhyme | 0:227c21cd26be | 177 | TFT.foreground(Black) ; |
| Rhyme | 0:227c21cd26be | 178 | TFT.locate(20, 250) ; |
| Rhyme | 0:227c21cd26be | 179 | TFT.printf("With QVGA resolution") ; |
| Rhyme | 0:227c21cd26be | 180 | TFT.locate(20, 270) ; |
| Rhyme | 0:227c21cd26be | 181 | TFT.printf("simple graphics drawing") ; |
| Rhyme | 0:227c21cd26be | 182 | TFT.locate(20, 290) ; |
| Rhyme | 0:227c21cd26be | 183 | TFT.printf("capability is provided") ; |
| Rhyme | 0:227c21cd26be | 184 | backlight = 1 ; |
| Rhyme | 0:227c21cd26be | 185 | } |
| Rhyme | 0:227c21cd26be | 186 | |
| Rhyme | 0:227c21cd26be | 187 | double clip(double src) |
| Rhyme | 0:227c21cd26be | 188 | { |
| Rhyme | 0:227c21cd26be | 189 | double value ; |
| Rhyme | 0:227c21cd26be | 190 | value = src ; |
| Rhyme | 0:227c21cd26be | 191 | if (value < 0.0) { |
| Rhyme | 0:227c21cd26be | 192 | value = 0.0 ; |
| Rhyme | 0:227c21cd26be | 193 | } else if (value > 2.0) { |
| Rhyme | 0:227c21cd26be | 194 | value = 2.0 ; |
| Rhyme | 0:227c21cd26be | 195 | } |
| Rhyme | 0:227c21cd26be | 196 | return( value ) ; |
| Rhyme | 0:227c21cd26be | 197 | } |
| Rhyme | 0:227c21cd26be | 198 | |
| Rhyme | 0:227c21cd26be | 199 | void screen3(void) |
| Rhyme | 0:227c21cd26be | 200 | { |
| Rhyme | 0:227c21cd26be | 201 | int t = 0 ; |
| Rhyme | 0:227c21cd26be | 202 | int pt = 0 ; // previous t |
| Rhyme | 0:227c21cd26be | 203 | int i, x, y ; |
| Rhyme | 0:227c21cd26be | 204 | unsigned int data[3] ; // for x, y, z |
| Rhyme | 0:227c21cd26be | 205 | unsigned int prev[3] ; |
| Rhyme | 0:227c21cd26be | 206 | unsigned short signalHeight = 39 ; |
| Rhyme | 0:227c21cd26be | 207 | unsigned short xoffset = 30 ; |
| Rhyme | 0:227c21cd26be | 208 | unsigned short yoffset = 120 ; |
| Rhyme | 0:227c21cd26be | 209 | unsigned short zoffset = 210 ; |
| Rhyme | 0:227c21cd26be | 210 | unsigned short paneX[2] = {20, 235} ; |
| Rhyme | 0:227c21cd26be | 211 | unsigned short paneH = 81 ; |
| Rhyme | 0:227c21cd26be | 212 | |
| Rhyme | 0:227c21cd26be | 213 | backlight = 0 ; |
| Rhyme | 0:227c21cd26be | 214 | TFT.background(Black) ; |
| Rhyme | 0:227c21cd26be | 215 | TFT.foreground(White) ; |
| Rhyme | 0:227c21cd26be | 216 | // TFT.cls() ; |
| Rhyme | 0:227c21cd26be | 217 | |
| Rhyme | 0:227c21cd26be | 218 | |
| Rhyme | 0:227c21cd26be | 219 | TFT.fillrect(paneX[0], xoffset, paneX[1], xoffset+paneH, Black) ; |
| Rhyme | 0:227c21cd26be | 220 | TFT.fillrect(paneX[0], yoffset, paneX[1], yoffset+paneH, Black) ; |
| Rhyme | 0:227c21cd26be | 221 | TFT.fillrect(paneX[0], zoffset, paneX[1], zoffset+paneH, Black) ; |
| Rhyme | 0:227c21cd26be | 222 | TFT.fillrect(paneX[0], xoffset, paneX[1], xoffset+paneH, Black) ; |
| Rhyme | 0:227c21cd26be | 223 | for (i = 0 ; i < 10 ; i++ ) { |
| Rhyme | 0:227c21cd26be | 224 | y = i * 8 ; |
| Rhyme | 0:227c21cd26be | 225 | TFT.line(paneX[0], xoffset + y, paneX[1], xoffset + y, Blue) ; |
| Rhyme | 0:227c21cd26be | 226 | TFT.line(paneX[0], yoffset + y, paneX[1], yoffset + y, Blue) ; |
| Rhyme | 0:227c21cd26be | 227 | TFT.line(paneX[0], zoffset + y, paneX[1], zoffset + y, Blue) ; |
| Rhyme | 0:227c21cd26be | 228 | } |
| Rhyme | 0:227c21cd26be | 229 | for (x = 30 ; x < paneX[1] ; x += 10 ) { |
| Rhyme | 0:227c21cd26be | 230 | TFT.line(x, xoffset, x, xoffset+paneH, Blue) ; |
| Rhyme | 0:227c21cd26be | 231 | TFT.line(x, yoffset, x, yoffset+paneH, Blue) ; |
| Rhyme | 0:227c21cd26be | 232 | TFT.line(x, zoffset, x, zoffset+paneH, Blue) ; |
| Rhyme | 0:227c21cd26be | 233 | } |
| Rhyme | 0:227c21cd26be | 234 | TFT.rect(paneX[0], xoffset, paneX[1], xoffset+paneH, White) ; |
| Rhyme | 0:227c21cd26be | 235 | TFT.rect(paneX[0], yoffset, paneX[1], yoffset+paneH, White) ; |
| Rhyme | 0:227c21cd26be | 236 | TFT.rect(paneX[0], zoffset, paneX[1], zoffset+paneH, White) ; |
| Rhyme | 0:227c21cd26be | 237 | TFT.set_font((unsigned char*) Arial12x12); |
| Rhyme | 0:227c21cd26be | 238 | TFT.locate(5, xoffset+30) ; |
| Rhyme | 0:227c21cd26be | 239 | TFT.printf("X") ; |
| Rhyme | 0:227c21cd26be | 240 | TFT.locate(5, yoffset+30) ; |
| Rhyme | 0:227c21cd26be | 241 | TFT.printf("Y") ; |
| Rhyme | 0:227c21cd26be | 242 | TFT.locate(5, zoffset+30) ; |
| Rhyme | 0:227c21cd26be | 243 | TFT.printf("Z") ; |
| Rhyme | 0:227c21cd26be | 244 | TFT.locate(50, 10) ; |
| Rhyme | 0:227c21cd26be | 245 | TFT.printf("Xtrinsic Accelerometer") ; |
| Rhyme | 0:227c21cd26be | 246 | TFT.locate(90, 300) ; |
| Rhyme | 0:227c21cd26be | 247 | TFT.printf("MMA8451Q") ; |
| Rhyme | 0:227c21cd26be | 248 | |
| Rhyme | 0:227c21cd26be | 249 | prev[0] = xoffset + (signalHeight * clip((1.0 + acc->getAccX()))) ; |
| Rhyme | 0:227c21cd26be | 250 | prev[1] = yoffset + (signalHeight * clip((1.0 + acc->getAccY()))) ; |
| Rhyme | 0:227c21cd26be | 251 | prev[2] = zoffset + (signalHeight * clip((1.0 + acc->getAccZ()))) ; |
| Rhyme | 0:227c21cd26be | 252 | pt = paneX[0] ; |
| Rhyme | 0:227c21cd26be | 253 | backlight = 1 ; |
| Rhyme | 0:227c21cd26be | 254 | for(t = 21 ; t < paneX[1] ; t++) { |
| Rhyme | 0:227c21cd26be | 255 | data[0] = xoffset + (signalHeight * clip((1.0 + acc->getAccX()))) ; |
| Rhyme | 0:227c21cd26be | 256 | data[1] = yoffset + (signalHeight * clip((1.0 + acc->getAccY()))) ; |
| Rhyme | 0:227c21cd26be | 257 | data[2] = zoffset + (signalHeight * clip((1.0 + acc->getAccZ()))) ; |
| Rhyme | 0:227c21cd26be | 258 | TFT.line(pt, prev[0], t, data[0], Red) ; |
| Rhyme | 0:227c21cd26be | 259 | TFT.line(pt, prev[1], t, data[1], Green) ; |
| Rhyme | 0:227c21cd26be | 260 | TFT.line(pt, prev[2], t, data[2], Yellow) ; |
| Rhyme | 0:227c21cd26be | 261 | prev[0] = data[0] ; |
| Rhyme | 0:227c21cd26be | 262 | prev[1] = data[1] ; |
| Rhyme | 0:227c21cd26be | 263 | prev[2] = data[2] ; |
| Rhyme | 0:227c21cd26be | 264 | pt = t ; |
| Rhyme | 0:227c21cd26be | 265 | wait(0.01) ; |
| Rhyme | 0:227c21cd26be | 266 | } |
| Rhyme | 0:227c21cd26be | 267 | } |
| Rhyme | 0:227c21cd26be | 268 | |
| Rhyme | 0:227c21cd26be | 269 | void incPage(void) |
| Rhyme | 0:227c21cd26be | 270 | { |
| Rhyme | 0:227c21cd26be | 271 | page++ ; |
| Rhyme | 0:227c21cd26be | 272 | if (page >= numPage) { |
| Rhyme | 0:227c21cd26be | 273 | page = 0 ; |
| Rhyme | 0:227c21cd26be | 274 | } |
| Rhyme | 0:227c21cd26be | 275 | } |
| Rhyme | 0:227c21cd26be | 276 | |
| Rhyme | 0:227c21cd26be | 277 | void decPage(void) |
| Rhyme | 0:227c21cd26be | 278 | { |
| Rhyme | 0:227c21cd26be | 279 | page-- ; |
| Rhyme | 0:227c21cd26be | 280 | if (page < 0) { |
| Rhyme | 0:227c21cd26be | 281 | page = numPage - 1 ; |
| Rhyme | 0:227c21cd26be | 282 | } |
| Rhyme | 0:227c21cd26be | 283 | } |
| Rhyme | 0:227c21cd26be | 284 | |
| Rhyme | 0:227c21cd26be | 285 | int main() |
| Rhyme | 0:227c21cd26be | 286 | { |
| Rhyme | 0:227c21cd26be | 287 | uint16_t x, y, z ; |
| Rhyme | 0:227c21cd26be | 288 | int prevPage = 0 ; |
| Rhyme | 0:227c21cd26be | 289 | int touched = 0 ; |
| Rhyme | 0:227c21cd26be | 290 | |
| Rhyme | 0:227c21cd26be | 291 | |
| Rhyme | 0:227c21cd26be | 292 | |
| Rhyme | 0:227c21cd26be | 293 | initTFT() ; |
| Rhyme | 0:227c21cd26be | 294 | |
| Rhyme | 0:227c21cd26be | 295 | screen1() ; |
| Rhyme | 0:227c21cd26be | 296 | |
| Rhyme | 0:227c21cd26be | 297 | printf("Program Started!\n\r") ; |
| Rhyme | 0:227c21cd26be | 298 | |
| Rhyme | 0:227c21cd26be | 299 | acc = new MMA8451Q(PTE25, PTE24, MMA8451_I2C_ADDRESS) ; |
| Rhyme | 0:227c21cd26be | 300 | |
| Rhyme | 0:227c21cd26be | 301 | for(;;) { |
| Rhyme | 0:227c21cd26be | 302 | // printf("TFT width = %d, height = %d\n\r", TFT.width(), TFT.height()) ; |
| Rhyme | 0:227c21cd26be | 303 | switch(page) { |
| Rhyme | 0:227c21cd26be | 304 | case 0: |
| Rhyme | 0:227c21cd26be | 305 | if (prevPage != page) { |
| Rhyme | 0:227c21cd26be | 306 | screen1() ; |
| Rhyme | 0:227c21cd26be | 307 | } |
| Rhyme | 0:227c21cd26be | 308 | wait(1) ; |
| Rhyme | 0:227c21cd26be | 309 | break ; |
| Rhyme | 0:227c21cd26be | 310 | case 1: |
| Rhyme | 0:227c21cd26be | 311 | if (prevPage != page) { |
| Rhyme | 0:227c21cd26be | 312 | screen2() ; |
| Rhyme | 0:227c21cd26be | 313 | } |
| Rhyme | 0:227c21cd26be | 314 | wait(1) ; |
| Rhyme | 0:227c21cd26be | 315 | break ; |
| Rhyme | 0:227c21cd26be | 316 | case 2: |
| Rhyme | 0:227c21cd26be | 317 | if (prevPage != page) { |
| Rhyme | 0:227c21cd26be | 318 | TFT.background(Black) ; |
| Rhyme | 0:227c21cd26be | 319 | TFT.foreground(White) ; |
| Rhyme | 0:227c21cd26be | 320 | TFT.cls() ; |
| Rhyme | 0:227c21cd26be | 321 | } |
| Rhyme | 0:227c21cd26be | 322 | screen3() ; |
| Rhyme | 0:227c21cd26be | 323 | wait(2) ; |
| Rhyme | 0:227c21cd26be | 324 | break ; |
| Rhyme | 0:227c21cd26be | 325 | default: |
| Rhyme | 0:227c21cd26be | 326 | page = 0 ; |
| Rhyme | 0:227c21cd26be | 327 | break ; |
| Rhyme | 0:227c21cd26be | 328 | } |
| Rhyme | 0:227c21cd26be | 329 | prevPage = page ; |
| Rhyme | 0:227c21cd26be | 330 | printf("Screen Printed\n\r") ; |
| Rhyme | 0:227c21cd26be | 331 | |
| Rhyme | 0:227c21cd26be | 332 | x = 0 ; y = 0 ; z = 0 ; |
| Rhyme | 0:227c21cd26be | 333 | touched = TSC.getRAWPoint(&x, &y, &z) ; |
| Rhyme | 0:227c21cd26be | 334 | printf("touched = %d x = %d, y = %d, z = %d\n\r",touched, x,y,z) ; |
| Rhyme | 0:227c21cd26be | 335 | if ((x != 0)||(y != 0) || (z != 0)) { |
| Rhyme | 0:227c21cd26be | 336 | if (x < 1000) { // left |
| Rhyme | 0:227c21cd26be | 337 | decPage() ; |
| Rhyme | 0:227c21cd26be | 338 | } else if (x > 3000) { // right |
| Rhyme | 0:227c21cd26be | 339 | incPage() ; |
| Rhyme | 0:227c21cd26be | 340 | } |
| Rhyme | 0:227c21cd26be | 341 | } |
| Rhyme | 0:227c21cd26be | 342 | // wait(1) ; |
| Rhyme | 0:227c21cd26be | 343 | } |
| Rhyme | 0:227c21cd26be | 344 | } |