Very simple program for FT800 graphic lib (using touchscreen - button, key and slider demo)

Dependencies:   FT800_2 mbed

There is the only screen for touch screen functionality demonstration

https://habrastorage.org/files/b11/0ee/7c8/b110ee7c8e5345f8aa0876ca693ddb7a

Hardware

For documentation on the FT800 library, please refer to the respective library pages.

Connection

MCU-board is connected to TFT-module via Break Out Board. You need 6 signals to connect: SCK, MOSI and MISO are connected to a SPI channel, SS is the chip select signal, PD work as powerdown and INT for interrupts from TFT to MCU.

/media/uploads/Ksenia/4_-22-.jpg

You have to connect VDD to BLVDD at Break Out Board if you use the board:

/media/uploads/Ksenia/4_-5-.jpg

Проект для статьи "Как перестать бояться и полюбить mbed.[Часть 4]" См. https://habrahabr.ru/users/uuuulala/topics/

Committer:
Ksenia
Date:
Fri Sep 23 12:39:15 2016 +0000
Revision:
0:0b7d575ba7c8
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ksenia 0:0b7d575ba7c8 1 #include "mbed.h"
Ksenia 0:0b7d575ba7c8 2 #include "FT_Platform.h"
Ksenia 0:0b7d575ba7c8 3
Ksenia 0:0b7d575ba7c8 4 // SLSTK3400A
Ksenia 0:0b7d575ba7c8 5 FT800 TFT (PE10, PE11, PE12, PE13, PB11, PD4); // mosi, miso, sck, ss, int, pd
Ksenia 0:0b7d575ba7c8 6 // WIZwiki-W7500P
Ksenia 0:0b7d575ba7c8 7 //FT800 TFT (D11, D12, D13, D10, D9, D8); // mosi, miso, sck, ss, int, pd
Ksenia 0:0b7d575ba7c8 8 // ATSAMD21-XPRO
Ksenia 0:0b7d575ba7c8 9 //FT800 TFT (PA18, PA16, PA19, PA17, PA20, PA21); // mosi, miso, sck, ss, int, pd
Ksenia 0:0b7d575ba7c8 10
Ksenia 0:0b7d575ba7c8 11 char sliderVal = 0;
Ksenia 0:0b7d575ba7c8 12
Ksenia 0:0b7d575ba7c8 13 /***********************************************************************************************************************/
Ksenia 0:0b7d575ba7c8 14 /* Construct the screen and downloasd it to the TFT */
Ksenia 0:0b7d575ba7c8 15 void drawScreen()
Ksenia 0:0b7d575ba7c8 16 {
Ksenia 0:0b7d575ba7c8 17 TFT.DLstart();
Ksenia 0:0b7d575ba7c8 18 TFT.DL(CLEAR_COLOR_RGB(255, 255, 255));
Ksenia 0:0b7d575ba7c8 19 TFT.DL(CLEAR(1, 1, 1));
Ksenia 0:0b7d575ba7c8 20
Ksenia 0:0b7d575ba7c8 21 TFT.FgColor(0xC1004D);
Ksenia 0:0b7d575ba7c8 22
Ksenia 0:0b7d575ba7c8 23 TFT.Keys(27, 127, 271, 41, 29, 0, "123");
Ksenia 0:0b7d575ba7c8 24
Ksenia 0:0b7d575ba7c8 25 TFT.DL(TAG(1));
Ksenia 0:0b7d575ba7c8 26 TFT.Button(31, 32, 148, 57, 27, OPT_FLAT, "Button");
Ksenia 0:0b7d575ba7c8 27
Ksenia 0:0b7d575ba7c8 28 TFT.DL(TAG(2));
Ksenia 0:0b7d575ba7c8 29 TFT.Slider(244, 45, 161, 17, 0, sliderVal, 255);
Ksenia 0:0b7d575ba7c8 30
Ksenia 0:0b7d575ba7c8 31 // track the touch screen
Ksenia 0:0b7d575ba7c8 32 char pressedButton = TFT.Rd8(REG_TOUCH_TAG);
Ksenia 0:0b7d575ba7c8 33 int pressedSlider = TFT.Rd32(REG_TRACKER);
Ksenia 0:0b7d575ba7c8 34 if (pressedButton == 2) {
Ksenia 0:0b7d575ba7c8 35 sliderVal = (pressedSlider >> 16) * 255 / 65536;
Ksenia 0:0b7d575ba7c8 36 }
Ksenia 0:0b7d575ba7c8 37
Ksenia 0:0b7d575ba7c8 38 TFT.DL(COLOR_RGB(0, 0, 0));
Ksenia 0:0b7d575ba7c8 39 TFT.Text(28, 213, 28, 0, "REG_TOUCH_TAG");
Ksenia 0:0b7d575ba7c8 40 TFT.Text(28, 237, 28, 0, "REG_TRACKER");
Ksenia 0:0b7d575ba7c8 41 TFT.Number(230, 237, 28, 0, pressedButton);
Ksenia 0:0b7d575ba7c8 42 TFT.Number(230, 213, 28, 0, sliderVal);
Ksenia 0:0b7d575ba7c8 43
Ksenia 0:0b7d575ba7c8 44 TFT.DL(DISPLAY());
Ksenia 0:0b7d575ba7c8 45 TFT.Swap();
Ksenia 0:0b7d575ba7c8 46 TFT.Flush_Co_Buffer();
Ksenia 0:0b7d575ba7c8 47 TFT.WaitCmdfifo_empty();
Ksenia 0:0b7d575ba7c8 48 }
Ksenia 0:0b7d575ba7c8 49
Ksenia 0:0b7d575ba7c8 50 /***********************************************************************************************************************/
Ksenia 0:0b7d575ba7c8 51 /* Main function */
Ksenia 0:0b7d575ba7c8 52 int main()
Ksenia 0:0b7d575ba7c8 53 {
Ksenia 0:0b7d575ba7c8 54 TFT.Calibrate();
Ksenia 0:0b7d575ba7c8 55 TFT.Track(244, 45, 161, 17, 2);
Ksenia 0:0b7d575ba7c8 56 while(1) {
Ksenia 0:0b7d575ba7c8 57 drawScreen();
Ksenia 0:0b7d575ba7c8 58 }
Ksenia 0:0b7d575ba7c8 59 }