turns internal LEDs on and off

Dependencies:   DmTouch_UniGraphic UniGraphic mbed

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?

UserRevisionLine numberNew 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 }