This program test a Gauge bult in FT81x for Automotive SunTrip COmputer -- project undone
Dependencies: DS1820 FT800_3 mbed
Diff: main.cpp
- Revision:
- 0:96d8c18a9fad
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Jul 09 15:44:47 2016 +0000 @@ -0,0 +1,212 @@ +/* Demo for mbed Library for FTDI FT800 Enbedded Video Engine "EVE" + * by Peter Drescher, DC2PD 2014 + * Released under the MIT License: http://mbed.org/license/mit */ + +#include "mbed.h" +#include "FT_Platform.h" +#include "FT_color.h" +#include "stdio.h" +#include "float.h" +#include "DS1820.h" + +//#include "SDFileSystem.h" + + +#define SAMAPP_DELAY_BTW_APIS (1000) +#define SAMAPP_ENABLE_DELAY() Ft_Gpu_Hal_Sleep(SAMAPP_DELAY_BTW_APIS) +#define SAMAPP_ENABLE_DELAY_VALUE(x) Ft_Gpu_Hal_Sleep(x) +#define DATA_PIN A1 +FT800 TFT(D11,D12,D13,D9,D8,D14); + + + + + +// global Vars +unsigned int r,b,g; +char buffer[50]; +Ticker tick; +unsigned int color = 0,bright = 0; + + + +Serial usart(D1, D0); +DS1820 probe(DATA_PIN); + +// function to convert hue , saturation and value to RGB +// see http://en.wikipedia.org/wiki/HSL_and_HSV + +void hsv2rgb(double H,double S, double V) +{ + double f,h,p,q,t; + int i; + if( S == 0.0) { + r = V * 255; + g = V * 255; + b = V * 255; + return; + } + if(H > 480.0) H = 0.0; // check values + if(S > 1.0) S = 1.0; + if(S < 0.0) S = 0.0; + if(V > 1.0) V = 1.0; + if(V < 0.0) V = 0.0; + + h = H / 60.0; + i = (int) h; + f = h - i; + p = V * (1.0 - S); + q = V * (1.0 - (S * f)); + t = V * (1.0 - (S * (1.0 - f))); + + switch(i) { + case 0: + r = V * 255; + g = t * 255; + b = p * 255; + break; + case 1: + r = q * 255; + g = V * 255; + b = p * 255; + break; + case 2: + r = p * 255; + g = V * 255; + b = t * 255; + break; + case 3: + r = p * 255; + g = q * 255; + b = V * 255; + break; + case 4: + r = t * 255; + g = p * 255; + b = V * 255; + break; + case 5: + default: + r = V * 255; + g = p * 255; + b = q * 255; + break; + } +} + + +/***************************************************************************/ +// Rysowanie ekranu demonstracyjnego +/***************************************************************************/ + +ft_void_t Trip_Comp(ft_char8_t *str, ft_float_t temp) +{ + //const char* str2 = "FT81x EVE2 FRDM-K64F"; + TFT.DLstart(); // przygotowanie na nową listę nkomend + TFT.DL(CLEAR_COLOR_RGB(255,255,255)); // kolor tła (biały) + TFT.DL(CLEAR(1,1,1)); // czyszczenie buforów --> color, stencil, tag + + + + TFT.Button(580, 440, 67, 27, 27, OPT_FLAT, "MENU"); + TFT.Button(650, 440, 67, 27, 27, OPT_FLAT | OPT_CENTER, "INFO"); + TFT.Button(720, 440, 67, 27, 27, OPT_FLAT, "GUIDE"); + + //--------------opisy ekranu + TFT.DL(COLOR_RGB(0, 0, 0)); + TFT.Text(400, 180, 28, OPT_CENTER, "KM/H"); + TFT.Text(120, 119, 28, OPT_CENTER, "RPM /1000"); + TFT.Text(680, 330, 28, OPT_CENTER, "Temp"); + + //TFT.Text(378, 154, 27, OPT_CENTER, "KM:"); + TFT.Text(680, 119, 28, OPT_CENTER, "Fuel"); + TFT.Text(400, 30, 30, OPT_CENTER, str); + + TFT.DL(COLOR_RGB(255, 0, 0)); + TFT.Text(400, 440, 27, OPT_CENTER, "ENGINE OFF"); + TFT.DL(COLOR_RGB(0, 255, 0)); + TFT.Text(400, 420, 27, OPT_CENTER, "LIGHT: ON"); + + //GAUGE_0 = OPT_NOBACK | OPT_NOPOINTER; + //GAUGE_1 = OPT_NOBACK | OPT_NOTICKS; + + //--------------prędkosciomierz + TFT.DL(COLOR_RGB(0, 0, 255)); + TFT.Gauge((TFT.DispWidth/2), TFT.DispHeight/2, 208, OPT_NOBACK | OPT_NOPOINTER, 10, 10, 0, 250); + TFT.DL(COLOR_RGB(255, 0, 0)); + TFT.Gauge((TFT.DispWidth/2), TFT.DispHeight/2, 208, OPT_NOBACK | OPT_NOTICKS, 10, 10, 0 , 250); + TFT.Number(400, 370, 31, OPT_CENTER, 0); + + //--------------zegarek + TFT.DL(COLOR_RGB(0, 0, 255)); + TFT.Clock(130, 350, 100, OPT_NOBACK | OPT_NOPOINTER | OPT_NOSECS, 19, 51, 17, 0); + TFT.DL(COLOR_RGB(255, 0, 0)); + TFT.Clock(130, 350, 100, OPT_NOBACK | OPT_NOTICKS, 19, 51, 17, 0); + + + //-------------- RPM + TFT.DL(COLOR_RGB(0, 0, 255)); + TFT.Gauge(120, 150, 130, OPT_NOBACK | OPT_NOPOINTER, 8, 5, 0, 100); + TFT.DL(COLOR_RGB(255, 0, 0)); + TFT.Gauge(120, 150, 130, OPT_NOBACK | OPT_NOTICKS, 8, 5, 0, 100); + TFT.DL(COLOR_RGB(0, 255, 0)); + TFT.Number(120, 220, 31, OPT_CENTER, 0); + + //-------------- FUELL + TFT.DL(COLOR_RGB(0, 0, 255)); + TFT.Gauge(680, 150, 130, OPT_NOBACK | OPT_NOPOINTER, 4, 5, 40, 100); + TFT.DL(COLOR_RGB(255, 0, 0)); + TFT.Gauge(680, 150, 130, OPT_NOBACK | OPT_NOTICKS, 4, 5, 35, 100); + + TFT.DL(COLOR_RGB(0, 0, 0)); + //TFT.Text(15, 257, 16, 0, str); + + + + //------------- TEmperatura + TFT.DL(COLOR_RGB(0, 0, 255)); + TFT.Gauge(680, 350, 100, OPT_NOBACK | OPT_NOPOINTER, 4, 5, 40, 125); + TFT.DL(COLOR_RGB(255, 0, 0)); + TFT.Gauge(680, 350, 100, OPT_NOBACK | OPT_NOTICKS, 4, 5, temp, 125); + + TFT.DL(COLOR_RGB(0, 0, 0)); + TFT.Number(680, 400, 31, OPT_CENTER, temp); + + + + TFT.DL(DISPLAY()); // Wyswietlamy przygotowany screen + TFT.Swap(); + TFT.Flush_Co_Buffer(); // pobieramy komendy z FiFo + + TFT.WaitCmdfifo_empty(); // czekanie na zakończenie operacji + TFT.Sleep(5000); // koniec wyswietlania (15000 = 15sec) +} + + + + +int main() +{ + + + usart.baud(38400); + TFT.Flush_Co_Buffer(); + TFT.WaitCmdfifo_empty(); + + + + while(1) + { + probe.convertTemperature(true, DS1820::all_devices); //Start temperature conversion, wait until ready + usart.printf("Temperatura to %3.3f Celsiusza\r\n", probe.temperature()); + Trip_Comp("SunTRIP Computer", probe.temperature()); + + //Demo_Screen2("Temperatura", probe.temperature()); + // wait(1); + } + + +} + + +