Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FT800_3 SDFileSystem mbed
main.cpp@0:d53f428d8f41, 2016-03-29 (annotated)
- Committer:
- montgojj
- Date:
- Tue Mar 29 15:33:47 2016 +0000
- Revision:
- 0:d53f428d8f41
- Child:
- 1:9221588f4198
Displays JPG named Logo on SD card
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| montgojj | 0:d53f428d8f41 | 1 | /* Demo for mbed Library for FTDI FT800 Enbedded Video Engine "EVE" |
| montgojj | 0:d53f428d8f41 | 2 | * to show jpg file handling |
| montgojj | 0:d53f428d8f41 | 3 | * c by Peter Drescher, DC2PD 2014 |
| montgojj | 0:d53f428d8f41 | 4 | * Released under the MIT License: http://mbed.org/license/mit */ |
| montgojj | 0:d53f428d8f41 | 5 | #include "mbed.h" |
| montgojj | 0:d53f428d8f41 | 6 | #include "FT_Platform.h" |
| montgojj | 0:d53f428d8f41 | 7 | #include "FT_color.h" |
| montgojj | 0:d53f428d8f41 | 8 | #include "stdio.h" |
| montgojj | 0:d53f428d8f41 | 9 | #include "float.h" |
| montgojj | 0:d53f428d8f41 | 10 | #include "SDFileSystem.h" |
| montgojj | 0:d53f428d8f41 | 11 | |
| montgojj | 0:d53f428d8f41 | 12 | #define SAMAPP_DELAY_BTW_APIS (1000) |
| montgojj | 0:d53f428d8f41 | 13 | #define SAMAPP_ENABLE_DELAY() Ft_Gpu_Hal_Sleep(SAMAPP_DELAY_BTW_APIS) |
| montgojj | 0:d53f428d8f41 | 14 | #define SAMAPP_ENABLE_DELAY_VALUE(x) Ft_Gpu_Hal_Sleep(x) |
| montgojj | 0:d53f428d8f41 | 15 | |
| montgojj | 0:d53f428d8f41 | 16 | FT800 TFT(D11,D12,D13,D9,D8,D14); |
| montgojj | 0:d53f428d8f41 | 17 | SDFileSystem sd(D11, D12, D13, D10, "sd"); |
| montgojj | 0:d53f428d8f41 | 18 | |
| montgojj | 0:d53f428d8f41 | 19 | // global Vars |
| montgojj | 0:d53f428d8f41 | 20 | unsigned int r, b, g; |
| montgojj | 0:d53f428d8f41 | 21 | char buffer[50]; |
| montgojj | 0:d53f428d8f41 | 22 | |
| montgojj | 0:d53f428d8f41 | 23 | |
| montgojj | 0:d53f428d8f41 | 24 | void hsv2rgb(double H,double S, double V) |
| montgojj | 0:d53f428d8f41 | 25 | { |
| montgojj | 0:d53f428d8f41 | 26 | double f,h,p,q,t; |
| montgojj | 0:d53f428d8f41 | 27 | int i; |
| montgojj | 0:d53f428d8f41 | 28 | if( S == 0.0) { |
| montgojj | 0:d53f428d8f41 | 29 | r = V * 255; |
| montgojj | 0:d53f428d8f41 | 30 | g = V * 255; |
| montgojj | 0:d53f428d8f41 | 31 | b = V * 255; |
| montgojj | 0:d53f428d8f41 | 32 | return; |
| montgojj | 0:d53f428d8f41 | 33 | } |
| montgojj | 0:d53f428d8f41 | 34 | if(H > 480.0) H = 0.0; // check values |
| montgojj | 0:d53f428d8f41 | 35 | if(S > 1.0) S = 1.0; |
| montgojj | 0:d53f428d8f41 | 36 | if(S < 0.0) S = 0.0; |
| montgojj | 0:d53f428d8f41 | 37 | if(V > 1.0) V = 1.0; |
| montgojj | 0:d53f428d8f41 | 38 | if(V < 0.0) V = 0.0; |
| montgojj | 0:d53f428d8f41 | 39 | |
| montgojj | 0:d53f428d8f41 | 40 | h = H / 60.0; |
| montgojj | 0:d53f428d8f41 | 41 | i = (int) h; |
| montgojj | 0:d53f428d8f41 | 42 | f = h - i; |
| montgojj | 0:d53f428d8f41 | 43 | p = V * (1.0 - S); |
| montgojj | 0:d53f428d8f41 | 44 | q = V * (1.0 - (S * f)); |
| montgojj | 0:d53f428d8f41 | 45 | t = V * (1.0 - (S * (1.0 - f))); |
| montgojj | 0:d53f428d8f41 | 46 | |
| montgojj | 0:d53f428d8f41 | 47 | switch(i) { |
| montgojj | 0:d53f428d8f41 | 48 | case 0: |
| montgojj | 0:d53f428d8f41 | 49 | r = V * 255; |
| montgojj | 0:d53f428d8f41 | 50 | g = t * 255; |
| montgojj | 0:d53f428d8f41 | 51 | b = p * 255; |
| montgojj | 0:d53f428d8f41 | 52 | break; |
| montgojj | 0:d53f428d8f41 | 53 | case 1: |
| montgojj | 0:d53f428d8f41 | 54 | r = q * 255; |
| montgojj | 0:d53f428d8f41 | 55 | g = V * 255; |
| montgojj | 0:d53f428d8f41 | 56 | b = p * 255; |
| montgojj | 0:d53f428d8f41 | 57 | break; |
| montgojj | 0:d53f428d8f41 | 58 | case 2: |
| montgojj | 0:d53f428d8f41 | 59 | r = p * 255; |
| montgojj | 0:d53f428d8f41 | 60 | g = V * 255; |
| montgojj | 0:d53f428d8f41 | 61 | b = t * 255; |
| montgojj | 0:d53f428d8f41 | 62 | break; |
| montgojj | 0:d53f428d8f41 | 63 | case 3: |
| montgojj | 0:d53f428d8f41 | 64 | r = p * 255; |
| montgojj | 0:d53f428d8f41 | 65 | g = q * 255; |
| montgojj | 0:d53f428d8f41 | 66 | b = V * 255; |
| montgojj | 0:d53f428d8f41 | 67 | break; |
| montgojj | 0:d53f428d8f41 | 68 | case 4: |
| montgojj | 0:d53f428d8f41 | 69 | r = t * 255; |
| montgojj | 0:d53f428d8f41 | 70 | g = p * 255; |
| montgojj | 0:d53f428d8f41 | 71 | b = V * 255; |
| montgojj | 0:d53f428d8f41 | 72 | break; |
| montgojj | 0:d53f428d8f41 | 73 | case 5: |
| montgojj | 0:d53f428d8f41 | 74 | default: |
| montgojj | 0:d53f428d8f41 | 75 | r = V * 255; |
| montgojj | 0:d53f428d8f41 | 76 | g = p * 255; |
| montgojj | 0:d53f428d8f41 | 77 | b = q * 255; |
| montgojj | 0:d53f428d8f41 | 78 | break; |
| montgojj | 0:d53f428d8f41 | 79 | } |
| montgojj | 0:d53f428d8f41 | 80 | } |
| montgojj | 0:d53f428d8f41 | 81 | /* function to load jpg file from internal filesystem */ |
| montgojj | 0:d53f428d8f41 | 82 | /* into FT800 buffer and decode JPG to bitmap */ |
| montgojj | 0:d53f428d8f41 | 83 | /* return 0 if jpg is ok */ |
| montgojj | 0:d53f428d8f41 | 84 | /* return x_size and y_size of jpg */ |
| montgojj | 0:d53f428d8f41 | 85 | |
| montgojj | 0:d53f428d8f41 | 86 | int main() |
| montgojj | 0:d53f428d8f41 | 87 | { |
| montgojj | 0:d53f428d8f41 | 88 | ft_int16_t x_size,y_size; |
| montgojj | 0:d53f428d8f41 | 89 | int err; |
| montgojj | 0:d53f428d8f41 | 90 | |
| montgojj | 0:d53f428d8f41 | 91 | TFT.MemWrite(REG_ROTATE, 1); |
| montgojj | 0:d53f428d8f41 | 92 | TFT.Rotate(1); |
| montgojj | 0:d53f428d8f41 | 93 | |
| montgojj | 0:d53f428d8f41 | 94 | TFT.DLstart(); // start a new display command list |
| montgojj | 0:d53f428d8f41 | 95 | TFT.DL(CLEAR_COLOR_RGB(255,255,255)); // set the clear color to white |
| montgojj | 0:d53f428d8f41 | 96 | TFT.DL(CLEAR(1,1,1)); // clear buffers -> color buffer,stencil buffer, tag buffe |
| montgojj | 0:d53f428d8f41 | 97 | |
| montgojj | 0:d53f428d8f41 | 98 | err = TFT.Load_jpg("/sd/Logo.jpg",& x_size,& y_size); // load graphic data into buffer and decode jpg to bitmap |
| montgojj | 0:d53f428d8f41 | 99 | if(err != 0) { // something is wrong - display error |
| montgojj | 0:d53f428d8f41 | 100 | TFT.DL(COLOR_RGB(0,0,0)); // set current color |
| montgojj | 0:d53f428d8f41 | 101 | TFT.Text(TFT.DispWidth/2, TFT.DispHeight/2, 25, OPT_CENTERX, "Error"); // draw Text with font 31 |
| montgojj | 0:d53f428d8f41 | 102 | TFT.Number(50,50,25,OPT_SIGNED,err); |
| montgojj | 0:d53f428d8f41 | 103 | |
| montgojj | 0:d53f428d8f41 | 104 | } else { // jpg is loaded and decoded into bitmap |
| montgojj | 0:d53f428d8f41 | 105 | |
| montgojj | 0:d53f428d8f41 | 106 | TFT.DL(BEGIN(BITMAPS)); |
| montgojj | 0:d53f428d8f41 | 107 | TFT.LoadIdentity(); |
| montgojj | 0:d53f428d8f41 | 108 | //TFT.Ft_Gpu_CoCmd_Rotate((45*65536/360));//rotate by 45 degrees anticlock wise |
| montgojj | 0:d53f428d8f41 | 109 | //TFT.Ft_Gpu_CoCmd_Scale(32768,32768);//scale by 2x2 |
| montgojj | 0:d53f428d8f41 | 110 | TFT.SetMatrix(); |
| montgojj | 0:d53f428d8f41 | 111 | TFT.DL(VERTEX2F(0,0)); |
| montgojj | 0:d53f428d8f41 | 112 | |
| montgojj | 0:d53f428d8f41 | 113 | /*TFT.DL(DISPLAY()); // Display the image |
| montgojj | 0:d53f428d8f41 | 114 | TFT.Swap(); // Swap the current display list |
| montgojj | 0:d53f428d8f41 | 115 | TFT.Flush_Co_Buffer(); // Download the command list into fifo |
| montgojj | 0:d53f428d8f41 | 116 | TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation*/ |
| montgojj | 0:d53f428d8f41 | 117 | |
| montgojj | 0:d53f428d8f41 | 118 | /* wait(2); |
| montgojj | 0:d53f428d8f41 | 119 | TFT.DL(BEGIN(BITMAPS)); |
| montgojj | 0:d53f428d8f41 | 120 | TFT.LoadIdentity(); |
| montgojj | 0:d53f428d8f41 | 121 | //TFT.Ft_Gpu_CoCmd_Rotate((45*65536/360));//rotate by 45 degrees anticlock wise |
| montgojj | 0:d53f428d8f41 | 122 | //TFT.Ft_Gpu_CoCmd_Scale(32768,32768);//scale by 2x2 |
| montgojj | 0:d53f428d8f41 | 123 | TFT.SetMatrix(); |
| montgojj | 0:d53f428d8f41 | 124 | TFT.DL(VERTEX2F(0,0));*/ |
| montgojj | 0:d53f428d8f41 | 125 | } |
| montgojj | 0:d53f428d8f41 | 126 | TFT.DL(DISPLAY()); // Display the image |
| montgojj | 0:d53f428d8f41 | 127 | TFT.Swap(); // Swap the current display list |
| montgojj | 0:d53f428d8f41 | 128 | TFT.Flush_Co_Buffer(); // Download the command list into fifo |
| montgojj | 0:d53f428d8f41 | 129 | TFT.WaitCmdfifo_empty(); // Wait till coprocessor completes the operation |
| montgojj | 0:d53f428d8f41 | 130 | } |
| montgojj | 0:d53f428d8f41 | 131 | |
| montgojj | 0:d53f428d8f41 | 132 | |
| montgojj | 0:d53f428d8f41 | 133 |