An example program using the RA8875 Display controller with the touch-screen option.

Dependencies:   RA8875

Committer:
WiredHome
Date:
Sun Dec 28 22:02:36 2014 +0000
Revision:
0:2b1669e97586
Child:
1:47e5fbdb28f1
minor changes to present as an example.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WiredHome 0:2b1669e97586 1
WiredHome 0:2b1669e97586 2 #include "mbed.h" // tested with v92
WiredHome 0:2b1669e97586 3 #include "RA8875.h" // tested with v80
WiredHome 0:2b1669e97586 4
WiredHome 0:2b1669e97586 5 LocalFileSystem local("local");
WiredHome 0:2b1669e97586 6 RA8875 lcd(p5, p6, p7, p12, NC, "tft"); // MOSI, MISO, SCK, /ChipSelect, /reset, name
WiredHome 0:2b1669e97586 7 Serial pc(USBTX, USBRX);
WiredHome 0:2b1669e97586 8
WiredHome 0:2b1669e97586 9 extern "C" void mbed_reset();
WiredHome 0:2b1669e97586 10
WiredHome 0:2b1669e97586 11
WiredHome 0:2b1669e97586 12 #define min(a,b) ((a<b)?a:b)
WiredHome 0:2b1669e97586 13 #define max(a,b) ((a>b)?a:b)
WiredHome 0:2b1669e97586 14
WiredHome 0:2b1669e97586 15 bool Intersect(rect_t rect, point_t p)
WiredHome 0:2b1669e97586 16 {
WiredHome 0:2b1669e97586 17 if (p.x >= min(rect.p1.x, rect.p2.x) && p.x <= max(rect.p1.x, rect.p2.x)
WiredHome 0:2b1669e97586 18 && p.y >= min(rect.p1.y, rect.p2.y) && p.y <= max(rect.p1.y, rect.p2.y))
WiredHome 0:2b1669e97586 19 return true;
WiredHome 0:2b1669e97586 20 else
WiredHome 0:2b1669e97586 21 return false;
WiredHome 0:2b1669e97586 22 }
WiredHome 0:2b1669e97586 23
WiredHome 0:2b1669e97586 24 int main()
WiredHome 0:2b1669e97586 25 {
WiredHome 0:2b1669e97586 26 pc.baud(460800); // I like a snappy terminal, so crank it up!
WiredHome 0:2b1669e97586 27 pc.printf("\r\nRA8875 Touch Colors - Build " __DATE__ " " __TIME__ "\r\n");
WiredHome 0:2b1669e97586 28
WiredHome 0:2b1669e97586 29 pc.printf("Turning on display\r\n");
WiredHome 0:2b1669e97586 30 lcd.init();
WiredHome 0:2b1669e97586 31 lcd.TouchPanelCalibrate("Calibrate the touch panel");
WiredHome 0:2b1669e97586 32 lcd.cls();
WiredHome 0:2b1669e97586 33
WiredHome 0:2b1669e97586 34 // +----------------------------------------------------+
WiredHome 0:2b1669e97586 35 // | (x,y) (xxx,yyy) rgb (RR,GG,BB) |
WiredHome 0:2b1669e97586 36 // | +------------------------------------------------+ | y = 50
WiredHome 0:2b1669e97586 37 // | | Sample Shown Here | |
WiredHome 0:2b1669e97586 38 // | +------------------------------------------------+ | y = 89
WiredHome 0:2b1669e97586 39 // | Red 0 to 255 ------------------------------------+ | y = 100
WiredHome 0:2b1669e97586 40 // | | | |
WiredHome 0:2b1669e97586 41 // | +------------------------------------------------+ | y = 139
WiredHome 0:2b1669e97586 42 // | Grn 0 to 255 ------------------------------------+ | y = 150
WiredHome 0:2b1669e97586 43 // | | | |
WiredHome 0:2b1669e97586 44 // | +------------------------------------------------+ | y = 189
WiredHome 0:2b1669e97586 45 // | Blu 0 to 255 ------------------------------------+ | y = 200
WiredHome 0:2b1669e97586 46 // | | | |
WiredHome 0:2b1669e97586 47 // | +------------------------------------------------+ | y = 239
WiredHome 0:2b1669e97586 48 // +----------------------------------------------------+ y = 271
WiredHome 0:2b1669e97586 49 // 10 470
WiredHome 0:2b1669e97586 50 rect_t RGBList[] = {
WiredHome 0:2b1669e97586 51 { 10,100, 470,139 }, // R
WiredHome 0:2b1669e97586 52 { 10,150, 470,189 }, // G
WiredHome 0:2b1669e97586 53 { 10,200, 470,239 }, // B
WiredHome 0:2b1669e97586 54 { 10, 50, 470, 89 } // This for the Sample
WiredHome 0:2b1669e97586 55 };
WiredHome 0:2b1669e97586 56 lcd.fillrect(RGBList[0], Red);
WiredHome 0:2b1669e97586 57 lcd.fillrect(RGBList[1], Green);
WiredHome 0:2b1669e97586 58 lcd.fillrect(RGBList[2], Blue);
WiredHome 0:2b1669e97586 59 color_t rgb = Black;
WiredHome 0:2b1669e97586 60 uint8_t rgbVal[3] = { 0, 0, 0 };
WiredHome 0:2b1669e97586 61
WiredHome 0:2b1669e97586 62 for (;;) {
WiredHome 0:2b1669e97586 63 point_t p;
WiredHome 0:2b1669e97586 64
WiredHome 0:2b1669e97586 65 if (lcd.TouchPanelReadable(&p)) {
WiredHome 0:2b1669e97586 66 lcd.foreground(Blue);
WiredHome 0:2b1669e97586 67 lcd.SetTextCursor(10, 15);
WiredHome 0:2b1669e97586 68 lcd.printf("(%3d,%3d)", p.x, p.y);
WiredHome 0:2b1669e97586 69
WiredHome 0:2b1669e97586 70 for (int i=0; i<3; i++) {
WiredHome 0:2b1669e97586 71 if (Intersect(RGBList[i], p)) {
WiredHome 0:2b1669e97586 72 uint8_t mag = (255 * (p.x - RGBList[i].p1.x)) / (RGBList[i].p2.x - RGBList[i].p1.x);
WiredHome 0:2b1669e97586 73 rgbVal[i] = mag;
WiredHome 0:2b1669e97586 74 lcd.SetTextCursor(380, 15);
WiredHome 0:2b1669e97586 75 lcd.foreground(Blue);
WiredHome 0:2b1669e97586 76 lcd.printf("(%02X,%02X,%02X)", rgbVal[0], rgbVal[1], rgbVal[2]);
WiredHome 0:2b1669e97586 77 rgb = RGB(rgbVal[0], rgbVal[1], rgbVal[2]);
WiredHome 0:2b1669e97586 78 lcd.fillrect(RGBList[3], rgb);
WiredHome 0:2b1669e97586 79 break;
WiredHome 0:2b1669e97586 80 }
WiredHome 0:2b1669e97586 81 }
WiredHome 0:2b1669e97586 82 }
WiredHome 0:2b1669e97586 83 }
WiredHome 0:2b1669e97586 84 }