A demonstration of how to drive the onboard LEDS on the LPC1768 via a 4.3 inch touch-screen display from 4D Systems

Dependencies:   mbed

A quick example program to show how to use the mbed LPC1768 with the 4D systems 4.3 inch capacitive touch screen.

The display has four vitual winButton objects which when touched change the state of four virtual led (userLed) objects. The winButton objects on change of state send a serial message out to the Mbed serial port on pins 9 and 10.

This message tells the mbed to drive actual corresponding virtual and actual LEDS 1 to 4 appropriately.

/media/uploads/langster1980/2014-01-29_23.39.14.jpg

for more information people can check out my blog post on the subject here:

http://langster1980.blogspot.co.uk/2014/01/mbed-controlling-4d-systems-ulcd-43pct.html

Committer:
langster1980
Date:
Wed Jan 29 23:04:22 2014 +0000
Revision:
0:e1ef1c6666f3
1st Version of a tutorial on how to drive the onboard LEDS on an LPC1768 via a 4D systems 4.3 inch touch screen display

Who changed what in which revision?

UserRevisionLine numberNew contents of line
langster1980 0:e1ef1c6666f3 1 /* A quick example program to show
langster1980 0:e1ef1c6666f3 2 how to use the Mbed LPC1768 with the
langster1980 0:e1ef1c6666f3 3 4D systems 4.3 inch capacitive touch
langster1980 0:e1ef1c6666f3 4 screen.
langster1980 0:e1ef1c6666f3 5
langster1980 0:e1ef1c6666f3 6 The display has four vitual winButton objects
langster1980 0:e1ef1c6666f3 7 which when touched change the state of four
langster1980 0:e1ef1c6666f3 8 virtual led (userLed) objects. The led objects on
langster1980 0:e1ef1c6666f3 9 change of state send a serial message out to
langster1980 0:e1ef1c6666f3 10 the Mbed serial port on pins 9 and 10.
langster1980 0:e1ef1c6666f3 11
langster1980 0:e1ef1c6666f3 12 This message tells the Mbed to drive
langster1980 0:e1ef1c6666f3 13 actual corresponding LEDS
langster1980 0:e1ef1c6666f3 14 1 to 4 appropriately
langster1980 0:e1ef1c6666f3 15
langster1980 0:e1ef1c6666f3 16 */
langster1980 0:e1ef1c6666f3 17
langster1980 0:e1ef1c6666f3 18 #include "mbed.h"
langster1980 0:e1ef1c6666f3 19 #include "mbed_genie.h"
langster1980 0:e1ef1c6666f3 20
langster1980 0:e1ef1c6666f3 21 DigitalOut led1(LED1);
langster1980 0:e1ef1c6666f3 22 DigitalOut led2(LED2);
langster1980 0:e1ef1c6666f3 23 DigitalOut led3(LED3);
langster1980 0:e1ef1c6666f3 24 DigitalOut led4(LED4);
langster1980 0:e1ef1c6666f3 25
langster1980 0:e1ef1c6666f3 26 bool winButton0Status = false; //holds the "status" of winButton0 object.
langster1980 0:e1ef1c6666f3 27 bool userLed0Status = false; //hold the "status" of userLed0 object.
langster1980 0:e1ef1c6666f3 28
langster1980 0:e1ef1c6666f3 29 bool winButton1Status = false; //holds the "status" of winButton1 object.
langster1980 0:e1ef1c6666f3 30 bool userLed1Status = false; //hold the "status" of userLed1 object.
langster1980 0:e1ef1c6666f3 31
langster1980 0:e1ef1c6666f3 32 bool winButton2Status = false; //holds the "status" of winButton2 object.
langster1980 0:e1ef1c6666f3 33 bool userLed2Status = false; //hold the "status" of userLed2 object.
langster1980 0:e1ef1c6666f3 34
langster1980 0:e1ef1c6666f3 35 bool winButton3Status = false; //holds the "status" of winButton3 object.
langster1980 0:e1ef1c6666f3 36 bool userLed3Status = false; //hold the "status" of userLed3 object.
langster1980 0:e1ef1c6666f3 37
langster1980 0:e1ef1c6666f3 38
langster1980 0:e1ef1c6666f3 39 //Event handler for the 4d Systems display
langster1980 0:e1ef1c6666f3 40 void myGenieEventHandler(void)
langster1980 0:e1ef1c6666f3 41 {
langster1980 0:e1ef1c6666f3 42 genieFrame Event;
langster1980 0:e1ef1c6666f3 43 genieDequeueEvent(&Event);
langster1980 0:e1ef1c6666f3 44
langster1980 0:e1ef1c6666f3 45 if(Event.reportObject.cmd == GENIE_REPORT_EVENT) {
langster1980 0:e1ef1c6666f3 46
langster1980 0:e1ef1c6666f3 47 // If the Reported Message was from winbutton0 and userLed0 is off
langster1980 0:e1ef1c6666f3 48
langster1980 0:e1ef1c6666f3 49 if (Event.reportObject.object == GENIE_OBJ_WINBUTTON) {
langster1980 0:e1ef1c6666f3 50 if ((Event.reportObject.index == 0) && (userLed0Status==false)) {
langster1980 0:e1ef1c6666f3 51 printf("LED1 High \r\n");
langster1980 0:e1ef1c6666f3 52 wait(0.1);
langster1980 0:e1ef1c6666f3 53 winButton0Status=true;
langster1980 0:e1ef1c6666f3 54 }
langster1980 0:e1ef1c6666f3 55 }
langster1980 0:e1ef1c6666f3 56
langster1980 0:e1ef1c6666f3 57 // If the Reported Message was from winbutton0 and userLed0 is on
langster1980 0:e1ef1c6666f3 58
langster1980 0:e1ef1c6666f3 59 if (Event.reportObject.object == GENIE_OBJ_WINBUTTON) {
langster1980 0:e1ef1c6666f3 60 if ((Event.reportObject.index == 0) && (userLed0Status == true)) {
langster1980 0:e1ef1c6666f3 61 printf("LED1 Low \r\n");
langster1980 0:e1ef1c6666f3 62 wait(0.1);
langster1980 0:e1ef1c6666f3 63 winButton0Status=false;
langster1980 0:e1ef1c6666f3 64 }
langster1980 0:e1ef1c6666f3 65 }
langster1980 0:e1ef1c6666f3 66
langster1980 0:e1ef1c6666f3 67 // If the Reported Message was from winbutton1 and userLed1 is off
langster1980 0:e1ef1c6666f3 68
langster1980 0:e1ef1c6666f3 69 if (Event.reportObject.object == GENIE_OBJ_WINBUTTON) {
langster1980 0:e1ef1c6666f3 70 if ((Event.reportObject.index == 1) && (userLed1Status==false)) {
langster1980 0:e1ef1c6666f3 71 printf("LED2 High \r\n");
langster1980 0:e1ef1c6666f3 72 wait(0.1);
langster1980 0:e1ef1c6666f3 73 winButton1Status=true;
langster1980 0:e1ef1c6666f3 74 }
langster1980 0:e1ef1c6666f3 75 }
langster1980 0:e1ef1c6666f3 76
langster1980 0:e1ef1c6666f3 77 // If the Reported Message was from winbutton1 and userLed1 is on
langster1980 0:e1ef1c6666f3 78
langster1980 0:e1ef1c6666f3 79 if (Event.reportObject.object == GENIE_OBJ_WINBUTTON) {
langster1980 0:e1ef1c6666f3 80 if ((Event.reportObject.index == 1) && (userLed1Status == true)) {
langster1980 0:e1ef1c6666f3 81 printf("LED2 Low \r\n");
langster1980 0:e1ef1c6666f3 82 wait(0.1);
langster1980 0:e1ef1c6666f3 83 winButton1Status=false;
langster1980 0:e1ef1c6666f3 84 }
langster1980 0:e1ef1c6666f3 85 }
langster1980 0:e1ef1c6666f3 86
langster1980 0:e1ef1c6666f3 87 // If the Reported Message was from winbutton2 and userLed2 is off
langster1980 0:e1ef1c6666f3 88
langster1980 0:e1ef1c6666f3 89 if (Event.reportObject.object == GENIE_OBJ_WINBUTTON) {
langster1980 0:e1ef1c6666f3 90 if ((Event.reportObject.index == 2) && (userLed2Status==false)) {
langster1980 0:e1ef1c6666f3 91 printf("LED High \r\n");
langster1980 0:e1ef1c6666f3 92 wait(0.1);
langster1980 0:e1ef1c6666f3 93 winButton2Status=true;
langster1980 0:e1ef1c6666f3 94 }
langster1980 0:e1ef1c6666f3 95 }
langster1980 0:e1ef1c6666f3 96
langster1980 0:e1ef1c6666f3 97 // If the Reported Message was from winbutton2 and userLed2 is on
langster1980 0:e1ef1c6666f3 98
langster1980 0:e1ef1c6666f3 99 if (Event.reportObject.object == GENIE_OBJ_WINBUTTON) {
langster1980 0:e1ef1c6666f3 100 if ((Event.reportObject.index == 2) && (userLed2Status == true)) {
langster1980 0:e1ef1c6666f3 101 printf("LED Low \r\n");
langster1980 0:e1ef1c6666f3 102 wait(0.1);
langster1980 0:e1ef1c6666f3 103 winButton2Status=false;
langster1980 0:e1ef1c6666f3 104 }
langster1980 0:e1ef1c6666f3 105 }
langster1980 0:e1ef1c6666f3 106
langster1980 0:e1ef1c6666f3 107 // If the Reported Message was from winbutton3 and userLed3 is off
langster1980 0:e1ef1c6666f3 108
langster1980 0:e1ef1c6666f3 109 if (Event.reportObject.object == GENIE_OBJ_WINBUTTON) {
langster1980 0:e1ef1c6666f3 110 if ((Event.reportObject.index == 3) && (userLed3Status==false)) {
langster1980 0:e1ef1c6666f3 111 printf("LED High \r\n");
langster1980 0:e1ef1c6666f3 112 wait(0.1);
langster1980 0:e1ef1c6666f3 113 winButton3Status=true;
langster1980 0:e1ef1c6666f3 114 }
langster1980 0:e1ef1c6666f3 115 }
langster1980 0:e1ef1c6666f3 116
langster1980 0:e1ef1c6666f3 117 // If the Reported Message was from winbutton3 and userLed3 is on
langster1980 0:e1ef1c6666f3 118
langster1980 0:e1ef1c6666f3 119 if (Event.reportObject.object == GENIE_OBJ_WINBUTTON) {
langster1980 0:e1ef1c6666f3 120 if ((Event.reportObject.index == 3) && (userLed3Status == true)) {
langster1980 0:e1ef1c6666f3 121 printf("LED Low \r\n");
langster1980 0:e1ef1c6666f3 122 wait(0.1);
langster1980 0:e1ef1c6666f3 123 winButton3Status=false;
langster1980 0:e1ef1c6666f3 124 }
langster1980 0:e1ef1c6666f3 125 }
langster1980 0:e1ef1c6666f3 126 }
langster1980 0:e1ef1c6666f3 127 }
langster1980 0:e1ef1c6666f3 128
langster1980 0:e1ef1c6666f3 129
langster1980 0:e1ef1c6666f3 130 int main()
langster1980 0:e1ef1c6666f3 131 {
langster1980 0:e1ef1c6666f3 132
langster1980 0:e1ef1c6666f3 133 SetupGenie();
langster1980 0:e1ef1c6666f3 134
langster1980 0:e1ef1c6666f3 135 genieAttachEventHandler(&myGenieEventHandler);
langster1980 0:e1ef1c6666f3 136
langster1980 0:e1ef1c6666f3 137 printf("Langsters's mbed Visi-Genie LED demo \r\n");
langster1980 0:e1ef1c6666f3 138
langster1980 0:e1ef1c6666f3 139 genieWriteContrast(15); //set screen contrast to full brightness
langster1980 0:e1ef1c6666f3 140
langster1980 0:e1ef1c6666f3 141 while(1) {
langster1980 0:e1ef1c6666f3 142
langster1980 0:e1ef1c6666f3 143 //check if winButton0 is High & set LED0 High
langster1980 0:e1ef1c6666f3 144
langster1980 0:e1ef1c6666f3 145 if (winButton0Status == true) {
langster1980 0:e1ef1c6666f3 146 printf("Button 0 in On State! \r\n"); //send button status message
langster1980 0:e1ef1c6666f3 147 genieWriteObject(GENIE_OBJ_USER_LED, 0x00, 1); // set virtual LED0 High
langster1980 0:e1ef1c6666f3 148 wait(0.1); // wait 100uS
langster1980 0:e1ef1c6666f3 149 led1 = 1; // set actual LED1 High
langster1980 0:e1ef1c6666f3 150 userLed0Status = true; // set userLed0Status High
langster1980 0:e1ef1c6666f3 151
langster1980 0:e1ef1c6666f3 152 }
langster1980 0:e1ef1c6666f3 153
langster1980 0:e1ef1c6666f3 154 //check if winButton0 is low & set LED low
langster1980 0:e1ef1c6666f3 155
langster1980 0:e1ef1c6666f3 156 else if (winButton0Status == false) {
langster1980 0:e1ef1c6666f3 157 printf("Button 0 in Off state! \r\n"); //send button status message
langster1980 0:e1ef1c6666f3 158 genieWriteObject(GENIE_OBJ_USER_LED, 0x00, 0); // set virtual LED0 Low
langster1980 0:e1ef1c6666f3 159 wait(0.1); // wait 100uS
langster1980 0:e1ef1c6666f3 160 led1 = 0; // set actual LED1 Low
langster1980 0:e1ef1c6666f3 161 userLed0Status = false; //set userLed0Status Low
langster1980 0:e1ef1c6666f3 162
langster1980 0:e1ef1c6666f3 163 }
langster1980 0:e1ef1c6666f3 164
langster1980 0:e1ef1c6666f3 165 //check if winButton1 is High & set LED High
langster1980 0:e1ef1c6666f3 166
langster1980 0:e1ef1c6666f3 167 if (winButton1Status == true) {
langster1980 0:e1ef1c6666f3 168 printf("Button 1 in On State! \r\n"); //send button status message
langster1980 0:e1ef1c6666f3 169 genieWriteObject(GENIE_OBJ_USER_LED, 0x01, 1); // set virtual LED0 High
langster1980 0:e1ef1c6666f3 170 wait(0.1); // wait 100uS
langster1980 0:e1ef1c6666f3 171 led2 = 1; // set actual LED2 High
langster1980 0:e1ef1c6666f3 172 userLed1Status = true; // set userLed1Status High
langster1980 0:e1ef1c6666f3 173
langster1980 0:e1ef1c6666f3 174 }
langster1980 0:e1ef1c6666f3 175
langster1980 0:e1ef1c6666f3 176 //check if winButton1 is low & set LED low
langster1980 0:e1ef1c6666f3 177
langster1980 0:e1ef1c6666f3 178 else if (winButton1Status == false) {
langster1980 0:e1ef1c6666f3 179 printf("Button 1 in Off state! \r\n"); //send button status message
langster1980 0:e1ef1c6666f3 180 genieWriteObject(GENIE_OBJ_USER_LED, 0x01, 0); // set virtual LED0 Low
langster1980 0:e1ef1c6666f3 181 wait(0.1); // wait 100uS
langster1980 0:e1ef1c6666f3 182 led2 = 0; // set actual LED1 Low
langster1980 0:e1ef1c6666f3 183 userLed1Status = false; //set userLed1Status Low
langster1980 0:e1ef1c6666f3 184
langster1980 0:e1ef1c6666f3 185 }
langster1980 0:e1ef1c6666f3 186
langster1980 0:e1ef1c6666f3 187 //check if winButton2 is High & set LED High
langster1980 0:e1ef1c6666f3 188
langster1980 0:e1ef1c6666f3 189 if (winButton2Status == true) {
langster1980 0:e1ef1c6666f3 190 printf("Button 2 in On State! \r\n"); //send button status message
langster1980 0:e1ef1c6666f3 191 genieWriteObject(GENIE_OBJ_USER_LED, 0x02, 1); // set virtual LED0 High
langster1980 0:e1ef1c6666f3 192 wait(0.1); // wait 100uS
langster1980 0:e1ef1c6666f3 193 led3 = 1; // set actual LED2 High
langster1980 0:e1ef1c6666f3 194 userLed2Status = true; // set userLed1Status High
langster1980 0:e1ef1c6666f3 195
langster1980 0:e1ef1c6666f3 196 }
langster1980 0:e1ef1c6666f3 197
langster1980 0:e1ef1c6666f3 198 //check if winButton2 is low & set LED low
langster1980 0:e1ef1c6666f3 199
langster1980 0:e1ef1c6666f3 200 else if (winButton2Status == false) {
langster1980 0:e1ef1c6666f3 201 printf("Button 2 in Off state! \r\n"); //send button status message
langster1980 0:e1ef1c6666f3 202 genieWriteObject(GENIE_OBJ_USER_LED, 0x02, 0); // set virtual LED0 Low
langster1980 0:e1ef1c6666f3 203 wait(0.1); // wait 100uS
langster1980 0:e1ef1c6666f3 204 led3 = 0; // set actual LED1 Low
langster1980 0:e1ef1c6666f3 205 userLed2Status = false; //set userLed1Status Low
langster1980 0:e1ef1c6666f3 206
langster1980 0:e1ef1c6666f3 207 }
langster1980 0:e1ef1c6666f3 208
langster1980 0:e1ef1c6666f3 209 //check if winButton3 is High & set LED High
langster1980 0:e1ef1c6666f3 210
langster1980 0:e1ef1c6666f3 211 if (winButton3Status == true) {
langster1980 0:e1ef1c6666f3 212 printf("Button 3 in On State! \r\n"); //send button status message
langster1980 0:e1ef1c6666f3 213 genieWriteObject(GENIE_OBJ_USER_LED, 0x03, 1); // set virtual LED0 High
langster1980 0:e1ef1c6666f3 214 wait(0.1); // wait 100uS
langster1980 0:e1ef1c6666f3 215 led4 = 1; // set actual LED2 High
langster1980 0:e1ef1c6666f3 216 userLed3Status = true; // set userLed1Status High
langster1980 0:e1ef1c6666f3 217
langster1980 0:e1ef1c6666f3 218 }
langster1980 0:e1ef1c6666f3 219
langster1980 0:e1ef1c6666f3 220 //check if winButton2 is low & set LED low
langster1980 0:e1ef1c6666f3 221
langster1980 0:e1ef1c6666f3 222 else if (winButton3Status == false) {
langster1980 0:e1ef1c6666f3 223 printf("Button 3 in Off state! \r\n"); //send button status message
langster1980 0:e1ef1c6666f3 224 genieWriteObject(GENIE_OBJ_USER_LED, 0x03, 0); // set virtual LED0 Low
langster1980 0:e1ef1c6666f3 225 wait(0.1); // wait 100uS
langster1980 0:e1ef1c6666f3 226 led4 = 0; // set actual LED1 Low
langster1980 0:e1ef1c6666f3 227 userLed3Status = false; //set userLed1Status Low
langster1980 0:e1ef1c6666f3 228
langster1980 0:e1ef1c6666f3 229 }
langster1980 0:e1ef1c6666f3 230
langster1980 0:e1ef1c6666f3 231
langster1980 0:e1ef1c6666f3 232 }
langster1980 0:e1ef1c6666f3 233
langster1980 0:e1ef1c6666f3 234 }