turns internal LEDs on and off
Dependencies: DmTouch_UniGraphic UniGraphic mbed
main.cpp@1:699abdc72e3c, 2016-01-22 (annotated)
- Committer:
- jmiller18
- Date:
- Fri Jan 22 19:27:23 2016 +0000
- Revision:
- 1:699abdc72e3c
- Parent:
- 0:448f8ee9d3f1
finished mini project day 13
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jmiller18 | 0:448f8ee9d3f1 | 1 | #include "stdio.h" |
jmiller18 | 0:448f8ee9d3f1 | 2 | #include "mbed.h" |
jmiller18 | 0:448f8ee9d3f1 | 3 | #include "string" |
jmiller18 | 0:448f8ee9d3f1 | 4 | #include "ILI932x.h" |
jmiller18 | 0:448f8ee9d3f1 | 5 | #include "DmTouch.h" |
jmiller18 | 0:448f8ee9d3f1 | 6 | #include "Arial24x23.h" |
jmiller18 | 0:448f8ee9d3f1 | 7 | |
jmiller18 | 0:448f8ee9d3f1 | 8 | /* Configure the DisplayModule ILI9325 2.4" display for 8-bit bus communication |
jmiller18 | 0:448f8ee9d3f1 | 9 | |
jmiller18 | 0:448f8ee9d3f1 | 10 | mbed pin display pin |
jmiller18 | 0:448f8ee9d3f1 | 11 | -------- ----------- |
jmiller18 | 0:448f8ee9d3f1 | 12 | p15 CS (L15) |
jmiller18 | 0:448f8ee9d3f1 | 13 | p17 RST (L17) |
jmiller18 | 0:448f8ee9d3f1 | 14 | p16 RS (L4) |
jmiller18 | 0:448f8ee9d3f1 | 15 | p14 WR (L5) |
jmiller18 | 0:448f8ee9d3f1 | 16 | p20 RD (L6) |
jmiller18 | 0:448f8ee9d3f1 | 17 | |
jmiller18 | 0:448f8ee9d3f1 | 18 | p30 DB8 (L7) |
jmiller18 | 0:448f8ee9d3f1 | 19 | p29 DB9 (L8) |
jmiller18 | 0:448f8ee9d3f1 | 20 | p28 DB10 (L9) |
jmiller18 | 0:448f8ee9d3f1 | 21 | p27 DB11 (L10) |
jmiller18 | 0:448f8ee9d3f1 | 22 | p26 DB12 (L11) |
jmiller18 | 0:448f8ee9d3f1 | 23 | p25 DB13 (L12) |
jmiller18 | 0:448f8ee9d3f1 | 24 | p24 DB14 (L13) |
jmiller18 | 0:448f8ee9d3f1 | 25 | p23 DB15 (L14) |
jmiller18 | 0:448f8ee9d3f1 | 26 | |
jmiller18 | 0:448f8ee9d3f1 | 27 | p1 GND (L1) |
jmiller18 | 0:448f8ee9d3f1 | 28 | p40 Vin (L2) |
jmiller18 | 0:448f8ee9d3f1 | 29 | p40 LED Backlight (L19) |
jmiller18 | 0:448f8ee9d3f1 | 30 | |
jmiller18 | 0:448f8ee9d3f1 | 31 | Additional connections to add touch response |
jmiller18 | 0:448f8ee9d3f1 | 32 | |
jmiller18 | 0:448f8ee9d3f1 | 33 | mbed pin display pin |
jmiller18 | 0:448f8ee9d3f1 | 34 | -------- ----------- |
jmiller18 | 0:448f8ee9d3f1 | 35 | p5 T_MOSI (R11) |
jmiller18 | 0:448f8ee9d3f1 | 36 | p6 T_MISO (R13) |
jmiller18 | 0:448f8ee9d3f1 | 37 | p7 T_CLK (R9) |
jmiller18 | 0:448f8ee9d3f1 | 38 | p8 T_CS (R10) |
jmiller18 | 0:448f8ee9d3f1 | 39 | p9 T_IRQ (R14) |
jmiller18 | 0:448f8ee9d3f1 | 40 | */ |
jmiller18 | 0:448f8ee9d3f1 | 41 | |
jmiller18 | 0:448f8ee9d3f1 | 42 | PinName dataBus[]= {p30, p29, p28, p27, p26, p25, p24, p23}; |
jmiller18 | 0:448f8ee9d3f1 | 43 | 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 |
jmiller18 | 0:448f8ee9d3f1 | 44 | DmTouch touch(DmTouch::DM_TFT24_104, p5, p6, p7, p8, p9); |
jmiller18 | 1:699abdc72e3c | 45 | char orient=3; // orient horizontal is long axis |
jmiller18 | 1:699abdc72e3c | 46 | bool down, lastDown; // keeps track of whether or not the screen is/was pressed |
jmiller18 | 0:448f8ee9d3f1 | 47 | Timer t; |
jmiller18 | 0:448f8ee9d3f1 | 48 | DigitalOut led1(LED1); |
jmiller18 | 0:448f8ee9d3f1 | 49 | DigitalOut led2(LED2); |
jmiller18 | 0:448f8ee9d3f1 | 50 | DigitalOut led3(LED3); |
jmiller18 | 0:448f8ee9d3f1 | 51 | DigitalOut led4(LED4); |
jmiller18 | 1:699abdc72e3c | 52 | uint16_t tx,ty; // coordinates for touch screen |
jmiller18 | 0:448f8ee9d3f1 | 53 | |
jmiller18 | 0:448f8ee9d3f1 | 54 | int main(){ |
jmiller18 | 0:448f8ee9d3f1 | 55 | |
jmiller18 | 0:448f8ee9d3f1 | 56 | touch.init(); |
jmiller18 | 0:448f8ee9d3f1 | 57 | t.start(); |
jmiller18 | 0:448f8ee9d3f1 | 58 | myLCD.set_orientation(orient); |
jmiller18 | 0:448f8ee9d3f1 | 59 | myLCD.background(Black); // set background to Black |
jmiller18 | 0:448f8ee9d3f1 | 60 | myLCD.foreground(White); // set chars to White |
jmiller18 | 0:448f8ee9d3f1 | 61 | myLCD.fillcircle(80,60,30,Blue); //creating circles |
jmiller18 | 0:448f8ee9d3f1 | 62 | myLCD.fillcircle(240,60,30,Red); |
jmiller18 | 0:448f8ee9d3f1 | 63 | myLCD.fillcircle(80,180,30,Green); |
jmiller18 | 0:448f8ee9d3f1 | 64 | myLCD.fillcircle(240,180,30,Yellow); |
jmiller18 | 0:448f8ee9d3f1 | 65 | |
jmiller18 | 0:448f8ee9d3f1 | 66 | myLCD.set_font((unsigned char*) Arial24x23); |
jmiller18 | 0:448f8ee9d3f1 | 67 | myLCD.locate(70,50); |
jmiller18 | 0:448f8ee9d3f1 | 68 | myLCD.printf("1\t"); |
jmiller18 | 0:448f8ee9d3f1 | 69 | myLCD.locate(230,50); |
jmiller18 | 0:448f8ee9d3f1 | 70 | myLCD.printf("2\t"); |
jmiller18 | 0:448f8ee9d3f1 | 71 | myLCD.locate(70,170); |
jmiller18 | 0:448f8ee9d3f1 | 72 | myLCD.printf("3\t"); |
jmiller18 | 0:448f8ee9d3f1 | 73 | myLCD.locate(230,170); |
jmiller18 | 0:448f8ee9d3f1 | 74 | myLCD.printf("4\t"); |
jmiller18 | 0:448f8ee9d3f1 | 75 | |
jmiller18 | 0:448f8ee9d3f1 | 76 | // Touch screen demo |
jmiller18 | 0:448f8ee9d3f1 | 77 | |
jmiller18 | 1:699abdc72e3c | 78 | touch.setOrientation(orient); // orient LCD screen |
jmiller18 | 0:448f8ee9d3f1 | 79 | down = false; |
jmiller18 | 0:448f8ee9d3f1 | 80 | bool justDown = false; |
jmiller18 | 0:448f8ee9d3f1 | 81 | |
jmiller18 | 1:699abdc72e3c | 82 | t.reset(); // reset timer |
jmiller18 | 0:448f8ee9d3f1 | 83 | while (1) { |
jmiller18 | 0:448f8ee9d3f1 | 84 | |
jmiller18 | 1:699abdc72e3c | 85 | touch.readTouchData(tx, ty, down); // read if touch screen is pressed and where |
jmiller18 | 0:448f8ee9d3f1 | 86 | if (down){ |
jmiller18 | 1:699abdc72e3c | 87 | if(t.read_ms()>200){ // "debounce |
jmiller18 | 1:699abdc72e3c | 88 | if ((110>tx) && (tx>50) && (90>ty) && (ty>30)) // if touch screen is pressed in circle 1 |
jmiller18 | 1:699abdc72e3c | 89 | led1 = !led1; //toggle LED 1 |
jmiller18 | 1:699abdc72e3c | 90 | if ((270>tx) && (tx>210) && (90>ty) && (ty>30)) // if touch screen is pressed in circle 2 |
jmiller18 | 1:699abdc72e3c | 91 | led2 = !led2; //toggle LED 2 |
jmiller18 | 1:699abdc72e3c | 92 | if ((110>tx) && (tx>50) && (210>ty) && (ty>150)) // if touch screen is pressed in circle 3 |
jmiller18 | 1:699abdc72e3c | 93 | led3 = !led3; //toggle LED 3 |
jmiller18 | 1:699abdc72e3c | 94 | if ((270>tx) && (tx>210) && (210>ty) && (ty>150)) // if touch screen is pressed in circle 4 |
jmiller18 | 1:699abdc72e3c | 95 | led4 = !led4; //toggle LED 4 |
jmiller18 | 0:448f8ee9d3f1 | 96 | |
jmiller18 | 1:699abdc72e3c | 97 | t.reset(); // reset timer |
jmiller18 | 0:448f8ee9d3f1 | 98 | wait(0.04); |
jmiller18 | 0:448f8ee9d3f1 | 99 | |
jmiller18 | 0:448f8ee9d3f1 | 100 | } |
jmiller18 | 1:699abdc72e3c | 101 | else if (justDown) { // if it was just pressed but is no longer pressed |
jmiller18 | 0:448f8ee9d3f1 | 102 | |
jmiller18 | 1:699abdc72e3c | 103 | // necessary to prevent leds from blinking |
jmiller18 | 0:448f8ee9d3f1 | 104 | myLCD.locate(40, 20); |
jmiller18 | 0:448f8ee9d3f1 | 105 | myLCD.printf(" "); |
jmiller18 | 0:448f8ee9d3f1 | 106 | } |
jmiller18 | 1:699abdc72e3c | 107 | justDown = down; |
jmiller18 | 0:448f8ee9d3f1 | 108 | } |
jmiller18 | 0:448f8ee9d3f1 | 109 | } |
jmiller18 | 0:448f8ee9d3f1 | 110 | |
jmiller18 | 0:448f8ee9d3f1 | 111 | } |