Linear stabilizer voltage and current on lm358 and transictor. Digital control and indication on stm32f103rbt and tft01-22sp (ili9341). https://www.youtube.com/watch?v=DLC3KEtlr9I https://radiokot.ru/forum/viewtopic.php?f=11&t=112440
Dependencies: mbed TFT_fonts SPI_TFT_ILI9341 beep _24LCXXX
Diff: main.cpp
- Revision:
- 1:7bc0f280c259
- Parent:
- 0:ed1ba99f7b14
- Child:
- 2:d20b1ef35d3f
--- a/main.cpp Thu Oct 30 20:57:12 2014 +0000 +++ b/main.cpp Sat Nov 01 13:35:20 2014 +0000 @@ -31,7 +31,7 @@ //----------------------------------------------------------------------------------------------------------- Ввести в меню опцию коррекции падения напряжения на токоизмерительном шунте. int t; // секунд с момента включения int tstart; // при включении нагрузки равна реальному времени -time_t treal; // секунды реального времени +time_t treal; // секунды реального времени для таймера нагрузки int h=0; //вывод часов int m=0; // минут int s=0; // секунд @@ -47,6 +47,14 @@ void drawScreen8(void); // экран 8 void bootCold(void); // холодный старт void map(void); // масштабирование +void SetDateTime(void); // установка даты и времени +int year=2014; +int mon=11; +int day=1; +int hour=16; +int min=42; +int sec=0; +time_t seconds; //для часов реального времени //--------------------------- float avgAin0(); // среднее значение с входа A0 float avgAin1(); // среднее значение с входа A1 @@ -105,8 +113,9 @@ int complit=0; // в начале меню не прорисовано int pb=0; // для прорисовки кнопки int kline=15; // номер начальной строки в меню калибровки экран 4 -int mline=1; // номер начальной строки в меню Настройки главная экран 5 +int mline=15; // номер начальной строки в меню Настройки главная экран 5 int mline2=0; //в главном меню строка 2 не выбрана +int nline=8; // номер начальной строки в меню установки времени экран 3 int pmenu=0; //в главном меню изменение выбраной строки не действительно int powerProtect=1; //защита от кз int pp=0; //защита от кз для прорисовки меню @@ -128,15 +137,15 @@ { powerMosfet = 0; // при включении выход выключен TFT.claim(stdout); // send stdout to the TFT display - set_time(1414597016); // Set RTC time to Wed, 28 Oct 2009 11:35:37 + set_time(1414838392); // Set RTC time to Wed, 28 Oct 2009 11:35:37 tstart = treal = time(NULL); - pinbrightness.period(0.001); // задаём частоту Шим подсветки + pinbrightness.period(0.001); // задаём частоту Шим подсветки 0.001 - 1000 герц TFT.set_orientation(3); TFT.background(Black); TFT.cls(); wait(0.2); pinbrightness = brightness; // включаем подсветку - + } //------------------------------------------------------------------------------------------------------------ int main() //--------- Главная функция ---------// @@ -313,22 +322,169 @@ printf("I= %06.1f coeff. k=%0.0d, a=%0.4f \n", Iusb, a5k, a5a); // A5 I usb } //------------------------------------------------------------------------------------------------------------ -void drawScreen3(void) // экран 3 +void drawScreen3(void) // экран 3 установка часов { if (complit==0) { - TFT.background(Black); - TFT.foreground(White); + TFT.background(back5); + TFT.foreground(text5); TFT.cls(); complit = 1; // прорисовали! } - TFT.background(Black); - TFT.foreground(White); + TFT.background(back5); + TFT.foreground(text5); TFT.set_font((unsigned char*) Lucida13x21); - TFT.locate(10, 10); - timeConvert(); - TFT.printf("%02d:%02d:%02d", h, m, s); - TFT.locate(10,35); - TFT.printf("%d", t); + char buffer[32]; + seconds=time(NULL); + strftime(buffer, 32, "%H:%M:%S %d.%m.%Y", localtime(&seconds)); + TFT.locate (0,0); + printf("------- Set Time --------\n"); + TFT.background(back5_i); + TFT.foreground(text5_i); + TFT.locate (30,25); + printf("%s", buffer); //вывод реального времени + TFT.background(back5); + TFT.foreground(text5); + TFT.locate (28,86); + printf("%02d:%02d:%02d %02d.%02d.%04d",hour, min, sec, day, mon, year); //вывод то что установим + //-----------------------------------1 + if (nline==1) { + if (pmenu==1) { + TFT.background(back5_iset); + TFT.foreground(text5_i); + } else { + TFT.background(back5_i); + TFT.foreground(text5_i); + } + TFT.locate(28,64); + printf(" "); + } else { + TFT.locate(28,64); + TFT.background(back5); + TFT.foreground(back5); + printf(" "); + } + //-----------------------------------2 + if (nline==2) { + if (pmenu==1) { + TFT.background(back5_iset); + TFT.foreground(text5_i); + } else { + TFT.background(back5_i); + TFT.foreground(text5_i); + } + TFT.locate(64,64); + printf(" "); + } else { + TFT.locate(64,64); + TFT.background(back5); + TFT.foreground(back5); + printf(" "); + } + //-----------------------------------3 + if (nline==3) { + if (pmenu==1) { + TFT.background(back5_iset); + TFT.foreground(text5_i); + } else { + TFT.background(back5_i); + TFT.foreground(text5_i); + } + TFT.locate(100,64); + printf(" "); + } else { + TFT.locate(100,64); + TFT.background(back5); + TFT.foreground(back5); + printf(" "); + } + //-----------------------------------4 + if (nline==4) { + if (pmenu==1) { + TFT.background(back5_iset); + TFT.foreground(text5_i); + } else { + TFT.background(back5_i); + TFT.foreground(text5_i); + } + TFT.locate(135,64); + printf(" "); + } else { + TFT.locate(135,64); + TFT.background(back5); + TFT.foreground(back5); + printf(" "); + } + //-----------------------------------5 + if (nline==5) { + if (pmenu==1) { + TFT.background(back5_iset); + TFT.foreground(text5_i); + } else { + TFT.background(back5_i); + TFT.foreground(text5_i); + } + TFT.locate(170,64); + printf(" "); + } else { + TFT.locate(170,64); + TFT.background(back5); + TFT.foreground(back5); + printf(" "); + } + //-----------------------------------6 + if (nline==6) { + if (pmenu==1) { + TFT.background(back5_iset); + TFT.foreground(text5_i); + } else { + TFT.background(back5_i); + TFT.foreground(text5_i); + } + TFT.locate(205,64); + printf(" "); + } else { + TFT.locate(205,64); + TFT.background(back5); + TFT.foreground(back5); + printf(" "); + } + //-----------------------------------7 + if (nline==7) { + if (pmenu==1) { + TFT.background(back5_iset); + TFT.foreground(text5_i); + } else { + TFT.background(back5_i); + TFT.foreground(text5_i); + } + TFT.locate(30,120); + printf("Set!"); + } else { + TFT.locate(30,120); + TFT.background(back5); + TFT.foreground(text5); + printf("Set!"); + } + //----------------------------------- + //-----------------------------------7 + if (nline==8) { + if (pmenu==1) { + TFT.background(back5_iset); + TFT.foreground(text5_i); + } else { + TFT.background(0xFB2C); + TFT.foreground(text5_i); + } + TFT.locate(30,170); + printf("Exit"); + } else { + TFT.locate(30,170); + TFT.background(back5); + TFT.foreground(text5); + printf("Exit"); + } + //----------------------------------- + } //------------------------------------------------------------------------------------------------------------ void drawScreen4(void) // экран 4 калибровка @@ -891,12 +1047,95 @@ } //------------------------------------------------------------------ if (Screen==3 & one==0) { //экран 3 - if (buttonEnter==0) { // Enter - //wait(1); - Screen=1; //1 - complit=0; + if(nline==7 & pmenu==1){ + wait(0.2); + pmenu=0; + } + if (buttonEnter==0 & pmenu==0) { // Enter + pmenu=1; + wait(0.2); + if(nline==7){ + mon=mon-1; + SetDateTime(); + mon=mon+1; + } + if(nline==8){ + pmenu=0; + Screen=5; + complit=0; + } + } + if (buttonUp==0 & pmenu==0) { // Up + nline--; + wait(0.2); + if (nline==0) nline=8; + } + if (buttonDown==0 & pmenu==0) { // Down + nline++; + wait(0.2); + if (nline==9) nline=1; } - one=1; + + if (pmenu==1) { + if (buttonEnter==0) { + pmenu=0; + wait(0.2); + } + if (buttonUp==0) { + if (nline==1) { + hour++; + wait(0.1); + } + if (nline==2) { + min++; + wait(0.1); + } + if (nline==3) { + sec++; + wait(0.1); + } + if (nline==4) { + day++; + wait(0.1); + } + if (nline==5) { + mon++; + wait(0.1); + } + if (nline==6) { + year++; + wait(0.1); + } + } + if (buttonDown==0) { + if (nline==1) { + hour--; + wait(0.1); + } + if (nline==2) { + min--; + wait(0.1); + } + if (nline==3) { + sec--; + wait(0.1); + } + if (nline==4) { + day--; + wait(0.1); + } + if (nline==5) { + mon--; + wait(0.1); + } + if (nline==6) { + year--; + wait(0.1); + } + } + + one=1; + } } //------------------------------------------------------------------ if (Screen==4 & one==0) { //экран меню Калибровка @@ -934,7 +1173,7 @@ if (Screen==5 & one==0) { //экран 5 Настройки главная------------------------------------------------------- if (buttonEnter==0 & pmenu==0) { // Enter if (mline==1) { - Screen=1; + Screen=3; complit=0; } if (mline==2) { @@ -1072,6 +1311,7 @@ } } +//------------------------------------------------------------------------------------------------------------ void timeConvert(void) //показывает час с минуты с секундами начинают идти с часа и одной минуты { if (powerMosfet==1) treal = time(NULL); @@ -1080,4 +1320,54 @@ m= (t-h*3600)/60; s= (t-h*3600)-m*60; if (t == 359999) tstart=treal; -} \ No newline at end of file +} +//------------------------------------------------------------------------------------------------------------ +void SetDateTime (void) +{ + struct tm Clock; + Clock.tm_year = year - 1900; + Clock.tm_mon = mon; + Clock.tm_mday = day; + Clock.tm_hour = hour; + Clock.tm_min = min; + Clock.tm_sec = sec; + time_t epoch = mktime(&Clock); + set_time(epoch); +} +//------------------------------------------------------------------------------------------------------------ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +