Simple test program for FRDM-KL25Z and Adafruit 2.8" TFT display. For the touch sensor, only polling mode is implemented.
Dependencies: MMA8451Q SPI_STMPE610 TSI UniGraphic mbed
This program was to test Adafruit 2.8" TFT with touch with FRDM-KL25Z.
After download the binary to the FRDM-KL25Z and push the reset button ,
a simple welcome message will be displayed.
このプログラムは私が秋月で購入した Adafruit 2.8" TFT
http://akizukidenshi.com/catalog/g/gM-07747/
をFRDM-KL25Z で試すために書いたものです。
ダウンロード後にFRDM-KL25Zのリセットスイッチを押すと
最初の画面が表示されます。
Now using UniGraphic library.
And the problem of remaining previous screen is gone. ;-)
For a little bonus, TS_Eyes and Maze are also included.
UniGraphic ライブラリ版になり、画面にごみが残るバグが治りました。
おまけに TS_Eyes と Maze も追加してあります。 (^ ^)v
If you push and keep the right side of the screen,
the screen will advance to the page2, which is a simple graph sample.
ここで画面の右側をしばらく押していると、次のページに移行します。
このページでは、簡単なグラフを表示する例を描画しています。
And if you do the same again, the program advances to the page3,
which is a data display page of MMA8451Q accelerometer mounted on
the FRDM-KL25Z.
さらに画面の右側をしばらく押していると、次のページに移行します。
ここでは、FRDM-KL25Zに搭載されている MMA8451Q という3軸の
加速度センサの値を表示しています。
And this is the last page of this program, so far, so if you
try to advance page, it will return to the first page.
このページが最後のページになっているので、さらにページ送りをすると
最初のページに戻ります。
Revision 0:6b8a2d4c88b3, committed 2014-10-31
- Comitter:
- Rhyme
- Date:
- Fri Oct 31 01:16:01 2014 +0000
- Child:
- 1:39218b891bf3
- Commit message:
- First sample/test to be published
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MMA8451Q.lib Fri Oct 31 01:16:01 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/emilmont/code/MMA8451Q/#c4d879a39775
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SPI_STMPE610.cpp Fri Oct 31 01:16:01 2014 +0000
@@ -0,0 +1,223 @@
+/* mbed SPI_STMPE610.cpp to test adafruit 2.8" TFT LCD shiled w Touchscreen
+ * Copyright (c) 2014 Motoo Tanaka @ Design Methodology Lab
+ *
+ * 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 NONINFRINGEMENT. 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.
+ */
+ /*
+ * Note: Since the interrupt siganl of the shield was not connected
+ * to an interrupt pin on my frdm-kl25z, I just used polling mode.
+ */
+
+#include "SPI_STMPE610.h"
+
+/* some definitions here */
+#define REG_CHIP_ID 0x00
+#define REG_CHIP_ID_MSB 0x00
+#define REG_CHIP_ID_LSB 0x01
+
+#define REG_ID_VER 0x02
+#define REG_SYS_CTRL1 0x03
+#define REG_SYS_CTRL1_RESET 0x02
+
+#define REG_SYS_CTRL2 0x04
+#define REG_SPI_CFG 0x08
+#define REG_INT_CTRL 0x09
+#define REG_INT_CTRL_POL_HIGH 0x04
+#define REG_INT_CTRL_POL_LOW 0x00
+#define REG_INT_CTRL_EDGE 0x02
+#define REG_INT_CTRL_LEVEL 0x00
+#define REG_INT_CTRL_ENABLE 0x01
+#define REG_INT_CTRL_DISABLE 0x00
+
+#define REG_INT_EN 0x0A
+#define REG_INT_EN_TOUCHDET 0x01
+#define REG_INT_EN_FIFOTH 0x02
+#define REG_INT_EN_FIFOOF 0x04
+#define REG_INT_EN_FIFOFULL 0x08
+#define REG_INT_EN_FIFOEMPTY 0x10
+#define REG_INT_EN_ADC 0x40
+
+#define REG_INT_STA 0x0B
+#define REG_INT_STA_TOUCHDET 0x01
+
+#define REG_GPIO_EN 0x0C
+#define REG_GPIO_INT_STA 0x0D
+#define REG_ADC_INT_EN 0x0E
+#define REG_ADC_INT_STA 0x0F
+#define REG_GPIO_SET_PIN 0x10
+#define REG_GPIO_CLR_PIN 0x11
+#define REG_GPIO_MP_STA 0x12
+#define REG_GPIO_DIR 0x13
+#define REG_GPIO_ED 0x14
+#define REG_GPIO_RE 0x15
+#define REG_GPIO_FE 0x16
+#define REG_GPIO_AF 0x17
+#define REG_ADC_CTRL1 0x20
+#define REG_ADC_CTRL1_12BIT 0x08
+#define REG_ADC_CTRL1_10BIT 0x00
+
+#define REG_ADC_CTRL2 0x21
+#define REG_ADC_CTRL2_1_625MHZ 0x00
+#define REG_ADC_CTRL2_3_25MHZ 0x01
+#define REG_ADC_CTRL2_6_5MHZ 0x02
+
+#define REG_ADC_CAPT 0x22
+#define REG_ADC_DATA_CH0 0x30
+#define REG_ADC_DATA_CH1 0x32
+#define REG_ADC_DATA_CH4 0x38
+#define REG_ADC_DATA_CH5 0x3A
+#define REG_ADC_DATA_CH6 0x3C
+#define REG_ADC_DATA_CH7 0x3E
+#define REG_TSC_CTRL 0x40
+#define REG_TSC_CTRL_EN 0x01
+#define REG_TSC_CTRL_XYZ 0x00
+#define REG_TSC_CTRL_XY 0x02
+
+#define REG_TSC_CFG 0x41
+#define REG_TSC_CFG_1SAMPLE 0x00
+#define REG_TSC_CFG_2SAMPLE 0x40
+#define REG_TSC_CFG_4SAMPLE 0x80
+#define REG_TSC_CFG_8SAMPLE 0xC0
+#define REG_TSC_CFG_DELAY_10US 0x00
+#define REG_TSC_CFG_DELAY_50US 0x08
+#define REG_TSC_CFG_DELAY_100US 0x10
+#define REG_TSC_CFG_DELAY_500US 0x18
+#define REG_TSC_CFG_DELAY_1MS 0x20
+#define REG_TSC_CFG_DELAY_5MS 0x28
+#define REG_TSC_CFG_DELAY_10MS 0x30
+#define REG_TSC_CFG_DELAY_50MS 0x38
+#define REG_TSC_CFG_SETTLE_10US 0x00
+#define REG_TSC_CFG_SETTLE_100US 0x01
+#define REG_TSC_CFG_SETTLE_500US 0x02
+#define REG_TSC_CFG_SETTLE_1MS 0x03
+#define REG_TSC_CFG_SETTLE_5MS 0x04
+#define REG_TSC_CFG_SETTLE_10MS 0x05
+#define REG_TSC_CFG_SETTLE_50MS 0x06
+#define REG_TSC_CFG_SETTLE_100MS 0x07
+
+#define REG_WDW_TR_X 0x42
+#define REG_WDW_TR_Y 0x44
+#define REG_WDW_BL_X 0x46
+#define REG_WDW_BL_Y 0x48
+#define REG_FIFO_TH 0x4A
+#define REG_FIFO_STA 0x4B
+#define REG_FIFO_SIZE 0x4C
+#define REG_TSC_DATA_X 0x4D
+#define REG_TSC_DATA_Y 0x4F
+#define REG_TSC_DATA_Z 0x51
+#define REG_TSC_DATA_XYZ 0x52
+#define REG_TSC_FRACT_XYZ 0x56
+#define REG_TSC_DATA 0x57
+#define REG_TSC_I_DRIVE 0x58
+#define REG_TSC_SHIELD 0x59
+
+SPI_STMPE610::SPI_STMPE610(PinName mosi, PinName miso, PinName sclk, PinName cs) :
+ m_spi(mosi, miso, sclk), m_cs(cs) {
+ // activate the peripheral
+ m_cs = 0 ;
+ _mode = 0 ;
+ m_spi.frequency(1000000) ;
+ m_spi.format(8, 0) ;
+ write8(REG_SYS_CTRL1, REG_SYS_CTRL1_RESET) ;
+ wait(0.1) ;
+ write8(REG_SYS_CTRL2, 0x00) ; // turn on clocks
+ write8(REG_TSC_CFG,
+ REG_TSC_CFG_4SAMPLE
+ | REG_TSC_CFG_DELAY_100US
+ | REG_TSC_CFG_SETTLE_1MS ) ;
+
+ write8(REG_TSC_CTRL, REG_TSC_CTRL_XYZ | REG_TSC_CTRL_EN) ;
+ m_cs = 1 ;
+}
+
+SPI_STMPE610::~SPI_STMPE610() { }
+
+void SPI_STMPE610::readRegs(int addr, uint8_t * data, int len) {
+ m_cs = 0 ;
+
+ for (int i = 0 ; i < len ; i++ ) {
+ m_spi.write((addr+i)|0x80) ; // spacify address to read
+ data[i] = m_spi.write((addr+i)|0x80) ;
+ }
+ m_spi.write(0x00) ; // to terminate read mode
+ m_cs = 1 ;
+}
+
+void SPI_STMPE610::writeRegs(uint8_t * data, int len) {
+ m_cs = 0 ;
+ for (int i = 0 ; i < len ; i++ ) {
+ m_spi.write(data[i]) ;
+ }
+ m_cs = 1 ;
+}
+
+void SPI_STMPE610::write8(int addr, uint8_t data8)
+{
+ uint8_t data[2] ;
+ data[0] = addr ;
+ data[1] = data8 ;
+ writeRegs(data, 2) ;
+}
+
+uint8_t SPI_STMPE610::read8(int addr)
+{
+ uint8_t data[1] ;
+ readRegs(addr, data, 1) ;
+ return( data[0] ) ;
+}
+
+void SPI_STMPE610::write16(int addr, uint16_t data16)
+{
+ uint8_t data[3] ;
+ data[0] = addr ;
+ data[1] = (data16 >> 8) & 0xFF ;
+ data[2] = data16 & 0xFF ;
+ writeRegs(data, 3) ;
+}
+
+uint16_t SPI_STMPE610::read16(int addr)
+{
+ uint8_t data[2] ;
+ uint16_t value = 0 ;
+ readRegs(addr, data, 2) ;
+ value = (data[0] << 8) | data[1] ;
+ return( value ) ;
+}
+
+int SPI_STMPE610::getRAWPoint(uint16_t *x, uint16_t *y, uint16_t *z)
+{
+ uint8_t data[8], touched = 0 ;
+ data[0] = REG_TSC_CTRL ;
+ data[1] = REG_TSC_CTRL_EN ;
+ writeRegs(data, 2) ;
+ wait(0.01) ;
+
+ readRegs(REG_TSC_CTRL, data, 1) ;
+ touched = data[0] & 0x80 ;
+ if (touched) { //Touch Detected
+ readRegs(REG_TSC_DATA_X, data,5) ;
+ *x = (data[0] << 8) | data[1] ;
+ *y = (data[2] << 8) | data[3] ;
+ *z = data[4] ;
+ } else {
+ *x = 0 ;
+ *y = 0 ;
+ *z = 0 ;
+ }
+
+ data[0] = 0x4B ;
+ data[1] = 0x01 ;
+ writeRegs(data, 2) ; // clear FIFO
+
+ data[0] = REG_TSC_CTRL ;
+ data[1] = 0x00 ; // disable TSC
+ writeRegs(data, 2) ;
+
+ return( touched & (*x || *y || *z)) ;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SPI_STMPE610.h Fri Oct 31 01:16:01 2014 +0000
@@ -0,0 +1,58 @@
+/* mbed SPI_STMPE610.h to test adafruit 2.8" TFT LCD shiled w Touchscreen
+ * Copyright (c) 2014 Motoo Tanaka @ Design Methodology Lab
+ *
+ * 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 NONINFRINGEMENT. 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.
+ */
+
+#ifndef SPI_STMPE610_H
+#define SPI_STMPE610_H
+
+#include "mbed.h"
+
+/**
+ * STMPE610 Touch Sensor
+ *
+ *
+ */
+
+class SPI_STMPE610
+{
+public:
+ /**
+ * STMPE610 constructor
+ *
+ * @param mosi SPI_MOSI pin
+ * @param miso SPI_MISO pin
+ * @param sclk SPI_CLK pin
+ * @param cs SPI_CS pin
+ */
+ SPI_STMPE610(PinName mosi, PinName miso, PinName sclk, PinName cs) ;
+
+ ~SPI_STMPE610() ;
+
+ /*
+ * some member functions here (yet to be written)
+ */
+
+ SPI m_spi;
+ DigitalOut m_cs ;
+ int _mode ;
+
+ void readRegs(int addr, uint8_t *data, int len) ;
+ void writeRegs(uint8_t *data, int len) ;
+ uint8_t read8(int addr) ;
+ void write8(int addr, uint8_t data) ;
+ uint16_t read16(int addr) ;
+ void write16(int addr, uint16_t data) ;
+
+ int getRAWPoint(uint16_t *x, uint16_t *y, uint16_t *z) ;
+
+ private:
+} ;
+#endif /* SPI_STMPE610_H */
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SPI_TFT_ILI9341.lib Fri Oct 31 01:16:01 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/components/code/SPI_TFT_ILI9341/#61fa73a34834
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TFT_fonts.lib Fri Oct 31 01:16:01 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/dreschpe/code/TFT_fonts/#76774250fcec
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Fri Oct 31 01:16:01 2014 +0000
@@ -0,0 +1,297 @@
+/* mbed main.cpp to test adafruit 2.8" TFT LCD shiled w Touchscreen
+ * Copyright (c) 2014 Motoo Tanaka @ Design Methodology Lab
+ *
+ * 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 NONINFRINGEMENT. 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 "mbed.h"
+#include "MMA8451Q.h"
+#include <math.h>
+#include "SPI_TFT_ILI9341.h"
+#include "SPI_STMPE610.h"
+#include "Arial12x12.h"
+#include "Arial24x23.h"
+#include "Arial28x28.h"
+#include "font_big.h"
+
+
+#define PIN_XP PTB3
+#define PIN_XM PTB1
+#define PIN_YP PTB2
+#define PIN_YM PTB0
+#define PIN_MOSI PTD2
+#define PIN_MISO PTD3
+#define PIN_SCLK PTD1
+#define PIN_CS_TFT PTD0
+#define PIN_DC_TFT PTD5
+#define PIN_BL_TFT PTC9
+#define PIN_CS_SD PTA4
+#define PIN_CS_TSC PTA13
+#define PIN_TSC_INTR PTC9
+
+#define MMA8451_I2C_ADDRESS (0x1d<<1)
+MMA8451Q *acc = 0 ;
+
+// SPI_TFT_ILI9341(PinName mosi, PinName miso, PinName sclk, PinName cs, PinName reset, PinName dc, const char* name ="TFT");
+SPI_TFT_ILI9341 TFT(PIN_MOSI, PIN_MISO, PIN_SCLK, PIN_CS_TFT, PIN_BL_TFT, PIN_DC_TFT) ;
+SPI_STMPE610 TSC(PIN_MOSI, PIN_MISO, PIN_SCLK, PIN_CS_TSC) ;
+
+DigitalOut backlight(PTA12) ;
+DigitalIn pinD7(PTC9) ;
+
+int page = 0 ;
+int numPage = 3 ;
+
+void initTFT(void)
+{
+ //Configure the display driver
+ TFT.background(Black);
+ TFT.foreground(White);
+ wait(0.01) ;
+ TFT.cls();
+}
+
+void screen1(void) // Welcome Screen
+{
+ backlight = 0 ;
+ TFT.background(White) ;
+ TFT.cls() ;
+
+ wait(0.1) ;
+ TFT.set_font((unsigned char*) Arial24x23);
+ TFT.foreground(Red) ;
+ TFT.locate(80, 40) ;
+ TFT.printf("MBED") ;
+ TFT.foreground(Blue);
+ TFT.locate(60, 80) ;
+ TFT.printf("2.8\"TFT") ;
+ TFT.locate(40, 120) ;
+ TFT.printf("with touch") ;
+ TFT.foreground(Black);
+ TFT.set_font((unsigned char*) Arial12x12);
+ TFT.foreground(Blue) ;
+ TFT.locate(10, 180) ;
+ TFT.printf("This program is running on") ;
+ TFT.locate(10, 200) ;
+ TFT.printf("freescale FRDM-KL25Z with") ;
+ TFT.locate(10, 220) ;
+ TFT.printf("a program developed on mbed") ;
+ TFT.foreground(Green) ;
+ TFT.locate(10, 260) ;
+ TFT.printf("To advance demo page, touch") ;
+ TFT.locate(10, 280) ;
+ TFT.printf("and hold right side of screen") ;
+ TFT.locate(10, 300) ;
+ TFT.printf("until the next screen starts") ;
+ backlight = 1 ;
+}
+
+void screen2(void) // Graphics
+{
+ //Draw some graphics
+ int i, x[2], y[2] ;
+ backlight = 0 ;
+
+ TFT.background(Black);
+ TFT.foreground(White);
+ TFT.cls() ;
+ TFT.set_font((unsigned char*) Arial12x12);
+ TFT.locate(90,0);
+ TFT.printf("Graphics");
+
+ x[0] = 25 ; x[1] = 224 ;
+ y[0] = 20 ; y[1] = 219 ;
+ for (i = 20 ; i < 220 ; i += 10) {
+ TFT.line(i+5, y[0], i+5, y[1], Blue) ;
+ TFT.line(x[0], i, x[1], i, Blue) ;
+ }
+ TFT.line(125, y[0], 125, y[1], Green) ;
+ TFT.line(x[0], 120, x[1], 120, Green) ;
+ TFT.rect(x[0],y[0], x[1], y[1], Green) ;
+ TFT.locate(10, 20) ;
+ TFT.printf("V") ;
+ TFT.locate(0, 115) ;
+ TFT.printf("0.0") ;
+ TFT.locate(115, 225) ;
+ TFT.printf("0.0") ;
+ TFT.locate(215, 225) ;
+ TFT.printf("T") ;
+
+ double s;
+ for (int i = x[0]; i < 225; i++) {
+ s = 40 * sin((long double)i / 20);
+ TFT.pixel(i, 120 + (int)s, White);
+ }
+
+ TFT.fillrect(10, 240, 229, 309, White) ;
+ TFT.rect(10, 240, 229, 309, Red) ;
+ TFT.rect(11, 241, 228, 308, Red) ;
+
+ TFT.background(White) ;
+ TFT.foreground(Black) ;
+ TFT.locate(20, 250) ;
+ TFT.printf("With QVGA resolution") ;
+ TFT.locate(20, 270) ;
+ TFT.printf("simple graphics drawing") ;
+ TFT.locate(20, 290) ;
+ TFT.printf("capability is provided") ;
+ backlight = 1 ;
+}
+
+double clip(double src)
+{
+ double value ;
+ value = src ;
+ if (value < 0.0) {
+ value = 0.0 ;
+ } else if (value > 2.0) {
+ value = 2.0 ;
+ }
+ return( value ) ;
+}
+
+void screen3(void)
+{
+ int t = 0 ;
+ int pt = 0 ; // previous t
+ int i, x, y ;
+ unsigned int data[3] ; // for x, y, z
+ unsigned int prev[3] ;
+ unsigned short signalHeight = 39 ;
+ unsigned short xoffset = 30 ;
+ unsigned short yoffset = 120 ;
+ unsigned short zoffset = 210 ;
+ unsigned short paneX[2] = {20, 235} ;
+ unsigned short paneH = 81 ;
+
+ backlight = 0 ;
+ TFT.background(Black) ;
+ TFT.foreground(White) ;
+// TFT.cls() ;
+
+
+ TFT.fillrect(paneX[0], xoffset, paneX[1], xoffset+paneH, Black) ;
+ TFT.fillrect(paneX[0], yoffset, paneX[1], yoffset+paneH, Black) ;
+ TFT.fillrect(paneX[0], zoffset, paneX[1], zoffset+paneH, Black) ;
+ TFT.fillrect(paneX[0], xoffset, paneX[1], xoffset+paneH, Black) ;
+ for (i = 0 ; i < 10 ; i++ ) {
+ y = i * 8 ;
+ TFT.line(paneX[0], xoffset + y, paneX[1], xoffset + y, Blue) ;
+ TFT.line(paneX[0], yoffset + y, paneX[1], yoffset + y, Blue) ;
+ TFT.line(paneX[0], zoffset + y, paneX[1], zoffset + y, Blue) ;
+ }
+ for (x = 30 ; x < paneX[1] ; x += 10 ) {
+ TFT.line(x, xoffset, x, xoffset+paneH, Blue) ;
+ TFT.line(x, yoffset, x, yoffset+paneH, Blue) ;
+ TFT.line(x, zoffset, x, zoffset+paneH, Blue) ;
+ }
+ TFT.rect(paneX[0], xoffset, paneX[1], xoffset+paneH, White) ;
+ TFT.rect(paneX[0], yoffset, paneX[1], yoffset+paneH, White) ;
+ TFT.rect(paneX[0], zoffset, paneX[1], zoffset+paneH, White) ;
+ TFT.set_font((unsigned char*) Arial12x12);
+ TFT.locate(5, xoffset+30) ;
+ TFT.printf("X") ;
+ TFT.locate(5, yoffset+30) ;
+ TFT.printf("Y") ;
+ TFT.locate(5, zoffset+30) ;
+ TFT.printf("Z") ;
+ TFT.locate(50, 10) ;
+ TFT.printf("Xtrinsic Accelerometer") ;
+ TFT.locate(90, 300) ;
+ TFT.printf("MMA8451Q") ;
+
+ prev[0] = xoffset + (signalHeight * clip((1.0 + acc->getAccX()))) ;
+ prev[1] = yoffset + (signalHeight * clip((1.0 + acc->getAccY()))) ;
+ prev[2] = zoffset + (signalHeight * clip((1.0 + acc->getAccZ()))) ;
+ pt = paneX[0] ;
+ backlight = 1 ;
+ for(t = 21 ; t < paneX[1] ; t++) {
+ data[0] = xoffset + (signalHeight * clip((1.0 + acc->getAccX()))) ;
+ data[1] = yoffset + (signalHeight * clip((1.0 + acc->getAccY()))) ;
+ data[2] = zoffset + (signalHeight * clip((1.0 + acc->getAccZ()))) ;
+ TFT.line(pt, prev[0], t, data[0], Red) ;
+ TFT.line(pt, prev[1], t, data[1], Green) ;
+ TFT.line(pt, prev[2], t, data[2], Yellow) ;
+ prev[0] = data[0] ;
+ prev[1] = data[1] ;
+ prev[2] = data[2] ;
+ pt = t ;
+ wait(0.01) ;
+ }
+}
+
+void incPage(void)
+{
+ page++ ;
+ if (page >= numPage) {
+ page = 0 ;
+ }
+}
+
+void decPage(void)
+{
+ page-- ;
+ if (page < 0) {
+ page = numPage - 1 ;
+ }
+}
+
+int main()
+{
+ uint16_t x, y, z ;
+ int prevPage = 0 ;
+
+ acc = new MMA8451Q(PTE25, PTE24, MMA8451_I2C_ADDRESS) ;
+
+ initTFT() ;
+
+ screen1() ;
+
+ printf("Program Started!\n\r") ;
+
+ for(;;) {
+// printf("TFT width = %d, height = %d\n\r", TFT.width(), TFT.height()) ;
+ switch(page) {
+ case 0:
+ if (prevPage != page) {
+ screen1() ;
+ }
+ break ;
+ case 1:
+ if (prevPage != page) {
+ screen2() ;
+ }
+ break ;
+ case 2:
+ if (prevPage != page) {
+ TFT.background(Black) ;
+ TFT.foreground(White) ;
+ TFT.cls() ;
+ }
+ screen3() ;
+ wait(2) ;
+ break ;
+ default:
+ page = 0 ;
+ break ;
+ }
+ prevPage = page ;
+ printf("Screen Printed\n\r") ;
+
+ TSC.getRAWPoint(&x, &y, &z) ;
+ if ((x != 0)||(y != 0) || (z != 0)) {
+ if (x < 1000) { // left
+ decPage() ;
+ } else if (x > 3000) { // right
+ incPage() ;
+ }
+ }
+// wait(1) ;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Oct 31 01:16:01 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/031413cf7a89 \ No newline at end of file