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: mbed TFT_fonts SPI_TFT_ILI9341 beep _24LCXXX
Diff: main_v01.txt
- Revision:
- 0:ed1ba99f7b14
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_v01.txt Thu Oct 30 20:57:12 2014 +0000 @@ -0,0 +1,240 @@ +#include "mbed.h" +#include "SPI_TFT_ILI9341.h" +#include "Consolas26x49.h" +#include "digi36x44.h" +SPI_TFT_ILI9341 TFT(D11, D12, D13, D8, D9, D10,"TFT"); // mosi, miso, sclk, cs, reset, dc +void grid(void); +//Ticker valueUI; +InterruptIn button(USER_BUTTON); // кнопка питания вкл\выкл +//----------------------------------------------------------------------------------------------------------- +//----------- my functions ---------// +void drawScreenStatic(void); // прорисовка постоянных элементов +void drawScreenAction(void); // прорисовка показаний +void bootCold(void); // холодный старт +void map(void); // масштабирование +float avgAin0(); // среднее значение с входа A0 +float avgAin1(); // среднее значение с входа A1 +void dataProcessing(void); // обработка и подготовка данных с аналоговых входов +void powerButton(void); // при нажатии кнопки питания +void buttonUse(void); // обработка нажатий кнопок +//----------------------------------------------------------------------------------------------------------- +float h = 0.0024; // сюда среднее значение при нулевом токе +int j = 3144; // сюда коэффициент +//----------------------------------------------------------------------------------------------------------- +DigitalIn buttonUp(D3); // Up +DigitalIn buttonDown(D4); // Down +DigitalIn buttonEnter(D5); // Enter +int menu=1; // по умолчанию грузим первое меню +int complit=0; // в начале меню не прорисовано +int pb=0; // для прорисовки кнопки +//----------------------------------------------------------------------------------------------------------- +DigitalOut powerMosfet(D2); // выход управления нагрузкой +AnalogIn ainA0(A0); +AnalogIn ainA1(A1); +BusOut unused(A5,A2,A3,A4); +//------------------------------------------------------------------------------------------------------------ +//------------------------------------------------------------------------------------------------------------ +int main() //--------- Главная функция ---------// +{ + powerMosfet = 0; // при включении выход выключен + bootCold(); // холодный старт + button.fall(&powerButton); + //valueUI.attach(&drawMenuMainValues, 0.1); + + while(1) { + dataProcessing(); // обработка и подготовка данных с аналоговых входов + buttonUse(); // обработка нажатий кнопок + drawScreenStatic(); + drawScreenAction(); + } +} //--------- Главная функция ---------// +//------------------------------------------------------------------------------------------------------------ +//------------------------------------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------------------------------------ +void drawScreenStatic(void) // отрисовка главного экрана +{ + if (menu==1 & complit==0) { + pb=0; + TFT.set_orientation(3); + TFT.background(Black); + TFT.cls(); + TFT.rect(0,0,319,239,0xECA7); //рамка + TFT.rect(10,62,309,76,0x9000); //аналоговая 1 + TFT.rect(10,137,309,151,0x9000); //авалоговая 2 + //grid(); + //int y = 51; + //TFT.line(5,y,310,y, White); + TFT.background(Black); + TFT.foreground(0xECA7); // цвет слов + TFT.set_font((unsigned char*) Consolas26x49); + TFT.locate(185, 13); + TFT.printf("V"); // U= + TFT.locate(165, 88); + TFT.printf("mA"); // I= + complit = 1; // прорисовали! + } + if (menu==2 & complit==0) { + TFT.background(0xECA7); + TFT.foreground(Black); + TFT.cls(); + TFT.rect(1,1,318,238,Red); + complit = 1; // прорисовали! + } +} +//------------------------------------------------------------------------------------------------------------ +void drawScreenAction(void) // отрисовка главного экрана переменные +{ + if (menu==1) { + TFT.background(Black); + TFT.foreground(Green); + + TFT.set_font((unsigned char*) digi36x44); + TFT.locate(10, 10); + TFT.printf("%0.2f", avgAin0()*25); // выводим значение с A0 (напряжение) + TFT.locate(10, 85); + TFT.printf("%d", int(avgAin1()*2200)); // выводим значение с A1 (ток) + + if (powerMosfet==0 & pb==0) { + TFT.background(0x09E1); + TFT.foreground(Black); + TFT.fillrect(225,160,309,231,0x09E1); + TFT.set_font((unsigned char*) Consolas26x49); + TFT.locate(231, 173); + TFT.printf("OFF"); + pb=1; + } + if (powerMosfet==1 & pb==0) { + TFT.background(Green); + TFT.foreground(Black); + TFT.fillrect(225,160,309,231,Green); + TFT.set_font((unsigned char*) Consolas26x49); + TFT.locate(242, 173); + TFT.printf("ON"); + pb=1; + } + + } + if (menu==2) { + TFT.background(Black); + TFT.foreground(White); + TFT.locate(10, 110); + TFT.printf("menu 2"); + } +} +//------------------------------------------------------------------------------------------------------------ +void bootCold(void) +{ + TFT.claim(stdout); // send stdout to the TFT display + +} +//------------------------------------------------------------------------------------------------------------ +long map(long x, long in_min, long in_max, long out_min, long out_max) // функция масштабирования +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} +//------------------------------------------------------------------------------------------------------------ +float avgAin0() // функция среднего значения с входа A0 +{ + float value[100]; + float max; + float min; + double itg; + max = itg = 0.0; + min = 3.3; + for (int i=0; i<100; i++) { + value[i] = ainA0; + if (value[i] > max) max = value[i]; + if (value[i] < min) min = value[i]; + itg += value[i]; + } + return itg/100; +} +//------------------------------------------------------------------------------------------------------------ +float avgAin1() // функция среднего значения с входа A1 +{ + float value[100]; + float max; + float min; + double itg; + max = itg = 0.0; + min = 3.3; + for (int i=0; i<100; i++) { + value[i] = ainA1; + if (value[i] > max) max = value[i]; + if (value[i] < min) min = value[i]; + itg += value[i]; + } + return itg/100; +} +/*/------------------------------------------------------------------------------------------------------------ + void drawMainScale(void) { + a + int a = avg*1000; + b = mapIOIO(c, 0, 100, 0, 220); + + TFT.fillrect(10, 10, (b+10), 20, Red); // аналоговая шкала 1 + TFT.fillrect((b+10), 10, 230, 20, Black); + } +//------------------------------------------------------------------------------------------------------------*/ +void powerButton(void) // при нажатии кнопки питания +{ + powerMosfet=!powerMosfet; + pb=0; +} +//------------------------------------------------------------------------------------------------------------ +void dataProcessing(void) // обработка и подготовка данных с аналоговых входов +{ + +} +//------------------------------------------------------------------------------------------------------------ +void buttonUse(void) // обработка нажатий кнопок +{ +//---------------------------- + int one=0; // для обработки одной кнопки за раз + if (menu==1 & one==0) { + if (buttonEnter==0) { + //wait(1); + menu=2; + complit=0; + } + if (buttonDown==0) { + menu=3; + complit=0; + } + one=1; + } +//---------------------------- + if (menu==2 & one==0) { + if (buttonEnter==0) { + //wait(1); + menu=1; + complit=0; + } + one=1; + } +//---------------------------- + if (menu==3 & one==0) { + if (buttonEnter==0) { + //wait(1); + menu=1; + complit=0; + } + one=1; + } +} +//------------------------------------------------------------------------------------------------------------ +void grid(void) +{ + TFT.cls(); + for (int i=0; i<240; i=i+5) { + TFT.line(0,i,320,i, White); + } + for (int i=2; i<240; i=i+5) { + TFT.line(4,i,320,i, White); + } + for (int i=3; i<240; i=i+5) { + TFT.line(4,i,320,i, White); + } + +} \ No newline at end of file