Program to demonstrate the features of the DisplayModule DM-TFT24-104 display using the UniGraphics library.

Dependencies:   DmTouch_UniGraphic UniGraphic mbed

Fork of DisplayModule24_demo by Whitworth-EN173-2016

Committer:
bentogami
Date:
Wed Jan 27 00:09:39 2016 +0000
Revision:
13:3489b8566dbc
Parent:
10:ca16a309a737
Current working code (v 1.0)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Geremia 0:2ccd65a72ab8 1 #include "stdio.h"
Geremia 0:2ccd65a72ab8 2 #include "mbed.h"
Geremia 0:2ccd65a72ab8 3 #include "string"
JLarkin 7:1dbfaba27e99 4 #include "ILI932x.h"
JLarkin 9:8917e707fe8e 5 #include "DmTouch.h"
JLarkin 9:8917e707fe8e 6
JLarkin 6:6b6e93790b4c 7
Geremia 0:2ccd65a72ab8 8 #include "Arial12x12.h"
Geremia 0:2ccd65a72ab8 9 #include "Arial24x23.h"
Geremia 4:818956c30cae 10 #include "pavement_48x34.h"
Geremia 0:2ccd65a72ab8 11
Geremia 0:2ccd65a72ab8 12 Serial pc(USBTX, USBRX);
Geremia 0:2ccd65a72ab8 13
JLarkin 7:1dbfaba27e99 14 /* Configure the DisplayModule ILI9325 2.4" display for 8-bit bus communication
JLarkin 6:6b6e93790b4c 15
JLarkin 6:6b6e93790b4c 16 mbed pin display pin
JLarkin 6:6b6e93790b4c 17 -------- -----------
JLarkin 7:1dbfaba27e99 18 p15 CS (L15)
JLarkin 7:1dbfaba27e99 19 p17 RST (L17)
JLarkin 7:1dbfaba27e99 20 p16 RS (L4)
JLarkin 7:1dbfaba27e99 21 p14 WR (L5)
JLarkin 7:1dbfaba27e99 22 p20 RD (L6)
JLarkin 6:6b6e93790b4c 23
JLarkin 7:1dbfaba27e99 24 p30 DB8 (L7)
JLarkin 7:1dbfaba27e99 25 p29 DB9 (L8)
JLarkin 7:1dbfaba27e99 26 p28 DB10 (L9)
JLarkin 7:1dbfaba27e99 27 p27 DB11 (L10)
JLarkin 7:1dbfaba27e99 28 p26 DB12 (L11)
JLarkin 7:1dbfaba27e99 29 p25 DB13 (L12)
JLarkin 7:1dbfaba27e99 30 p24 DB14 (L13)
JLarkin 7:1dbfaba27e99 31 p23 DB15 (L14)
JLarkin 6:6b6e93790b4c 32
JLarkin 7:1dbfaba27e99 33 p1 GND (L1)
JLarkin 7:1dbfaba27e99 34 p40 Vin (L2)
JLarkin 9:8917e707fe8e 35 p40 LED Backlight (L19)
JLarkin 6:6b6e93790b4c 36 */
JLarkin 7:1dbfaba27e99 37 PinName dataBus[]= {p30, p29, p28, p27, p26, p25, p24, p23};
JLarkin 7:1dbfaba27e99 38 ILI932x myLCD(BUS_8, dataBus, p15, p17, p16, p14, p20, "myLCD", 240, 320); // Bus 8 bit, bus pin array, CS, RST, DC, WR, RD, name, xpixels, ypixels
Geremia 0:2ccd65a72ab8 39
JLarkin 9:8917e707fe8e 40 /* Additional connections to add touch response
JLarkin 9:8917e707fe8e 41
JLarkin 9:8917e707fe8e 42 mbed pin display pin
JLarkin 9:8917e707fe8e 43 -------- -----------
JLarkin 9:8917e707fe8e 44 p5 T_MOSI (R11)
JLarkin 9:8917e707fe8e 45 p6 T_MISO (R13)
JLarkin 9:8917e707fe8e 46 p7 T_CLK (R9)
JLarkin 9:8917e707fe8e 47 p8 T_CS (R10)
bentogami 13:3489b8566dbc 48
JLarkin 9:8917e707fe8e 49 p9 T_IRQ (R14)
JLarkin 9:8917e707fe8e 50 */
JLarkin 9:8917e707fe8e 51 DmTouch touch(DmTouch::DM_TFT24_104, p5, p6, p7, p8, p9);
JLarkin 9:8917e707fe8e 52
JLarkin 10:ca16a309a737 53 char orient=3;
JLarkin 7:1dbfaba27e99 54 int x,y;
JLarkin 9:8917e707fe8e 55 uint16_t tx, ty;
bentogami 13:3489b8566dbc 56 Timer t, debounce, f;
bentogami 13:3489b8566dbc 57 DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4);
bentogami 13:3489b8566dbc 58 DigitalOut flash(p21);
bentogami 13:3489b8566dbc 59
bentogami 13:3489b8566dbc 60 void flashLight();
JLarkin 7:1dbfaba27e99 61
Geremia 0:2ccd65a72ab8 62 int main()
Geremia 0:2ccd65a72ab8 63 {
bentogami 13:3489b8566dbc 64 bool down, lastDown, flashing;
bentogami 13:3489b8566dbc 65 flash = 1;
JLarkin 9:8917e707fe8e 66 touch.init();
JLarkin 9:8917e707fe8e 67 t.start();
bentogami 13:3489b8566dbc 68 debounce.start();
bentogami 13:3489b8566dbc 69 f.start();
Geremia 4:818956c30cae 70 myLCD.set_orientation(orient);
JLarkin 6:6b6e93790b4c 71 myLCD.set_font((unsigned char*) Arial24x23);
JLarkin 9:8917e707fe8e 72 myLCD.background(Blue); // set background to Blue
JLarkin 9:8917e707fe8e 73 myLCD.foreground(White); // set chars to White
Geremia 4:818956c30cae 74 myLCD.cls(); // clear the screen
JLarkin 6:6b6e93790b4c 75 myLCD.locate(10,30);
bentogami 13:3489b8566dbc 76 myLCD.printf("Touchscreen Demo\r\n");
bentogami 13:3489b8566dbc 77 wait(1);
bentogami 13:3489b8566dbc 78 myLCD.cls();
JLarkin 6:6b6e93790b4c 79 while(1)
JLarkin 6:6b6e93790b4c 80 {
bentogami 13:3489b8566dbc 81
bentogami 13:3489b8566dbc 82 myLCD.background(White); // set background to White
bentogami 13:3489b8566dbc 83 myLCD.foreground(Black); // set chars to Black
bentogami 13:3489b8566dbc 84 myLCD.cls(); // clear the screen
JLarkin 6:6b6e93790b4c 85
bentogami 13:3489b8566dbc 86 // Rectangles
bentogami 13:3489b8566dbc 87 myLCD.rect(40, 20, 120, 140, Green); // left upper
bentogami 13:3489b8566dbc 88 myLCD.rect(200, 20, 280, 140, Red); // right upper
bentogami 13:3489b8566dbc 89 myLCD.rect(40, 160, 280, 220, Blue); // lower center
bentogami 13:3489b8566dbc 90 myLCD.locate(70, 70);
bentogami 13:3489b8566dbc 91 myLCD.printf("<");
bentogami 13:3489b8566dbc 92 myLCD.locate(230, 70);
bentogami 13:3489b8566dbc 93 myLCD.printf(">");
bentogami 13:3489b8566dbc 94 myLCD.locate(70, 180);
bentogami 13:3489b8566dbc 95 myLCD.printf("Send Request");
JLarkin 6:6b6e93790b4c 96
JLarkin 9:8917e707fe8e 97 touch.setOrientation(orient);
JLarkin 9:8917e707fe8e 98 down = false;
JLarkin 9:8917e707fe8e 99 lastDown = false;
bentogami 13:3489b8566dbc 100 flashing = false;
JLarkin 9:8917e707fe8e 101 tx = (uint16_t)0;
JLarkin 9:8917e707fe8e 102 ty = (uint16_t)0;
bentogami 13:3489b8566dbc 103
bentogami 13:3489b8566dbc 104 t.reset();
bentogami 13:3489b8566dbc 105
bentogami 13:3489b8566dbc 106 // Code for rectangles
bentogami 13:3489b8566dbc 107 while(1) {
JLarkin 9:8917e707fe8e 108 touch.readTouchData(tx, ty, down);
bentogami 13:3489b8566dbc 109 if (down && debounce.read_ms() > 200) {
bentogami 13:3489b8566dbc 110 if (tx > 40 && tx < 120 && ty > 20 && ty < 140) { led1 = !led1; debounce.reset();}
bentogami 13:3489b8566dbc 111 if (tx > 200 && tx < 280 && ty > 20 && ty < 140) { led2 = !led2; debounce.reset();}
bentogami 13:3489b8566dbc 112 if (tx > 40 && tx < 280 && ty > 160 && ty < 220) {
bentogami 13:3489b8566dbc 113 flash = 1;
bentogami 13:3489b8566dbc 114 flashing = !flashing;
bentogami 13:3489b8566dbc 115 myLCD.fillrect(40, 160, 280, 220, Blue);
bentogami 13:3489b8566dbc 116 myLCD.locate(70, 180);
bentogami 13:3489b8566dbc 117 myLCD.printf("Request Sent");
bentogami 13:3489b8566dbc 118 debounce.reset();
bentogami 13:3489b8566dbc 119 }
JLarkin 9:8917e707fe8e 120 }
bentogami 13:3489b8566dbc 121 else if (lastDown) {
bentogami 13:3489b8566dbc 122 myLCD.circle(0,0,1, Black);
bentogami 13:3489b8566dbc 123 if (!flashing) {
bentogami 13:3489b8566dbc 124 myLCD.fillrect(40, 160, 280, 220, White);
bentogami 13:3489b8566dbc 125 myLCD.rect(40, 160, 280, 220, Blue);
bentogami 13:3489b8566dbc 126 myLCD.locate(70, 180);
bentogami 13:3489b8566dbc 127 myLCD.printf("Send Request");
bentogami 13:3489b8566dbc 128 }
bentogami 13:3489b8566dbc 129 }
bentogami 13:3489b8566dbc 130 if ((f.read() > 0.2) && flashing){
bentogami 13:3489b8566dbc 131 flash = !flash;
bentogami 13:3489b8566dbc 132 f.reset();
bentogami 13:3489b8566dbc 133 }
JLarkin 9:8917e707fe8e 134 lastDown = down;
bentogami 13:3489b8566dbc 135 }
bentogami 13:3489b8566dbc 136 }
bentogami 13:3489b8566dbc 137 }