Demo project to demonstrate that ILI9340 display driver and graphics library. very simple but a good starting point for any project using such a display. Please use this to thoroughly enjoy yourself and make your projects cool!

Dependencies:   ILI9340_Driver_Lib mbed

About the Driver:

This driver will drive any display that uses an ILI9340 display controller in SPI mode - such as the adafruits 2.2" 240 x 320 display found here: http://www.adafruit.com/products/1480

All this code has been ported from other peoples hard work - Thanks to All !

Committer:
dextorslabs
Date:
Mon May 26 09:23:40 2014 +0000
Revision:
0:9c462c65176a
Child:
1:0615e3c659c0
V1.0 of the integrated ILI9340 SPI display driver and graphics library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dextorslabs 0:9c462c65176a 1 /***************************************************************
dextorslabs 0:9c462c65176a 2 ILI9340_Driver v1.0 26.05.14 Ian Weston
dextorslabs 0:9c462c65176a 3
dextorslabs 0:9c462c65176a 4 Driver and integrated graphics library for displays that use the
dextorslabs 0:9c462c65176a 5 ILI9340 controller in SPI mode.
dextorslabs 0:9c462c65176a 6
dextorslabs 0:9c462c65176a 7 The code was prted from several sources, the driver section
dextorslabs 0:9c462c65176a 8 was completely ported from the Adafruits Arduino source code, and
dextorslabs 0:9c462c65176a 9 the graphics functions were ported from the Adafruits GFX library
dextorslabs 0:9c462c65176a 10 and some elements were ported from code by Elmicros seeduio port.
dextorslabs 0:9c462c65176a 11
dextorslabs 0:9c462c65176a 12 Future revisions will include more advanced graphics functions.
dextorslabs 0:9c462c65176a 13
dextorslabs 0:9c462c65176a 14 Rough and ready Demo code to for showing the driver and some
dextorslabs 0:9c462c65176a 15 functions in action.
dextorslabs 0:9c462c65176a 16
dextorslabs 0:9c462c65176a 17 ***************************************************************/
dextorslabs 0:9c462c65176a 18
dextorslabs 0:9c462c65176a 19
dextorslabs 0:9c462c65176a 20 #include "mbed.h"
dextorslabs 0:9c462c65176a 21 #include "ILI9340_Driver.h"
dextorslabs 0:9c462c65176a 22
dextorslabs 0:9c462c65176a 23
dextorslabs 0:9c462c65176a 24 int main() {
dextorslabs 0:9c462c65176a 25
dextorslabs 0:9c462c65176a 26 // create the display object
dextorslabs 0:9c462c65176a 27 ILI9340_Display tft = ILI9340_Display(p5, p6, p7, p24, p25, p26);
dextorslabs 0:9c462c65176a 28
dextorslabs 0:9c462c65176a 29 // initialise the display
dextorslabs 0:9c462c65176a 30 tft.DispInit();
dextorslabs 0:9c462c65176a 31
dextorslabs 0:9c462c65176a 32 // clears the screen to remove all noise data
dextorslabs 0:9c462c65176a 33 tft.FillScreen(ILI9340_WHITE);
dextorslabs 0:9c462c65176a 34
dextorslabs 0:9c462c65176a 35 // draws a black window
dextorslabs 0:9c462c65176a 36 tft.DrawRect(20, 20, 200, 280, ILI9340_BLACK);
dextorslabs 0:9c462c65176a 37
dextorslabs 0:9c462c65176a 38
dextorslabs 0:9c462c65176a 39
dextorslabs 0:9c462c65176a 40 // set up variables for graphics functions
dextorslabs 0:9c462c65176a 41 uint16_t c1, c2;
dextorslabs 0:9c462c65176a 42 uint8_t r = 0, g = 0, b = 0;
dextorslabs 0:9c462c65176a 43 char elapsed[] = "1111";
dextorslabs 0:9c462c65176a 44 int counter = 0;
dextorslabs 0:9c462c65176a 45
dextorslabs 0:9c462c65176a 46 // Small amount of text to the display.
dextorslabs 0:9c462c65176a 47 tft.DrawString("Hello Lib!", 80, 120, 1, ILI9340_BLACK);
dextorslabs 0:9c462c65176a 48 tft.DrawString("Frame Count:", 70, 135, 1, ILI9340_BLACK);
dextorslabs 0:9c462c65176a 49
dextorslabs 0:9c462c65176a 50 while(true) {
dextorslabs 0:9c462c65176a 51 // convert the RGB values into values that can be writen to the screen
dextorslabs 0:9c462c65176a 52 c1 = tft.Colour565(r, g, b);
dextorslabs 0:9c462c65176a 53 c2 = tft.Colour565(r+50, g+50, b+50);
dextorslabs 0:9c462c65176a 54
dextorslabs 0:9c462c65176a 55 // Print 2x square boxes to the screen that change colour with every iteration
dextorslabs 0:9c462c65176a 56 tft.FillRect( 60, 60, 30, 30, c1);
dextorslabs 0:9c462c65176a 57 tft.FillRect( 140, 220, 30, 30, c2);
dextorslabs 0:9c462c65176a 58
dextorslabs 0:9c462c65176a 59 // change the RGB vlaues
dextorslabs 0:9c462c65176a 60 r += 4;
dextorslabs 0:9c462c65176a 61 g += 6;
dextorslabs 0:9c462c65176a 62 b += 8;
dextorslabs 0:9c462c65176a 63
dextorslabs 0:9c462c65176a 64 //Write the frame count to screen, first overwriting the previos value in the background colour
dextorslabs 0:9c462c65176a 65 tft.IntToChars(elapsed, counter, 4, 10, 70, 160, 3, ILI9340_WHITE);
dextorslabs 0:9c462c65176a 66 if (counter++ > 9999) {counter = 0;}
dextorslabs 0:9c462c65176a 67 tft.IntToChars(elapsed, counter, 4, 10, 70, 160, 3, ILI9340_RED);
dextorslabs 0:9c462c65176a 68
dextorslabs 0:9c462c65176a 69 // Make a mess of the screen by drawing random lines and, a ripple of circles.
dextorslabs 0:9c462c65176a 70 tft.DrawLine(counter % r, counter % g, counter % b, r, counter*8);
dextorslabs 0:9c462c65176a 71 tft.DrawCircle(120, 265, r, c1);
dextorslabs 0:9c462c65176a 72
dextorslabs 0:9c462c65176a 73 // Do the waiting thang...
dextorslabs 0:9c462c65176a 74 wait(0.050);
dextorslabs 0:9c462c65176a 75
dextorslabs 0:9c462c65176a 76 }
dextorslabs 0:9c462c65176a 77
dextorslabs 0:9c462c65176a 78 }
dextorslabs 0:9c462c65176a 79