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

Committer:
sinrab
Date:
Wed Jan 21 17:34:22 2015 +0000
Revision:
4:776f59129c24
Parent:
3:791cf9a867d1
Child:
5:0b3c71d7e475
??????? ?????? ? ??????????? ??? F401RE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sinrab 0:ed1ba99f7b14 1 #include "mbed.h"
sinrab 0:ed1ba99f7b14 2 #include "SPI_TFT_ILI9341.h"
sinrab 4:776f59129c24 3 #include "_24LCXXX.h"
sinrab 4:776f59129c24 4 #include "beep.h"
sinrab 3:791cf9a867d1 5 //----------------------------------
sinrab 0:ed1ba99f7b14 6 #include "digi36x44.h"
sinrab 3:791cf9a867d1 7 #include "Consolas26x49.h"
sinrab 3:791cf9a867d1 8 #include "Consolas19x35.h"
sinrab 0:ed1ba99f7b14 9 #include "Courier8x13.h"
sinrab 0:ed1ba99f7b14 10 #include "CourierNew13x23.h"
sinrab 0:ed1ba99f7b14 11 #include "Lucida13x21.h"
sinrab 0:ed1ba99f7b14 12 //----------------------------------
sinrab 0:ed1ba99f7b14 13 #define text5 0xFFFF
sinrab 0:ed1ba99f7b14 14 #define back5 0x018C
sinrab 0:ed1ba99f7b14 15
sinrab 0:ed1ba99f7b14 16 #define text5_i 0x0000
sinrab 0:ed1ba99f7b14 17 #define back5_i 0x0660
sinrab 0:ed1ba99f7b14 18 #define back5_iset 0xF986
sinrab 0:ed1ba99f7b14 19 //----------------------------------
sinrab 0:ed1ba99f7b14 20 #define text4 0xFFFF
sinrab 0:ed1ba99f7b14 21 #define back4 0x3320
sinrab 0:ed1ba99f7b14 22
sinrab 0:ed1ba99f7b14 23 #define text4_i 0x0000
sinrab 0:ed1ba99f7b14 24 #define back4_i 0xFCD9
sinrab 0:ed1ba99f7b14 25 //----------------------------------
sinrab 0:ed1ba99f7b14 26 #define text2 0x0000
sinrab 0:ed1ba99f7b14 27 #define back2 0x9E7F
sinrab 0:ed1ba99f7b14 28 //----------------------------------
sinrab 3:791cf9a867d1 29 #define colorline 0xECA7 // цвет рамок 0xECA7 - песочный 0x018C - темносиний 0xFFE0 - желтый
sinrab 3:791cf9a867d1 30 #define color_text_on Green // ON текст
sinrab 3:791cf9a867d1 31 #define color_back_on 0x0339 // ON фон
sinrab 3:791cf9a867d1 32 #define color_scale1 0x3320 // шкала U
sinrab 3:791cf9a867d1 33 #define color_scale2 0x9A60 // шкала I
sinrab 3:791cf9a867d1 34 //----------------------------------
sinrab 0:ed1ba99f7b14 35 SPI_TFT_ILI9341 TFT(D11, D12, D13, D8, D9, D10,"TFT"); // mosi, miso, sclk, cs, reset, dc
sinrab 0:ed1ba99f7b14 36 void grid(void);
sinrab 2:d20b1ef35d3f 37 Timer fps;// FPS
sinrab 4:776f59129c24 38 Timeout timerforfanstart; //таймер для запуска мотора
sinrab 4:776f59129c24 39 Timeout timerforpoweriddle; //таймер для паузы срабатывания кнопки
sinrab 4:776f59129c24 40 Timeout iddletimesaver; // таймер времени до включения заставки
sinrab 4:776f59129c24 41 int fst=0;
sinrab 4:776f59129c24 42 int fst2=0;
sinrab 0:ed1ba99f7b14 43 //Ticker valueUI;
sinrab 3:791cf9a867d1 44 InterruptIn button(A4); // кнопка питания вкл\выкл
sinrab 4:776f59129c24 45 Beep buzzer(D5); // звук
sinrab 4:776f59129c24 46 I2C i2c(PB_9, PB_8); // sda, scl для флэш памяти
sinrab 4:776f59129c24 47 _24LCXXX eeprom(&i2c, 0x50);
sinrab 0:ed1ba99f7b14 48 //----------------------------------------------------------------------------------------------------------- Ввести в меню опцию коррекции падения напряжения на токоизмерительном шунте.
sinrab 0:ed1ba99f7b14 49 int t; // секунд с момента включения
sinrab 0:ed1ba99f7b14 50 int tstart; // при включении нагрузки равна реальному времени
sinrab 1:7bc0f280c259 51 time_t treal; // секунды реального времени для таймера нагрузки
sinrab 0:ed1ba99f7b14 52 int h=0; //вывод часов
sinrab 0:ed1ba99f7b14 53 int m=0; // минут
sinrab 0:ed1ba99f7b14 54 int s=0; // секунд
sinrab 0:ed1ba99f7b14 55 void timeConvert(void);
sinrab 0:ed1ba99f7b14 56 //----------- my functions ---------//
sinrab 0:ed1ba99f7b14 57 void drawScreen1(void); // экран 1 Главный экран
sinrab 0:ed1ba99f7b14 58 void drawScreen2(void); // экран 2 dats analog in and Noise
sinrab 0:ed1ba99f7b14 59 void drawScreen3(void); // экран 3
sinrab 0:ed1ba99f7b14 60 void drawScreen4(void); // экран 4 Калибровка
sinrab 0:ed1ba99f7b14 61 void drawScreen5(void); // экран 5 Настройки главный
sinrab 0:ed1ba99f7b14 62 void drawScreen6(void); // экран 6
sinrab 0:ed1ba99f7b14 63 void drawScreen7(void); // экран 7
sinrab 0:ed1ba99f7b14 64 void drawScreen8(void); // экран 8
sinrab 0:ed1ba99f7b14 65 void bootCold(void); // холодный старт
sinrab 4:776f59129c24 66 void loaddefaultsettings(void); // загрузка настроек по умолчанию
sinrab 4:776f59129c24 67 void loadsettings(void); // загрузка настроек при старте
sinrab 4:776f59129c24 68 void savedefaulttoflash(void); // сохранить в флэш настройки по умолчанию (для активации работы флэш)
sinrab 4:776f59129c24 69 void fans(void); // управление вентиляторами
sinrab 4:776f59129c24 70 void fanstart(void); // первичный старт вентилятора
sinrab 4:776f59129c24 71 void keypoweriddle(void); // для задержка опроса кнопки питания
sinrab 4:776f59129c24 72 void ScreenSaver(void); // ScreenSaver
sinrab 4:776f59129c24 73 void screensaverstart(void); // старт заставки
sinrab 4:776f59129c24 74 void bootscreen(void); // экран при старте
sinrab 4:776f59129c24 75 int saveractive=0;
sinrab 4:776f59129c24 76 int onesaver=0;
sinrab 4:776f59129c24 77 int onepower=0; // для задержка опроса кнопки питания
sinrab 4:776f59129c24 78 //-----------------
sinrab 4:776f59129c24 79 void Protect(void); // функция обработки защиты
sinrab 4:776f59129c24 80 int shl=0;
sinrab 4:776f59129c24 81 int shm=0;
sinrab 4:776f59129c24 82 int shortline=0;
sinrab 4:776f59129c24 83 //-----------------
sinrab 2:d20b1ef35d3f 84 float map(float, float, float, float, float); // масштабирование
sinrab 1:7bc0f280c259 85 void SetDateTime(void); // установка даты и времени
sinrab 1:7bc0f280c259 86 int year=2014;
sinrab 1:7bc0f280c259 87 int mon=11;
sinrab 1:7bc0f280c259 88 int day=1;
sinrab 1:7bc0f280c259 89 int hour=16;
sinrab 1:7bc0f280c259 90 int min=42;
sinrab 1:7bc0f280c259 91 int sec=0;
sinrab 1:7bc0f280c259 92 time_t seconds; //для часов реального времени
sinrab 4:776f59129c24 93 int tempstart=42; // температура старта вентилятора
sinrab 4:776f59129c24 94 int tempfull=60; // полной мощности вентилятора tempstart tempfull tempcutoff
sinrab 4:776f59129c24 95 int tempcutoff=80; // отключения нагрузки
sinrab 4:776f59129c24 96 int umax=31; // U max, Volt
sinrab 4:776f59129c24 97 float imax=2.6; // I max, Amper
sinrab 4:776f59129c24 98 float rdown=0.05; // R сопротивление шунта для расчета падения напряжения выхода от зависимости от тока нагрузки
sinrab 4:776f59129c24 99 int rdown_on=1; // по умолчанию без падения напряжения на резисторе шунта
sinrab 3:791cf9a867d1 100 char *ron = "On "; // для вывода в меню главных настроек On
sinrab 3:791cf9a867d1 101 char *roff = "Off"; // для вывода в меню главных настроек Off
sinrab 0:ed1ba99f7b14 102 //---------------------------
sinrab 0:ed1ba99f7b14 103 float avgAin0(); // среднее значение с входа A0
sinrab 0:ed1ba99f7b14 104 float avgAin1(); // среднее значение с входа A1
sinrab 0:ed1ba99f7b14 105 float avgAin2(); // среднее значение с входа A2
sinrab 0:ed1ba99f7b14 106 float avgAin3(); // среднее значение с входа A3
sinrab 0:ed1ba99f7b14 107 //----
sinrab 0:ed1ba99f7b14 108 float in0 = 0;
sinrab 0:ed1ba99f7b14 109 float in1 = 0;
sinrab 0:ed1ba99f7b14 110 float in2 = 0;
sinrab 0:ed1ba99f7b14 111 float in3 = 0;
sinrab 0:ed1ba99f7b14 112 //----
sinrab 3:791cf9a867d1 113 float U5 = 0;
sinrab 0:ed1ba99f7b14 114 float Ireal = 0;
sinrab 3:791cf9a867d1 115 float U30 = 0;
sinrab 0:ed1ba99f7b14 116 //---------------------------
sinrab 0:ed1ba99f7b14 117 void dataProcessing(void); // обработка и подготовка данных с аналоговых входов
sinrab 0:ed1ba99f7b14 118 void powerButton(void); // при нажатии кнопки питания
sinrab 0:ed1ba99f7b14 119 void buttonUse(void); // обработка нажатий кнопок
sinrab 0:ed1ba99f7b14 120 //-----------------------------------------------------------------------------------------------------------
sinrab 4:776f59129c24 121 float a0a = 0.000679; // A0 - U 5 - avg при 0 - нижняя точка U 5 вольт
sinrab 4:776f59129c24 122 float a0k = 5.006402; // A0 - U 5 - коэффициент - верхняя точка
sinrab 0:ed1ba99f7b14 123 //---------------------------------------------------------------
sinrab 4:776f59129c24 124 float a1a = 0.143353; // A1 - I бп - avg при 0 - нижняя точка a1a = avgAin1() - 0.00004
sinrab 4:776f59129c24 125 float a1k = 3.224676; // A1 - I бп - коэффициент - верхняя точка a1k = 2000/(avgAin1() - a1a) при 2амперах
sinrab 0:ed1ba99f7b14 126 //---------------------------------------------------------------
sinrab 4:776f59129c24 127 float a2a = 0.000015; // A2 - U 30 - avg при 0 - нижняя точка U 33 вольта
sinrab 4:776f59129c24 128 float a2k = 33.627953; // A2 - U 30 - коэффициент - верхняя точка
sinrab 0:ed1ba99f7b14 129 //---------------------------------------------------------------
sinrab 0:ed1ba99f7b14 130 float noisea0; //типа уровень шума (разница между минимум и максимум за 100 измерений) для А0
sinrab 0:ed1ba99f7b14 131 float noisea1; // - - для A1
sinrab 0:ed1ba99f7b14 132 float noisea2; // - - для A2
sinrab 0:ed1ba99f7b14 133 float noisea3; // - - для A3
sinrab 0:ed1ba99f7b14 134 //-----------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 135 DigitalIn buttonUp(D3); // Up
sinrab 3:791cf9a867d1 136 DigitalIn buttonDown(D2); // Down
sinrab 3:791cf9a867d1 137 DigitalIn buttonEnter(A5); // Enter
sinrab 0:ed1ba99f7b14 138 int Screen=1; // по умолчанию грузим первое меню
sinrab 0:ed1ba99f7b14 139 int complit=0; // в начале меню не прорисовано
sinrab 0:ed1ba99f7b14 140 int pb=0; // для прорисовки кнопки
sinrab 0:ed1ba99f7b14 141 int kline=15; // номер начальной строки в меню калибровки экран 4
sinrab 1:7bc0f280c259 142 int mline=15; // номер начальной строки в меню Настройки главная экран 5
sinrab 0:ed1ba99f7b14 143 int mline2=0; //в главном меню строка 2 не выбрана
sinrab 3:791cf9a867d1 144 int mline4=0; // 4
sinrab 3:791cf9a867d1 145 int mline5=0; // 5
sinrab 3:791cf9a867d1 146 int mline6=0; // 6
sinrab 3:791cf9a867d1 147 int mline7=0; // 7
sinrab 3:791cf9a867d1 148 int mline8=0; // 8
sinrab 3:791cf9a867d1 149 int mline11=0; // 11
sinrab 4:776f59129c24 150 int mline12=0; // 12
sinrab 4:776f59129c24 151 int mline13=0; // 13
sinrab 4:776f59129c24 152 int mline14=0; // 14
sinrab 1:7bc0f280c259 153 int nline=8; // номер начальной строки в меню установки времени экран 3
sinrab 0:ed1ba99f7b14 154 int pmenu=0; //в главном меню изменение выбраной строки не действительно
sinrab 0:ed1ba99f7b14 155 int powerProtect=1; //защита от кз
sinrab 0:ed1ba99f7b14 156 int pp=0; //защита от кз для прорисовки меню
sinrab 3:791cf9a867d1 157 //int cc=0; // значит идет C.V
sinrab 2:d20b1ef35d3f 158 int pm=0; // для одной прорисовки сс и сv
sinrab 3:791cf9a867d1 159 int cs=0; // короткое замыкание
sinrab 3:791cf9a867d1 160 int csp=0; // для одной прорисовки короткого замыкания
sinrab 3:791cf9a867d1 161 float brightness = 1.0f; //яркость экрана
sinrab 3:791cf9a867d1 162 PwmOut pinbrightness(D6); // выход на ключ регулировки яркости экрана
sinrab 3:791cf9a867d1 163 float fanspeed = 0.0f;
sinrab 3:791cf9a867d1 164 PwmOut fan(D7); // выход вентилятора
sinrab 3:791cf9a867d1 165 int temperature = 25; // текущая температура
sinrab 4:776f59129c24 166 int screensaver=0; // заставка 0 - нет, 1 - часы, 2- ...
sinrab 4:776f59129c24 167 int beeper=0; //бипер выключен
sinrab 0:ed1ba99f7b14 168 //-----------------------------------------------------------------------------------------------------------
sinrab 3:791cf9a867d1 169 DigitalOut powerMosfet(D4); // выход управления нагрузкой
sinrab 4:776f59129c24 170 DigitalIn cc(PC_5); //вход СС 0 - СС, 1 - CV
sinrab 3:791cf9a867d1 171 int ccc=0;
sinrab 3:791cf9a867d1 172 DigitalOut ledcc(PC_6); // светодиод C.C
sinrab 3:791cf9a867d1 173 DigitalOut ledshort(PC_8); // светодиод КЗ
sinrab 0:ed1ba99f7b14 174 AnalogIn ainA0(A0);
sinrab 0:ed1ba99f7b14 175 AnalogIn ainA1(A1);
sinrab 0:ed1ba99f7b14 176 AnalogIn ainA2(A2);
sinrab 0:ed1ba99f7b14 177 AnalogIn ainA3(A3);
sinrab 3:791cf9a867d1 178 //AnalogIn ainA4(A4);
sinrab 3:791cf9a867d1 179 //AnalogIn ainA5(A5);
sinrab 4:776f59129c24 180 //BusOut unused(A4,A5);
sinrab 4:776f59129c24 181 //-------------для screen7--
sinrab 4:776f59129c24 182 int iiii=0;
sinrab 4:776f59129c24 183 //--------------------------
sinrab 0:ed1ba99f7b14 184 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 185 //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
sinrab 4:776f59129c24 186 void loaddefaultsettings(void)
sinrab 4:776f59129c24 187 {
sinrab 4:776f59129c24 188 a0a = 0.000679;
sinrab 4:776f59129c24 189 a0k = 5.006402;
sinrab 4:776f59129c24 190 a1a = 0.143353;
sinrab 4:776f59129c24 191 a1k = 3.224676;
sinrab 4:776f59129c24 192 a2a = 0.000015;
sinrab 4:776f59129c24 193 a2k = 33.627953;
sinrab 4:776f59129c24 194 imax=2.6;
sinrab 4:776f59129c24 195 rdown=0.05;
sinrab 4:776f59129c24 196 brightness = 1.0f;
sinrab 4:776f59129c24 197 beeper = 0;
sinrab 4:776f59129c24 198 rdown_on=1;
sinrab 4:776f59129c24 199 umax=31;
sinrab 4:776f59129c24 200 tempstart=42;
sinrab 4:776f59129c24 201 tempfull=60;
sinrab 4:776f59129c24 202 tempcutoff=80;
sinrab 4:776f59129c24 203 screensaver=0;
sinrab 4:776f59129c24 204 ledcc=1;
sinrab 4:776f59129c24 205 wait(0.5);
sinrab 4:776f59129c24 206 ledcc=0;
sinrab 4:776f59129c24 207 wait(0.5);
sinrab 4:776f59129c24 208 }
sinrab 4:776f59129c24 209 //------------------------------------------------------------------------------------------------------------
sinrab 4:776f59129c24 210 void loadsettings(void)
sinrab 4:776f59129c24 211 {
sinrab 4:776f59129c24 212 int s;
sinrab 4:776f59129c24 213 int s1;
sinrab 4:776f59129c24 214 eeprom.nbyte_read(0, (char*)&s, sizeof(s));
sinrab 4:776f59129c24 215 eeprom.nbyte_read(4, (char*)&s1, sizeof(s1));
sinrab 4:776f59129c24 216 if (s==0 && s1==1) { //если флэш активирована то грузим с неё
sinrab 4:776f59129c24 217 ledshort=1; // 1 раз моргнуло - начало загрузки
sinrab 4:776f59129c24 218 wait(0.02);
sinrab 4:776f59129c24 219 ledshort=0;
sinrab 4:776f59129c24 220
sinrab 4:776f59129c24 221 eeprom.nbyte_read(8, (char*)&a0a, sizeof(a0a)); // a0a float - 4 байта
sinrab 4:776f59129c24 222 eeprom.nbyte_read(12, (char*)&a0k, sizeof(a0k)); // a0k float - 4 байта
sinrab 4:776f59129c24 223 eeprom.nbyte_read(16, (char*)&a1a, sizeof(a1a)); // a1a float - 4 байта
sinrab 4:776f59129c24 224 eeprom.nbyte_read(20, (char*)&a1k, sizeof(a1k)); // a1k float - 4 байта
sinrab 4:776f59129c24 225 eeprom.nbyte_read(24, (char*)&a2a, sizeof(a2a)); // a2a float - 4 байта
sinrab 4:776f59129c24 226 eeprom.nbyte_read(28, (char*)&a2k, sizeof(a2k)); // a2k float - 4 байта
sinrab 4:776f59129c24 227
sinrab 4:776f59129c24 228 eeprom.nbyte_read(32, (char*)&imax, sizeof(imax)); // imax float - 4 байта
sinrab 4:776f59129c24 229 eeprom.nbyte_read(36, (char*)&rdown, sizeof(rdown)); // rdown float - 4 байта
sinrab 4:776f59129c24 230 eeprom.nbyte_read(40, (char*)&brightness, sizeof(brightness)); // brightness float - 4 байта
sinrab 4:776f59129c24 231 eeprom.nbyte_read(44, (char*)&beeper, sizeof(beeper)); // beeper float - 4 байта
sinrab 4:776f59129c24 232
sinrab 4:776f59129c24 233 eeprom.nbyte_read(48, (char*)&rdown_on, sizeof(rdown_on)); // rdown_on float - 4 байт
sinrab 4:776f59129c24 234 eeprom.nbyte_read(52, (char*)&umax, sizeof(umax)); // umax float - 4 байт
sinrab 4:776f59129c24 235 eeprom.nbyte_read(56, (char*)&tempstart, sizeof(tempstart)); // tempstart float - 4 байт
sinrab 4:776f59129c24 236 eeprom.nbyte_read(60, (char*)&tempfull, sizeof(tempfull)); // tempfull float - 4 байт
sinrab 4:776f59129c24 237 eeprom.nbyte_read(64, (char*)&tempcutoff, sizeof(tempcutoff)); // tempcutoff float - 4 байт
sinrab 4:776f59129c24 238 eeprom.nbyte_read(68, (char*)&screensaver, sizeof(screensaver)); // screensaver float - 4 байт
sinrab 4:776f59129c24 239
sinrab 4:776f59129c24 240 wait(0.05); // 2 раза моргнуло удачно загрузили
sinrab 4:776f59129c24 241 ledshort=1;
sinrab 4:776f59129c24 242 wait(0.02);
sinrab 4:776f59129c24 243 ledshort=0;
sinrab 4:776f59129c24 244 }
sinrab 4:776f59129c24 245 }
sinrab 4:776f59129c24 246 //------------------------------------------------------------------------------------------------------------
sinrab 4:776f59129c24 247 void savedefaulttoflash(void)
sinrab 4:776f59129c24 248 {
sinrab 4:776f59129c24 249
sinrab 4:776f59129c24 250 a0a = 0.000679;
sinrab 4:776f59129c24 251 a0k = 5.006402;
sinrab 4:776f59129c24 252 a1a = 0.143353;
sinrab 4:776f59129c24 253 a1k = 3.224676;
sinrab 4:776f59129c24 254 a2a = 0.000015;
sinrab 4:776f59129c24 255 a2k = 33.627953;
sinrab 4:776f59129c24 256 imax=2.6;
sinrab 4:776f59129c24 257 rdown=0.05;
sinrab 4:776f59129c24 258 brightness = 1.0f;
sinrab 4:776f59129c24 259 beeper = 0;
sinrab 4:776f59129c24 260 rdown_on=1;
sinrab 4:776f59129c24 261 umax=31;
sinrab 4:776f59129c24 262 tempstart=42;
sinrab 4:776f59129c24 263 tempfull=60;
sinrab 4:776f59129c24 264 tempcutoff=80;
sinrab 4:776f59129c24 265 screensaver=0;
sinrab 4:776f59129c24 266
sinrab 4:776f59129c24 267
sinrab 4:776f59129c24 268 ledshort=1; // 1 раз моргнуло - начало записи
sinrab 4:776f59129c24 269 wait(0.02);
sinrab 4:776f59129c24 270 ledshort=0;
sinrab 4:776f59129c24 271 wait(0.05);
sinrab 4:776f59129c24 272
sinrab 4:776f59129c24 273 int s=0;
sinrab 4:776f59129c24 274 int s1=1;
sinrab 4:776f59129c24 275 eeprom.nbyte_write(0, (char*)&s, sizeof(s));
sinrab 4:776f59129c24 276 eeprom.nbyte_write(4, (char*)&s1, sizeof(s1));
sinrab 4:776f59129c24 277
sinrab 4:776f59129c24 278 eeprom.nbyte_write(8, (char*)&a0a, sizeof(a0a)); // a0a float - 4 байта
sinrab 4:776f59129c24 279 eeprom.nbyte_write(12, (char*)&a0k, sizeof(a0k)); // a0k float - 4 байта
sinrab 4:776f59129c24 280 eeprom.nbyte_write(16, (char*)&a1a, sizeof(a1a)); // a1a float - 4 байта
sinrab 4:776f59129c24 281 eeprom.nbyte_write(20, (char*)&a1k, sizeof(a1k)); // a1k float - 4 байта
sinrab 4:776f59129c24 282 eeprom.nbyte_write(24, (char*)&a2a, sizeof(a2a)); // a2a float - 4 байта
sinrab 4:776f59129c24 283 eeprom.nbyte_write(28, (char*)&a2k, sizeof(a2k)); // a2k float - 4 байта
sinrab 4:776f59129c24 284
sinrab 4:776f59129c24 285 eeprom.nbyte_write(32, (char*)&imax, sizeof(imax)); // imax float - 4 байта
sinrab 4:776f59129c24 286 eeprom.nbyte_write(36, (char*)&rdown, sizeof(rdown)); // rdown float - 4 байта
sinrab 4:776f59129c24 287 eeprom.nbyte_write(40, (char*)&brightness, sizeof(brightness)); // brightness float - 4 байта
sinrab 4:776f59129c24 288 eeprom.nbyte_write(44, (char*)&beeper, sizeof(beeper)); // beeper float - 4 байта
sinrab 4:776f59129c24 289
sinrab 4:776f59129c24 290 eeprom.nbyte_write(48, (char*)&rdown_on, sizeof(rdown_on)); // rdown_on float - 4 байта
sinrab 4:776f59129c24 291 eeprom.nbyte_write(52, (char*)&umax, sizeof(umax)); // umax float - 4 байта
sinrab 4:776f59129c24 292 eeprom.nbyte_write(56, (char*)&tempstart, sizeof(tempstart)); // tempstart float - 4 байта
sinrab 4:776f59129c24 293 eeprom.nbyte_write(60, (char*)&tempfull, sizeof(tempfull)); // tempfull float - 4 байта
sinrab 4:776f59129c24 294 eeprom.nbyte_write(64, (char*)&tempcutoff, sizeof(tempcutoff)); // tempcutoff float - 4 байта
sinrab 4:776f59129c24 295 eeprom.nbyte_write(68, (char*)&screensaver, sizeof(screensaver)); // screensaver float - 4 байта
sinrab 4:776f59129c24 296
sinrab 4:776f59129c24 297 int l;
sinrab 4:776f59129c24 298 int l1;
sinrab 4:776f59129c24 299 eeprom.nbyte_read(0, (char*)&l, sizeof(l));
sinrab 4:776f59129c24 300 eeprom.nbyte_read(4, (char*)&l1, sizeof(l1));
sinrab 4:776f59129c24 301
sinrab 4:776f59129c24 302 if (l==s && l1==s1) { //удачно сохранилось - 2 раза моргнуло
sinrab 4:776f59129c24 303 ledshort=1;
sinrab 4:776f59129c24 304 wait(0.02);
sinrab 4:776f59129c24 305 ledshort=0;
sinrab 4:776f59129c24 306 } else {
sinrab 4:776f59129c24 307 ledshort=1;
sinrab 4:776f59129c24 308 TFT.background(Black);
sinrab 4:776f59129c24 309 TFT.foreground(Red);
sinrab 4:776f59129c24 310 TFT.set_font((unsigned char*) Consolas19x35);
sinrab 4:776f59129c24 311 TFT.locate(10, 100);
sinrab 4:776f59129c24 312 TFT.printf("SAVE ERROR");
sinrab 4:776f59129c24 313 wait(5);
sinrab 4:776f59129c24 314 ledshort=0;
sinrab 4:776f59129c24 315 }
sinrab 4:776f59129c24 316 }
sinrab 0:ed1ba99f7b14 317 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 318 void bootCold(void)
sinrab 0:ed1ba99f7b14 319 {
sinrab 4:776f59129c24 320 i2c.frequency(100000);
sinrab 0:ed1ba99f7b14 321 powerMosfet = 0; // при включении выход выключен
sinrab 3:791cf9a867d1 322 ledcc=0;
sinrab 3:791cf9a867d1 323 ledshort=0;
sinrab 4:776f59129c24 324 TFT.claim(stdout);
sinrab 1:7bc0f280c259 325 set_time(1414838392); // Set RTC time to Wed, 28 Oct 2009 11:35:37
sinrab 0:ed1ba99f7b14 326 tstart = treal = time(NULL);
sinrab 1:7bc0f280c259 327 pinbrightness.period(0.001); // задаём частоту Шим подсветки 0.001 - 1000 герц
sinrab 3:791cf9a867d1 328 fan.period(0.01);
sinrab 0:ed1ba99f7b14 329 TFT.set_orientation(3);
sinrab 0:ed1ba99f7b14 330 TFT.background(Black);
sinrab 0:ed1ba99f7b14 331 TFT.cls();
sinrab 0:ed1ba99f7b14 332 wait(0.2);
sinrab 3:791cf9a867d1 333 fan = fanspeed; // устанавливаем скорость
sinrab 0:ed1ba99f7b14 334 }
sinrab 0:ed1ba99f7b14 335 //------------------------------------------------------------------------------------------------------------
sinrab 4:776f59129c24 336 void bootscreen(void)
sinrab 4:776f59129c24 337 {
sinrab 4:776f59129c24 338
sinrab 4:776f59129c24 339 wait(0.5);
sinrab 4:776f59129c24 340 TFT.background(Black);
sinrab 4:776f59129c24 341 TFT.foreground(White);
sinrab 4:776f59129c24 342 TFT.set_font((unsigned char*) CourierNew13x23);
sinrab 4:776f59129c24 343 TFT.locate(0, 100);
sinrab 4:776f59129c24 344 TFT.printf("Load settings...\n");
sinrab 4:776f59129c24 345 pinbrightness = brightness; // включаем подсветку
sinrab 4:776f59129c24 346 wait(0.5);
sinrab 4:776f59129c24 347 if (beeper==1) {
sinrab 4:776f59129c24 348 buzzer.beep(480,0.01);
sinrab 4:776f59129c24 349 }
sinrab 4:776f59129c24 350
sinrab 4:776f59129c24 351 if (buttonEnter==0) {
sinrab 4:776f59129c24 352 TFT.printf("default.\n");
sinrab 4:776f59129c24 353 wait(0.5);
sinrab 4:776f59129c24 354 loaddefaultsettings();
sinrab 4:776f59129c24 355 }else{
sinrab 4:776f59129c24 356 TFT.printf("from flash.\n");
sinrab 4:776f59129c24 357 wait(1);
sinrab 4:776f59129c24 358 loadsettings();
sinrab 4:776f59129c24 359 }
sinrab 4:776f59129c24 360 }
sinrab 4:776f59129c24 361 //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 362 int main() //--------- Главная функция ---------//
sinrab 0:ed1ba99f7b14 363 {
sinrab 0:ed1ba99f7b14 364 bootCold(); // холодный старт
sinrab 4:776f59129c24 365 bootscreen();
sinrab 0:ed1ba99f7b14 366 button.fall(&powerButton); // прерывание кнопки включения нагрузки запускает функцию
sinrab 0:ed1ba99f7b14 367
sinrab 0:ed1ba99f7b14 368 while(1) {
sinrab 0:ed1ba99f7b14 369
sinrab 0:ed1ba99f7b14 370 dataProcessing(); // обработка и подготовка данных с аналоговых входов
sinrab 4:776f59129c24 371 fans();
sinrab 4:776f59129c24 372 Protect();
sinrab 4:776f59129c24 373 if (saveractive==0) {
sinrab 4:776f59129c24 374 buttonUse(); // обработка нажатий кнопок
sinrab 4:776f59129c24 375 }
sinrab 4:776f59129c24 376 ScreenSaver(); // заставка
sinrab 0:ed1ba99f7b14 377 if (Screen == 1) drawScreen1();
sinrab 0:ed1ba99f7b14 378 if (Screen == 2) drawScreen2();
sinrab 0:ed1ba99f7b14 379 if (Screen == 3) drawScreen3();
sinrab 0:ed1ba99f7b14 380 if (Screen == 4) drawScreen4();
sinrab 0:ed1ba99f7b14 381 if (Screen == 5) drawScreen5();
sinrab 0:ed1ba99f7b14 382 if (Screen == 6) drawScreen6();
sinrab 0:ed1ba99f7b14 383 if (Screen == 7) drawScreen7();
sinrab 0:ed1ba99f7b14 384 if (Screen == 8) drawScreen8();
sinrab 0:ed1ba99f7b14 385
sinrab 0:ed1ba99f7b14 386 }
sinrab 0:ed1ba99f7b14 387 } //--------- Главная функция ---------//
sinrab 4:776f59129c24 388 //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 389 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 390 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 391 void drawScreen1(void) // экран 1
sinrab 0:ed1ba99f7b14 392 {
sinrab 0:ed1ba99f7b14 393 if (complit==0) {
sinrab 3:791cf9a867d1 394 pm=0;
sinrab 3:791cf9a867d1 395 ccc=0;
sinrab 0:ed1ba99f7b14 396 pb=0;
sinrab 0:ed1ba99f7b14 397 pp=0;
sinrab 0:ed1ba99f7b14 398 TFT.set_orientation(3);
sinrab 0:ed1ba99f7b14 399 TFT.background(Black);
sinrab 0:ed1ba99f7b14 400 TFT.cls();
sinrab 3:791cf9a867d1 401 TFT.rect(0,0,319,239,colorline); //рамка
sinrab 3:791cf9a867d1 402 TFT.rect(10,62,309,76,colorline); //аналоговая рамка 1
sinrab 3:791cf9a867d1 403 TFT.rect(10,137,309,151,colorline); //авалоговая рамка 2
sinrab 0:ed1ba99f7b14 404 //grid();
sinrab 0:ed1ba99f7b14 405 //int y = 51;
sinrab 0:ed1ba99f7b14 406 //TFT.line(5,y,310,y, White);
sinrab 0:ed1ba99f7b14 407 TFT.background(Black);
sinrab 3:791cf9a867d1 408 TFT.foreground(colorline); // цвет слов
sinrab 4:776f59129c24 409 TFT.set_font((unsigned char*) Consolas26x49);
sinrab 2:d20b1ef35d3f 410 TFT.locate(193, 13);
sinrab 3:791cf9a867d1 411 TFT.printf("v"); // V
sinrab 4:776f59129c24 412 TFT.locate(165, 88);
sinrab 3:791cf9a867d1 413 TFT.printf("ma"); // mA
sinrab 0:ed1ba99f7b14 414 complit = 1; // прорисовали!
sinrab 0:ed1ba99f7b14 415
sinrab 3:791cf9a867d1 416 TFT.fillrect(7,161,104,183,0x2104); // подвал левый квадрат верхний заливка
sinrab 3:791cf9a867d1 417 TFT.fillrect(7,185,104,207,0x2104); // средний
sinrab 3:791cf9a867d1 418 TFT.fillrect(7,207,104,231,0x2104); // нижний
sinrab 0:ed1ba99f7b14 419
sinrab 3:791cf9a867d1 420 TFT.rect(6,160,105,232,colorline); // левый квадрат
sinrab 3:791cf9a867d1 421 TFT.line(7,184,104,184,colorline); // левый разделительная линия вверхняя
sinrab 3:791cf9a867d1 422 TFT.line(7,208,104,208,colorline); // нижняя
sinrab 3:791cf9a867d1 423 TFT.rect(112,160,207,192,colorline); //средний квадрат верх
sinrab 3:791cf9a867d1 424 TFT.rect(112,198,207,232,colorline); // низ
sinrab 3:791cf9a867d1 425 TFT.rect(214,160,313,232,colorline); //правый квадрат
sinrab 0:ed1ba99f7b14 426
sinrab 0:ed1ba99f7b14 427 }
sinrab 0:ed1ba99f7b14 428 //-----------------------------------------------------------------------------
sinrab 3:791cf9a867d1 429 if (powerProtect==0 & pp==0) { // защита от кз
sinrab 4:776f59129c24 430 TFT.fillrect(113,161,206,191,Black); //0
sinrab 3:791cf9a867d1 431 TFT.background(Black);
sinrab 3:791cf9a867d1 432 TFT.foreground(0x4208);
sinrab 0:ed1ba99f7b14 433 TFT.set_font((unsigned char*) Lucida13x21);
sinrab 3:791cf9a867d1 434 TFT.locate(115, 165);
sinrab 3:791cf9a867d1 435 TFT.printf("Protect");
sinrab 3:791cf9a867d1 436 pp=1;
sinrab 3:791cf9a867d1 437 }
sinrab 3:791cf9a867d1 438 if (powerProtect==1 & pp==0) { //1
sinrab 3:791cf9a867d1 439 TFT.fillrect(113,161,206,191,0x0180);
sinrab 3:791cf9a867d1 440 TFT.background(0x0180);
sinrab 3:791cf9a867d1 441 TFT.foreground(Green);
sinrab 3:791cf9a867d1 442 TFT.set_font((unsigned char*) Lucida13x21);
sinrab 3:791cf9a867d1 443 TFT.locate(115, 165);
sinrab 0:ed1ba99f7b14 444 TFT.printf("Protect");
sinrab 0:ed1ba99f7b14 445 pp=1;
sinrab 0:ed1ba99f7b14 446 }
sinrab 4:776f59129c24 447
sinrab 4:776f59129c24 448 if (cs==0 & csp==0) { // прорисовка короткого замыкания TFT.rect(112,198,207,232,colorline);
sinrab 3:791cf9a867d1 449 TFT.fillrect(113,199,206,231,Black); //0
sinrab 3:791cf9a867d1 450 TFT.background(Black);
sinrab 3:791cf9a867d1 451 TFT.foreground(0x4208);
sinrab 0:ed1ba99f7b14 452 TFT.set_font((unsigned char*) Lucida13x21);
sinrab 3:791cf9a867d1 453 TFT.locate(130, 205);
sinrab 3:791cf9a867d1 454 TFT.printf("SHORT");
sinrab 3:791cf9a867d1 455 csp=1;
sinrab 4:776f59129c24 456 }
sinrab 4:776f59129c24 457 if (cs==1 & csp==0) { //1
sinrab 3:791cf9a867d1 458 TFT.fillrect(113,199,206,231,0x6000);
sinrab 3:791cf9a867d1 459 TFT.background(0x6000);
sinrab 3:791cf9a867d1 460 TFT.foreground(Red);
sinrab 3:791cf9a867d1 461 TFT.set_font((unsigned char*) Lucida13x21);
sinrab 3:791cf9a867d1 462 TFT.locate(130, 205);
sinrab 3:791cf9a867d1 463 TFT.printf("SHORT");
sinrab 3:791cf9a867d1 464 csp=1;
sinrab 4:776f59129c24 465 }
sinrab 4:776f59129c24 466
sinrab 0:ed1ba99f7b14 467
sinrab 0:ed1ba99f7b14 468
sinrab 2:d20b1ef35d3f 469 fps.reset();
sinrab 2:d20b1ef35d3f 470 fps.start();
sinrab 4:776f59129c24 471
sinrab 0:ed1ba99f7b14 472 TFT.background(Black);
sinrab 4:776f59129c24 473
sinrab 4:776f59129c24 474 if (cc==0) { //если C.C то меняем цвет значения напряжения
sinrab 2:d20b1ef35d3f 475 TFT.foreground(Red);
sinrab 4:776f59129c24 476 } else {
sinrab 2:d20b1ef35d3f 477 TFT.foreground(Green);
sinrab 2:d20b1ef35d3f 478 }
sinrab 4:776f59129c24 479
sinrab 0:ed1ba99f7b14 480 TFT.set_font((unsigned char*) digi36x44);
sinrab 0:ed1ba99f7b14 481 TFT.locate(10, 10);
sinrab 3:791cf9a867d1 482 if(U5<0) U5=0;
sinrab 4:776f59129c24 483 if (U5<4.5f) {
sinrab 3:791cf9a867d1 484 //TFT.fillrect(10,10,46,54,Black);
sinrab 3:791cf9a867d1 485 TFT.locate(10, 10);
sinrab 3:791cf9a867d1 486 TFT.printf("%5.3f", U5); // выводим значение с A0 (напряжение)
sinrab 4:776f59129c24 487 } else {
sinrab 4:776f59129c24 488 TFT.locate(10, 10);
sinrab 4:776f59129c24 489 TFT.printf("%05.2f", U30); // выводим значение с A0 (напряжение)
sinrab 2:d20b1ef35d3f 490 }
sinrab 4:776f59129c24 491
sinrab 2:d20b1ef35d3f 492 TFT.pixel(82, 53, Black);
sinrab 2:d20b1ef35d3f 493 TFT.pixel(117, 53, Black);
sinrab 4:776f59129c24 494
sinrab 0:ed1ba99f7b14 495 TFT.locate(10, 85);
sinrab 2:d20b1ef35d3f 496 TFT.foreground(Green);
sinrab 3:791cf9a867d1 497 TFT.printf("%04.0f", Ireal); // выводим значение с A1 (ток)
sinrab 0:ed1ba99f7b14 498
sinrab 2:d20b1ef35d3f 499
sinrab 3:791cf9a867d1 500 TFT.background(0x2104); // выводим мощность W
sinrab 2:d20b1ef35d3f 501 TFT.foreground(0xE71C);//текст
sinrab 0:ed1ba99f7b14 502 TFT.set_font((unsigned char*) Lucida13x21);
sinrab 0:ed1ba99f7b14 503 TFT.locate(11, 162);
sinrab 4:776f59129c24 504 //TFT.printf("%05.2f W", U5*Ireal/1000);
sinrab 4:776f59129c24 505 TFT.printf("%f", fanspeed*100);
sinrab 0:ed1ba99f7b14 506
sinrab 4:776f59129c24 507 TFT.background(0x2104); // выводим время включеной нагрузки
sinrab 2:d20b1ef35d3f 508 TFT.foreground(0xE71C);//текст
sinrab 0:ed1ba99f7b14 509 TFT.set_font((unsigned char*) Lucida13x21);
sinrab 3:791cf9a867d1 510 TFT.locate(7, 187);
sinrab 0:ed1ba99f7b14 511 timeConvert();
sinrab 0:ed1ba99f7b14 512 TFT.printf("%02d:%02d:%02d", h, m, s);
sinrab 0:ed1ba99f7b14 513
sinrab 0:ed1ba99f7b14 514
sinrab 3:791cf9a867d1 515 if (powerMosfet==0 & pb==0) { // выводим OFF
sinrab 3:791cf9a867d1 516 TFT.background(Black);
sinrab 2:d20b1ef35d3f 517 TFT.foreground(0xA514);
sinrab 3:791cf9a867d1 518 TFT.fillrect(215,161,312,231,Black);
sinrab 0:ed1ba99f7b14 519 TFT.set_font((unsigned char*) Consolas26x49);
sinrab 3:791cf9a867d1 520 TFT.locate(227, 174);
sinrab 0:ed1ba99f7b14 521 TFT.printf("OFF");
sinrab 0:ed1ba99f7b14 522 pb=1;
sinrab 0:ed1ba99f7b14 523 }
sinrab 3:791cf9a867d1 524 if (powerMosfet==1 & pb==0) { // выводим ON
sinrab 3:791cf9a867d1 525 TFT.background(color_back_on);
sinrab 3:791cf9a867d1 526 TFT.foreground(color_text_on);
sinrab 3:791cf9a867d1 527 TFT.fillrect(215,161,312,231,color_back_on);
sinrab 0:ed1ba99f7b14 528 TFT.set_font((unsigned char*) Consolas26x49);
sinrab 3:791cf9a867d1 529 TFT.locate(238, 174);
sinrab 0:ed1ba99f7b14 530 TFT.printf("ON");
sinrab 0:ed1ba99f7b14 531 pb=1;
sinrab 0:ed1ba99f7b14 532 }
sinrab 4:776f59129c24 533
sinrab 4:776f59129c24 534 int xscale1 = map(U30, 0, umax, 0, 298);
sinrab 2:d20b1ef35d3f 535 if (xscale1>297) xscale1=298;
sinrab 4:776f59129c24 536 TFT.fillrect(11, 63, (xscale1+10), 75, color_scale1); //0x04C9 // аналоговая шкала Напряжение
sinrab 2:d20b1ef35d3f 537 TFT.fillrect((xscale1+12), 63, 308, 75, Black);
sinrab 4:776f59129c24 538
sinrab 4:776f59129c24 539 int xscale2 = map(Ireal, 0, imax*1000, 0, 298);
sinrab 2:d20b1ef35d3f 540 if (xscale2>297) xscale2=298;
sinrab 3:791cf9a867d1 541 TFT.fillrect(11, 138, (xscale2+10), 150, color_scale2); //0x9A60 // аналоговая шкала Ток
sinrab 3:791cf9a867d1 542 TFT.fillrect((xscale2+11), 138, 308, 150, Black);
sinrab 4:776f59129c24 543
sinrab 3:791cf9a867d1 544 //int zxc = int(Iset);
sinrab 3:791cf9a867d1 545 //if (zxc>295) zxc=295;
sinrab 3:791cf9a867d1 546 //if (zxc<0) zxc=0;
sinrab 3:791cf9a867d1 547 //TFT.fillrect(11+zxc,138, 13+zxc, 150, Red); // шкала I set
sinrab 0:ed1ba99f7b14 548
sinrab 2:d20b1ef35d3f 549 fps.stop();
sinrab 3:791cf9a867d1 550 TFT.set_font((unsigned char*) Courier8x13); // FPS
sinrab 3:791cf9a867d1 551 TFT.locate(169,81);
sinrab 2:d20b1ef35d3f 552 printf("%0.2f", (1/fps.read()));
sinrab 4:776f59129c24 553
sinrab 3:791cf9a867d1 554 TFT.background(0x2104);
sinrab 3:791cf9a867d1 555 TFT.foreground(White);
sinrab 4:776f59129c24 556 TFT.set_font((unsigned char*) Lucida13x21); //выводим Температуру
sinrab 4:776f59129c24 557 TFT.locate(11, 211);
sinrab 3:791cf9a867d1 558 TFT.printf(" %d 'C ", temperature);
sinrab 4:776f59129c24 559
sinrab 3:791cf9a867d1 560 /*
sinrab 3:791cf9a867d1 561 if (dinCC==1 & cc_one==1){
sinrab 3:791cf9a867d1 562 cc=1;
sinrab 3:791cf9a867d1 563 pm=0;
sinrab 3:791cf9a867d1 564 cc_one=0;
sinrab 3:791cf9a867d1 565 }
sinrab 3:791cf9a867d1 566 if (dinCC==0 & cc_one==0){
sinrab 3:791cf9a867d1 567 cc=0;
sinrab 3:791cf9a867d1 568 pm=0;
sinrab 3:791cf9a867d1 569 cc_one=1;
sinrab 3:791cf9a867d1 570 }
sinrab 3:791cf9a867d1 571 */
sinrab 4:776f59129c24 572 if(cc==1 & ccc==1) { // защелка для отображения сс сv
sinrab 3:791cf9a867d1 573 pm=0;
sinrab 3:791cf9a867d1 574 ccc=0;
sinrab 4:776f59129c24 575 }
sinrab 4:776f59129c24 576 if(cc==0 & ccc==0) {
sinrab 3:791cf9a867d1 577 pm=0;
sinrab 3:791cf9a867d1 578 ccc=1;
sinrab 4:776f59129c24 579 }
sinrab 4:776f59129c24 580
sinrab 4:776f59129c24 581 if(cc==0 & pm==0) { // c.c
sinrab 2:d20b1ef35d3f 582 TFT.fillrect(240,10,304,53,Black);//c.v стереть
sinrab 2:d20b1ef35d3f 583 TFT.fillrect(240,85,304,128,0x6000);//c.c
sinrab 3:791cf9a867d1 584 TFT.rect(240,85,304,128,0xC800);
sinrab 2:d20b1ef35d3f 585 TFT.background(0x6000);
sinrab 2:d20b1ef35d3f 586 TFT.foreground(Red);
sinrab 2:d20b1ef35d3f 587 TFT.set_font((unsigned char*) Consolas19x35);
sinrab 2:d20b1ef35d3f 588 TFT.locate(246, 89);
sinrab 2:d20b1ef35d3f 589 TFT.printf("C.C");
sinrab 2:d20b1ef35d3f 590 pm=1;
sinrab 2:d20b1ef35d3f 591 }
sinrab 4:776f59129c24 592 if(cc==1 & pm==0) { // c.v
sinrab 2:d20b1ef35d3f 593 TFT.fillrect(240,85,304,128,Black);//c.c стереть
sinrab 4:776f59129c24 594 TFT.fillrect(240,10,304,53,0x0180);//c.v
sinrab 4:776f59129c24 595 TFT.rect(240,10,304,53,0x04C0);
sinrab 2:d20b1ef35d3f 596 TFT.background(0x0180);
sinrab 2:d20b1ef35d3f 597 TFT.foreground(Green);
sinrab 2:d20b1ef35d3f 598 TFT.set_font((unsigned char*) Consolas19x35);
sinrab 2:d20b1ef35d3f 599 TFT.locate(246, 14);
sinrab 2:d20b1ef35d3f 600 TFT.printf("C.V");
sinrab 2:d20b1ef35d3f 601 pm=1;
sinrab 2:d20b1ef35d3f 602 }
sinrab 0:ed1ba99f7b14 603
sinrab 0:ed1ba99f7b14 604
sinrab 0:ed1ba99f7b14 605 }
sinrab 0:ed1ba99f7b14 606 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 607 void drawScreen2(void) // экран 2 Data analo in, noise
sinrab 0:ed1ba99f7b14 608 {
sinrab 0:ed1ba99f7b14 609 if (complit==0) {
sinrab 0:ed1ba99f7b14 610 TFT.background(back2);
sinrab 0:ed1ba99f7b14 611 TFT.foreground(text2);
sinrab 0:ed1ba99f7b14 612 TFT.cls();
sinrab 0:ed1ba99f7b14 613 complit = 1; // прорисовали!
sinrab 0:ed1ba99f7b14 614 }
sinrab 0:ed1ba99f7b14 615
sinrab 0:ed1ba99f7b14 616 TFT.background(back2);
sinrab 0:ed1ba99f7b14 617 TFT.foreground(text2);
sinrab 0:ed1ba99f7b14 618 TFT.set_font((unsigned char*) Courier8x13);
sinrab 0:ed1ba99f7b14 619 TFT.locate(0, 0);
sinrab 0:ed1ba99f7b14 620 printf("--------- Data Analog In --------- \n");
sinrab 4:776f59129c24 621 printf("U.5 A0 noise= %0.1f, avg= %0.5f \n", noisea0, in0);
sinrab 4:776f59129c24 622 printf("U= %06.4f \n coeff. k=%f, a=%f \n", U5, a0k, a0a); // A0 U real
sinrab 0:ed1ba99f7b14 623 printf("---------------------------------- \n");
sinrab 4:776f59129c24 624 printf("I.real A1 noise= %0.1f, avg= %0.5f \n", noisea1, in1);
sinrab 4:776f59129c24 625 printf("I= %06.2f \n coeff. k=%f, a=%f \n", Ireal, a1k, a1a); // A1 I real
sinrab 4:776f59129c24 626 printf("---------------------------------- \n");
sinrab 4:776f59129c24 627 printf("U.30 A2 noise= %0.1f, avg= %0.5f \n", noisea2, in2);
sinrab 4:776f59129c24 628 printf("U= %06.3f \n coeff. k=%f, a=%f \n", U30, a2k, a2a); // A2 U set
sinrab 4:776f59129c24 629 printf("---------------------------------- \n");
sinrab 4:776f59129c24 630 printf("Temp A3 noise= %0.1f, avg= %0.5f \n", noisea3, in3);
sinrab 0:ed1ba99f7b14 631 }
sinrab 0:ed1ba99f7b14 632 //------------------------------------------------------------------------------------------------------------
sinrab 1:7bc0f280c259 633 void drawScreen3(void) // экран 3 установка часов
sinrab 0:ed1ba99f7b14 634 {
sinrab 0:ed1ba99f7b14 635 if (complit==0) {
sinrab 1:7bc0f280c259 636 TFT.background(back5);
sinrab 1:7bc0f280c259 637 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 638 TFT.cls();
sinrab 0:ed1ba99f7b14 639 complit = 1; // прорисовали!
sinrab 0:ed1ba99f7b14 640 }
sinrab 1:7bc0f280c259 641 TFT.background(back5);
sinrab 1:7bc0f280c259 642 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 643 TFT.set_font((unsigned char*) Lucida13x21);
sinrab 1:7bc0f280c259 644 char buffer[32];
sinrab 1:7bc0f280c259 645 seconds=time(NULL);
sinrab 1:7bc0f280c259 646 strftime(buffer, 32, "%H:%M:%S %d.%m.%Y", localtime(&seconds));
sinrab 1:7bc0f280c259 647 TFT.locate (0,0);
sinrab 1:7bc0f280c259 648 printf("------- Set Time --------\n");
sinrab 1:7bc0f280c259 649 TFT.background(back5_i);
sinrab 1:7bc0f280c259 650 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 651 TFT.locate (30,25);
sinrab 1:7bc0f280c259 652 printf("%s", buffer); //вывод реального времени
sinrab 1:7bc0f280c259 653 TFT.background(back5);
sinrab 1:7bc0f280c259 654 TFT.foreground(text5);
sinrab 1:7bc0f280c259 655 TFT.locate (28,86);
sinrab 1:7bc0f280c259 656 printf("%02d:%02d:%02d %02d.%02d.%04d",hour, min, sec, day, mon, year); //вывод то что установим
sinrab 1:7bc0f280c259 657 //-----------------------------------1
sinrab 1:7bc0f280c259 658 if (nline==1) {
sinrab 1:7bc0f280c259 659 if (pmenu==1) {
sinrab 1:7bc0f280c259 660 TFT.background(back5_iset);
sinrab 1:7bc0f280c259 661 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 662 } else {
sinrab 1:7bc0f280c259 663 TFT.background(back5_i);
sinrab 1:7bc0f280c259 664 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 665 }
sinrab 1:7bc0f280c259 666 TFT.locate(28,64);
sinrab 1:7bc0f280c259 667 printf(" ");
sinrab 1:7bc0f280c259 668 } else {
sinrab 1:7bc0f280c259 669 TFT.locate(28,64);
sinrab 1:7bc0f280c259 670 TFT.background(back5);
sinrab 1:7bc0f280c259 671 TFT.foreground(back5);
sinrab 1:7bc0f280c259 672 printf(" ");
sinrab 1:7bc0f280c259 673 }
sinrab 1:7bc0f280c259 674 //-----------------------------------2
sinrab 1:7bc0f280c259 675 if (nline==2) {
sinrab 1:7bc0f280c259 676 if (pmenu==1) {
sinrab 1:7bc0f280c259 677 TFT.background(back5_iset);
sinrab 1:7bc0f280c259 678 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 679 } else {
sinrab 1:7bc0f280c259 680 TFT.background(back5_i);
sinrab 1:7bc0f280c259 681 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 682 }
sinrab 1:7bc0f280c259 683 TFT.locate(64,64);
sinrab 1:7bc0f280c259 684 printf(" ");
sinrab 1:7bc0f280c259 685 } else {
sinrab 1:7bc0f280c259 686 TFT.locate(64,64);
sinrab 1:7bc0f280c259 687 TFT.background(back5);
sinrab 1:7bc0f280c259 688 TFT.foreground(back5);
sinrab 1:7bc0f280c259 689 printf(" ");
sinrab 1:7bc0f280c259 690 }
sinrab 1:7bc0f280c259 691 //-----------------------------------3
sinrab 1:7bc0f280c259 692 if (nline==3) {
sinrab 1:7bc0f280c259 693 if (pmenu==1) {
sinrab 1:7bc0f280c259 694 TFT.background(back5_iset);
sinrab 1:7bc0f280c259 695 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 696 } else {
sinrab 1:7bc0f280c259 697 TFT.background(back5_i);
sinrab 1:7bc0f280c259 698 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 699 }
sinrab 1:7bc0f280c259 700 TFT.locate(100,64);
sinrab 1:7bc0f280c259 701 printf(" ");
sinrab 1:7bc0f280c259 702 } else {
sinrab 1:7bc0f280c259 703 TFT.locate(100,64);
sinrab 1:7bc0f280c259 704 TFT.background(back5);
sinrab 1:7bc0f280c259 705 TFT.foreground(back5);
sinrab 1:7bc0f280c259 706 printf(" ");
sinrab 1:7bc0f280c259 707 }
sinrab 1:7bc0f280c259 708 //-----------------------------------4
sinrab 1:7bc0f280c259 709 if (nline==4) {
sinrab 1:7bc0f280c259 710 if (pmenu==1) {
sinrab 1:7bc0f280c259 711 TFT.background(back5_iset);
sinrab 1:7bc0f280c259 712 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 713 } else {
sinrab 1:7bc0f280c259 714 TFT.background(back5_i);
sinrab 1:7bc0f280c259 715 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 716 }
sinrab 1:7bc0f280c259 717 TFT.locate(135,64);
sinrab 1:7bc0f280c259 718 printf(" ");
sinrab 1:7bc0f280c259 719 } else {
sinrab 1:7bc0f280c259 720 TFT.locate(135,64);
sinrab 1:7bc0f280c259 721 TFT.background(back5);
sinrab 1:7bc0f280c259 722 TFT.foreground(back5);
sinrab 1:7bc0f280c259 723 printf(" ");
sinrab 1:7bc0f280c259 724 }
sinrab 1:7bc0f280c259 725 //-----------------------------------5
sinrab 1:7bc0f280c259 726 if (nline==5) {
sinrab 1:7bc0f280c259 727 if (pmenu==1) {
sinrab 1:7bc0f280c259 728 TFT.background(back5_iset);
sinrab 1:7bc0f280c259 729 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 730 } else {
sinrab 1:7bc0f280c259 731 TFT.background(back5_i);
sinrab 1:7bc0f280c259 732 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 733 }
sinrab 1:7bc0f280c259 734 TFT.locate(170,64);
sinrab 1:7bc0f280c259 735 printf(" ");
sinrab 1:7bc0f280c259 736 } else {
sinrab 1:7bc0f280c259 737 TFT.locate(170,64);
sinrab 1:7bc0f280c259 738 TFT.background(back5);
sinrab 1:7bc0f280c259 739 TFT.foreground(back5);
sinrab 1:7bc0f280c259 740 printf(" ");
sinrab 1:7bc0f280c259 741 }
sinrab 1:7bc0f280c259 742 //-----------------------------------6
sinrab 1:7bc0f280c259 743 if (nline==6) {
sinrab 1:7bc0f280c259 744 if (pmenu==1) {
sinrab 1:7bc0f280c259 745 TFT.background(back5_iset);
sinrab 1:7bc0f280c259 746 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 747 } else {
sinrab 1:7bc0f280c259 748 TFT.background(back5_i);
sinrab 1:7bc0f280c259 749 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 750 }
sinrab 1:7bc0f280c259 751 TFT.locate(205,64);
sinrab 1:7bc0f280c259 752 printf(" ");
sinrab 1:7bc0f280c259 753 } else {
sinrab 1:7bc0f280c259 754 TFT.locate(205,64);
sinrab 1:7bc0f280c259 755 TFT.background(back5);
sinrab 1:7bc0f280c259 756 TFT.foreground(back5);
sinrab 1:7bc0f280c259 757 printf(" ");
sinrab 1:7bc0f280c259 758 }
sinrab 1:7bc0f280c259 759 //-----------------------------------7
sinrab 1:7bc0f280c259 760 if (nline==7) {
sinrab 1:7bc0f280c259 761 if (pmenu==1) {
sinrab 1:7bc0f280c259 762 TFT.background(back5_iset);
sinrab 1:7bc0f280c259 763 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 764 } else {
sinrab 1:7bc0f280c259 765 TFT.background(back5_i);
sinrab 1:7bc0f280c259 766 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 767 }
sinrab 1:7bc0f280c259 768 TFT.locate(30,120);
sinrab 1:7bc0f280c259 769 printf("Set!");
sinrab 1:7bc0f280c259 770 } else {
sinrab 1:7bc0f280c259 771 TFT.locate(30,120);
sinrab 1:7bc0f280c259 772 TFT.background(back5);
sinrab 1:7bc0f280c259 773 TFT.foreground(text5);
sinrab 1:7bc0f280c259 774 printf("Set!");
sinrab 1:7bc0f280c259 775 }
sinrab 1:7bc0f280c259 776 //-----------------------------------
sinrab 1:7bc0f280c259 777 //-----------------------------------7
sinrab 1:7bc0f280c259 778 if (nline==8) {
sinrab 1:7bc0f280c259 779 if (pmenu==1) {
sinrab 1:7bc0f280c259 780 TFT.background(back5_iset);
sinrab 1:7bc0f280c259 781 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 782 } else {
sinrab 1:7bc0f280c259 783 TFT.background(0xFB2C);
sinrab 1:7bc0f280c259 784 TFT.foreground(text5_i);
sinrab 1:7bc0f280c259 785 }
sinrab 1:7bc0f280c259 786 TFT.locate(30,170);
sinrab 1:7bc0f280c259 787 printf("Exit");
sinrab 1:7bc0f280c259 788 } else {
sinrab 1:7bc0f280c259 789 TFT.locate(30,170);
sinrab 1:7bc0f280c259 790 TFT.background(back5);
sinrab 1:7bc0f280c259 791 TFT.foreground(text5);
sinrab 1:7bc0f280c259 792 printf("Exit");
sinrab 1:7bc0f280c259 793 }
sinrab 1:7bc0f280c259 794 //-----------------------------------
sinrab 1:7bc0f280c259 795
sinrab 0:ed1ba99f7b14 796 }
sinrab 0:ed1ba99f7b14 797 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 798 void drawScreen4(void) // экран 4 калибровка
sinrab 0:ed1ba99f7b14 799 {
sinrab 0:ed1ba99f7b14 800 if (complit==0) {
sinrab 0:ed1ba99f7b14 801 TFT.background(back4);
sinrab 0:ed1ba99f7b14 802 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 803 TFT.cls();
sinrab 0:ed1ba99f7b14 804 complit = 1; // прорисовали!
sinrab 0:ed1ba99f7b14 805 }
sinrab 0:ed1ba99f7b14 806 //---------------------------------------------------------------- text4 back4 text4_i back4_i
sinrab 0:ed1ba99f7b14 807 TFT.background(back4);
sinrab 0:ed1ba99f7b14 808 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 809 TFT.locate(0, 0);
sinrab 0:ed1ba99f7b14 810 TFT.set_font((unsigned char*) Courier8x13);
sinrab 0:ed1ba99f7b14 811 printf(" Calibration. Enter - set. \n");
sinrab 0:ed1ba99f7b14 812 printf("--------------------------- \n");
sinrab 0:ed1ba99f7b14 813 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 814 if (kline==1) {
sinrab 0:ed1ba99f7b14 815 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 816 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 817 } else {
sinrab 0:ed1ba99f7b14 818 TFT.background(back4);
sinrab 0:ed1ba99f7b14 819 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 820 }
sinrab 3:791cf9a867d1 821 printf(" U 5v = %06.3f set zero \n", U5); // U real A0 zero
sinrab 0:ed1ba99f7b14 822 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 823 if (kline==2) {
sinrab 0:ed1ba99f7b14 824 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 825 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 826 } else {
sinrab 0:ed1ba99f7b14 827 TFT.background(back4);
sinrab 0:ed1ba99f7b14 828 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 829 }
sinrab 4:776f59129c24 830 printf(" U 5v = %06.3f set up \n", U5); // U real A0 hi
sinrab 0:ed1ba99f7b14 831 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 832 if (kline==3) {
sinrab 0:ed1ba99f7b14 833 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 834 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 835 } else {
sinrab 0:ed1ba99f7b14 836 TFT.background(back4);
sinrab 0:ed1ba99f7b14 837 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 838 }
sinrab 4:776f59129c24 839 printf(" I real = %06.1f set zero \n", Ireal); // I real A1 zero
sinrab 0:ed1ba99f7b14 840 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 841 if (kline==4) {
sinrab 0:ed1ba99f7b14 842 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 843 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 844 } else {
sinrab 0:ed1ba99f7b14 845 TFT.background(back4);
sinrab 0:ed1ba99f7b14 846 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 847 }
sinrab 4:776f59129c24 848 printf(" I real = %06.1f set up \n", Ireal); // I real A1 hi
sinrab 0:ed1ba99f7b14 849 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 850 if (kline==5) {
sinrab 0:ed1ba99f7b14 851 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 852 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 853 } else {
sinrab 0:ed1ba99f7b14 854 TFT.background(back4);
sinrab 0:ed1ba99f7b14 855 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 856 }
sinrab 4:776f59129c24 857 printf(" U high v = %06.3f set zero\n", U30); // U set A2 zero
sinrab 0:ed1ba99f7b14 858 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 859 if (kline==6) {
sinrab 0:ed1ba99f7b14 860 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 861 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 862 } else {
sinrab 0:ed1ba99f7b14 863 TFT.background(back4);
sinrab 0:ed1ba99f7b14 864 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 865 }
sinrab 4:776f59129c24 866 printf(" U high v = %06.3f set up \n", U30); // U set A2 hi
sinrab 0:ed1ba99f7b14 867 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 868 if (kline==7) {
sinrab 0:ed1ba99f7b14 869 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 870 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 871 } else {
sinrab 0:ed1ba99f7b14 872 TFT.background(back4);
sinrab 0:ed1ba99f7b14 873 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 874 }
sinrab 4:776f59129c24 875 printf(" -\n"); // I set A3 zero
sinrab 0:ed1ba99f7b14 876 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 877 if (kline==8) {
sinrab 0:ed1ba99f7b14 878 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 879 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 880 } else {
sinrab 0:ed1ba99f7b14 881 TFT.background(back4);
sinrab 0:ed1ba99f7b14 882 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 883 }
sinrab 4:776f59129c24 884 printf(" -\n"); // I set A3 hi
sinrab 0:ed1ba99f7b14 885 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 886 if (kline==9) {
sinrab 0:ed1ba99f7b14 887 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 888 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 889 } else {
sinrab 0:ed1ba99f7b14 890 TFT.background(back4);
sinrab 0:ed1ba99f7b14 891 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 892 }
sinrab 4:776f59129c24 893 printf(" -\n"); // U usb A4 zero
sinrab 0:ed1ba99f7b14 894 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 895 if (kline==10) {
sinrab 0:ed1ba99f7b14 896 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 897 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 898 } else {
sinrab 0:ed1ba99f7b14 899 TFT.background(back4);
sinrab 0:ed1ba99f7b14 900 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 901 }
sinrab 4:776f59129c24 902 printf(" -\n"); // U usb A4 hi
sinrab 0:ed1ba99f7b14 903 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 904 if (kline==11) {
sinrab 0:ed1ba99f7b14 905 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 906 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 907 } else {
sinrab 0:ed1ba99f7b14 908 TFT.background(back4);
sinrab 0:ed1ba99f7b14 909 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 910 }
sinrab 4:776f59129c24 911 printf(" -\n"); // I usb A5 zero
sinrab 0:ed1ba99f7b14 912 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 913 if (kline==12) {
sinrab 0:ed1ba99f7b14 914 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 915 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 916 } else {
sinrab 0:ed1ba99f7b14 917 TFT.background(back4);
sinrab 0:ed1ba99f7b14 918 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 919 }
sinrab 4:776f59129c24 920 printf(" -\n"); // I usb A5 hi
sinrab 0:ed1ba99f7b14 921 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 922 if (kline==13) {
sinrab 0:ed1ba99f7b14 923 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 924 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 925 } else {
sinrab 0:ed1ba99f7b14 926 TFT.background(back4);
sinrab 0:ed1ba99f7b14 927 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 928 }
sinrab 0:ed1ba99f7b14 929 printf(" Load Default \n");
sinrab 0:ed1ba99f7b14 930 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 931 if (kline==14) {
sinrab 0:ed1ba99f7b14 932 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 933 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 934 } else {
sinrab 0:ed1ba99f7b14 935 TFT.background(back4);
sinrab 0:ed1ba99f7b14 936 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 937 }
sinrab 0:ed1ba99f7b14 938 printf(" Save all to flash memory \n");
sinrab 0:ed1ba99f7b14 939 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 940 if (kline==15) {
sinrab 0:ed1ba99f7b14 941 TFT.background(back4_i);
sinrab 0:ed1ba99f7b14 942 TFT.foreground(text4_i);
sinrab 0:ed1ba99f7b14 943 } else {
sinrab 0:ed1ba99f7b14 944 TFT.background(back4);
sinrab 0:ed1ba99f7b14 945 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 946 }
sinrab 0:ed1ba99f7b14 947 printf(" Exit \n");
sinrab 0:ed1ba99f7b14 948 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 949 TFT.background(back4);
sinrab 0:ed1ba99f7b14 950 TFT.foreground(text4);
sinrab 0:ed1ba99f7b14 951 printf("--------------------------- \n");
sinrab 0:ed1ba99f7b14 952
sinrab 0:ed1ba99f7b14 953
sinrab 0:ed1ba99f7b14 954 }
sinrab 0:ed1ba99f7b14 955 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 956 void drawScreen5(void) //экран 5 Настройки главная
sinrab 0:ed1ba99f7b14 957 {
sinrab 0:ed1ba99f7b14 958 if (complit==0) {
sinrab 0:ed1ba99f7b14 959 TFT.background(back5);
sinrab 0:ed1ba99f7b14 960 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 961 TFT.cls();
sinrab 0:ed1ba99f7b14 962 complit = 1; // прорисовали!
sinrab 0:ed1ba99f7b14 963 }
sinrab 0:ed1ba99f7b14 964
sinrab 0:ed1ba99f7b14 965 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 966 TFT.background(back5);
sinrab 0:ed1ba99f7b14 967 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 968 TFT.locate(0, 0);
sinrab 0:ed1ba99f7b14 969 TFT.set_font((unsigned char*) Courier8x13);
sinrab 3:791cf9a867d1 970 printf(" Settings \n");
sinrab 3:791cf9a867d1 971 printf("--------------------------------------- \n");
sinrab 0:ed1ba99f7b14 972 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 973 if (mline==1) {
sinrab 0:ed1ba99f7b14 974 TFT.background(back5_i);
sinrab 0:ed1ba99f7b14 975 TFT.foreground(text5_i);
sinrab 0:ed1ba99f7b14 976 } else {
sinrab 0:ed1ba99f7b14 977 TFT.background(back5);
sinrab 0:ed1ba99f7b14 978 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 979 }
sinrab 3:791cf9a867d1 980 printf(" Set Time \n"); // 1
sinrab 0:ed1ba99f7b14 981 //----------------------------------------------------------------
sinrab 0:ed1ba99f7b14 982 if (mline==2) {
sinrab 0:ed1ba99f7b14 983 if (pmenu==1) {
sinrab 0:ed1ba99f7b14 984 TFT.background(back5_iset);
sinrab 0:ed1ba99f7b14 985 TFT.foreground(text5_i);
sinrab 0:ed1ba99f7b14 986 } else {
sinrab 0:ed1ba99f7b14 987 TFT.background(back5_i);
sinrab 0:ed1ba99f7b14 988 TFT.foreground(text5_i);
sinrab 0:ed1ba99f7b14 989 }
sinrab 0:ed1ba99f7b14 990 } else {
sinrab 0:ed1ba99f7b14 991 TFT.background(back5);
sinrab 0:ed1ba99f7b14 992 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 993 }
sinrab 4:776f59129c24 994 printf(" Backlight brightness = %03.0f \n", brightness*100); // 1
sinrab 0:ed1ba99f7b14 995 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 996 if (mline==3) {
sinrab 4:776f59129c24 997 if (pmenu==1) {
sinrab 4:776f59129c24 998 TFT.background(back5_iset);
sinrab 4:776f59129c24 999 TFT.foreground(text5_i);
sinrab 4:776f59129c24 1000 } else {
sinrab 4:776f59129c24 1001 TFT.background(back5_i);
sinrab 4:776f59129c24 1002 TFT.foreground(text5_i);
sinrab 4:776f59129c24 1003 }
sinrab 0:ed1ba99f7b14 1004 } else {
sinrab 0:ed1ba99f7b14 1005 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1006 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1007 }
sinrab 4:776f59129c24 1008 if (beeper==1) {
sinrab 4:776f59129c24 1009 printf(" Sound beep %s \n", ron);
sinrab 4:776f59129c24 1010 } else {
sinrab 4:776f59129c24 1011 printf(" Sound beep %s \n", roff);
sinrab 4:776f59129c24 1012 }
sinrab 0:ed1ba99f7b14 1013 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1014 if (mline==4) {
sinrab 3:791cf9a867d1 1015 if (pmenu==1) {
sinrab 3:791cf9a867d1 1016 TFT.background(back5_iset);
sinrab 3:791cf9a867d1 1017 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1018 } else {
sinrab 3:791cf9a867d1 1019 TFT.background(back5_i);
sinrab 3:791cf9a867d1 1020 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1021 }
sinrab 0:ed1ba99f7b14 1022 } else {
sinrab 0:ed1ba99f7b14 1023 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1024 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1025 }
sinrab 4:776f59129c24 1026 printf(" Fan start - t %02d 'c \n", tempstart); // 1 tempstart
sinrab 0:ed1ba99f7b14 1027 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1028 if (mline==5) {
sinrab 3:791cf9a867d1 1029 if (pmenu==1) {
sinrab 3:791cf9a867d1 1030 TFT.background(back5_iset);
sinrab 3:791cf9a867d1 1031 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1032 } else {
sinrab 3:791cf9a867d1 1033 TFT.background(back5_i);
sinrab 3:791cf9a867d1 1034 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1035 }
sinrab 0:ed1ba99f7b14 1036 } else {
sinrab 0:ed1ba99f7b14 1037 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1038 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1039 }
sinrab 4:776f59129c24 1040 printf(" Fan full speed - t %02d 'c \n", tempfull); // 1 tempfull
sinrab 0:ed1ba99f7b14 1041 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1042 if (mline==6) {
sinrab 3:791cf9a867d1 1043 if (pmenu==1) {
sinrab 3:791cf9a867d1 1044 TFT.background(back5_iset);
sinrab 3:791cf9a867d1 1045 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1046 } else {
sinrab 3:791cf9a867d1 1047 TFT.background(back5_i);
sinrab 3:791cf9a867d1 1048 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1049 }
sinrab 0:ed1ba99f7b14 1050 } else {
sinrab 0:ed1ba99f7b14 1051 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1052 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1053 }
sinrab 4:776f59129c24 1054 printf(" Power cut off - t %02d 'c \n", tempcutoff); // 1 tempcutoff
sinrab 0:ed1ba99f7b14 1055 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1056 if (mline==7) {
sinrab 3:791cf9a867d1 1057 if (pmenu==1) {
sinrab 3:791cf9a867d1 1058 TFT.background(back5_iset);
sinrab 3:791cf9a867d1 1059 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1060 } else {
sinrab 3:791cf9a867d1 1061 TFT.background(back5_i);
sinrab 3:791cf9a867d1 1062 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1063 }
sinrab 0:ed1ba99f7b14 1064 } else {
sinrab 0:ed1ba99f7b14 1065 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1066 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1067 }
sinrab 4:776f59129c24 1068 if (rdown_on==1) {
sinrab 3:791cf9a867d1 1069 printf(" Voltmeter adjustment on R %s \n", ron); // падение на R вкл выкл
sinrab 3:791cf9a867d1 1070 } else {
sinrab 3:791cf9a867d1 1071 printf(" Voltmeter adjustment on R %s \n", roff);
sinrab 3:791cf9a867d1 1072 }
sinrab 0:ed1ba99f7b14 1073 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1074 if (mline==8) {
sinrab 3:791cf9a867d1 1075 if (pmenu==1) {
sinrab 3:791cf9a867d1 1076 TFT.background(back5_iset);
sinrab 3:791cf9a867d1 1077 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1078 } else {
sinrab 3:791cf9a867d1 1079 TFT.background(back5_i);
sinrab 3:791cf9a867d1 1080 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1081 }
sinrab 0:ed1ba99f7b14 1082 } else {
sinrab 0:ed1ba99f7b14 1083 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1084 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1085 }
sinrab 3:791cf9a867d1 1086 printf(" Current sense shunt, R = %05.3f om\n", rdown); // значения сопротивления шунта
sinrab 0:ed1ba99f7b14 1087 //------- -----------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1088 if (mline==9) {
sinrab 0:ed1ba99f7b14 1089 TFT.background(back5_i);
sinrab 0:ed1ba99f7b14 1090 TFT.foreground(text5_i);
sinrab 0:ed1ba99f7b14 1091 } else {
sinrab 0:ed1ba99f7b14 1092 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1093 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1094 }
sinrab 3:791cf9a867d1 1095 printf(" Calibration I, U \n"); // 1
sinrab 0:ed1ba99f7b14 1096 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1097 if (mline==10) {
sinrab 0:ed1ba99f7b14 1098 TFT.background(back5_i);
sinrab 0:ed1ba99f7b14 1099 TFT.foreground(text5_i);
sinrab 0:ed1ba99f7b14 1100 } else {
sinrab 0:ed1ba99f7b14 1101 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1102 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1103 }
sinrab 3:791cf9a867d1 1104 printf(" Data analog in, noise \n"); // 1
sinrab 0:ed1ba99f7b14 1105 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1106 if (mline==11) {
sinrab 3:791cf9a867d1 1107 if (pmenu==1) {
sinrab 3:791cf9a867d1 1108 TFT.background(back5_iset);
sinrab 3:791cf9a867d1 1109 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1110 } else {
sinrab 3:791cf9a867d1 1111 TFT.background(back5_i);
sinrab 3:791cf9a867d1 1112 TFT.foreground(text5_i);
sinrab 3:791cf9a867d1 1113 }
sinrab 0:ed1ba99f7b14 1114 } else {
sinrab 0:ed1ba99f7b14 1115 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1116 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1117 }
sinrab 4:776f59129c24 1118 printf(" U max %02.0d V \n", umax); // U max
sinrab 0:ed1ba99f7b14 1119 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1120 if (mline==12) {
sinrab 4:776f59129c24 1121 if (pmenu==1) {
sinrab 4:776f59129c24 1122 TFT.background(back5_iset);
sinrab 4:776f59129c24 1123 TFT.foreground(text5_i);
sinrab 4:776f59129c24 1124 } else {
sinrab 4:776f59129c24 1125 TFT.background(back5_i);
sinrab 4:776f59129c24 1126 TFT.foreground(text5_i);
sinrab 4:776f59129c24 1127 }
sinrab 0:ed1ba99f7b14 1128 } else {
sinrab 0:ed1ba99f7b14 1129 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1130 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1131 }
sinrab 4:776f59129c24 1132 printf(" I max %03.1f A \n", imax); // I max
sinrab 0:ed1ba99f7b14 1133 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1134 if (mline==13) {
sinrab 4:776f59129c24 1135 if (pmenu==1) {
sinrab 4:776f59129c24 1136 TFT.background(back5_iset);
sinrab 4:776f59129c24 1137 TFT.foreground(text5_i);
sinrab 4:776f59129c24 1138 } else {
sinrab 4:776f59129c24 1139 TFT.background(back5_i);
sinrab 4:776f59129c24 1140 TFT.foreground(text5_i);
sinrab 4:776f59129c24 1141 }
sinrab 0:ed1ba99f7b14 1142 } else {
sinrab 0:ed1ba99f7b14 1143 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1144 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1145 }
sinrab 4:776f59129c24 1146 printf(" Screen saver %d \n", screensaver); // Screen saver
sinrab 0:ed1ba99f7b14 1147 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1148 if (mline==14) {
sinrab 4:776f59129c24 1149 if (pmenu==1) {
sinrab 4:776f59129c24 1150 TFT.background(back5_iset);
sinrab 4:776f59129c24 1151 TFT.foreground(text5_i);
sinrab 4:776f59129c24 1152 } else {
sinrab 4:776f59129c24 1153 TFT.background(back5_i);
sinrab 4:776f59129c24 1154 TFT.foreground(text5_i);
sinrab 4:776f59129c24 1155 }
sinrab 0:ed1ba99f7b14 1156 } else {
sinrab 0:ed1ba99f7b14 1157 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1158 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1159 }
sinrab 4:776f59129c24 1160 printf(" Load default settings and save to flash\n"); // 1
sinrab 0:ed1ba99f7b14 1161 //------------------------------------*---------------------------
sinrab 0:ed1ba99f7b14 1162 if (mline==15) {
sinrab 0:ed1ba99f7b14 1163 TFT.background(0xFB2C);
sinrab 0:ed1ba99f7b14 1164 TFT.foreground(text5_i);
sinrab 0:ed1ba99f7b14 1165 } else {
sinrab 0:ed1ba99f7b14 1166 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1167 TFT.foreground(text5);
sinrab 0:ed1ba99f7b14 1168 }
sinrab 3:791cf9a867d1 1169 printf(" Exit \n");
sinrab 0:ed1ba99f7b14 1170 //--------------------------------------*-------------------------
sinrab 0:ed1ba99f7b14 1171 TFT.background(back5);
sinrab 0:ed1ba99f7b14 1172 TFT.foreground(text5);
sinrab 3:791cf9a867d1 1173 printf("--------------------------------------- \n");
sinrab 0:ed1ba99f7b14 1174
sinrab 0:ed1ba99f7b14 1175
sinrab 0:ed1ba99f7b14 1176 }
sinrab 0:ed1ba99f7b14 1177 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1178 void drawScreen6(void) //экран 6
sinrab 0:ed1ba99f7b14 1179 {
sinrab 0:ed1ba99f7b14 1180 if (complit==0) {
sinrab 3:791cf9a867d1 1181 TFT.background(Black);
sinrab 3:791cf9a867d1 1182 TFT.foreground(White);
sinrab 0:ed1ba99f7b14 1183 TFT.cls();
sinrab 0:ed1ba99f7b14 1184 complit = 1; // прорисовали!
sinrab 0:ed1ba99f7b14 1185 }
sinrab 3:791cf9a867d1 1186 TFT.set_font((unsigned char*) digi36x44);
sinrab 3:791cf9a867d1 1187 TFT.foreground(Green);
sinrab 3:791cf9a867d1 1188 TFT.locate(10, 10);
sinrab 3:791cf9a867d1 1189 TFT.printf("%06.1f", Ireal);
sinrab 3:791cf9a867d1 1190 TFT.locate(10, 85);
sinrab 3:791cf9a867d1 1191 TFT.printf("%05.3f", U5);
sinrab 4:776f59129c24 1192
sinrab 3:791cf9a867d1 1193 TFT.locate(10, 150);
sinrab 3:791cf9a867d1 1194 TFT.printf("%d", int(U30));
sinrab 0:ed1ba99f7b14 1195
sinrab 0:ed1ba99f7b14 1196
sinrab 0:ed1ba99f7b14 1197 }
sinrab 0:ed1ba99f7b14 1198 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1199 void drawScreen7(void) //экран 7
sinrab 0:ed1ba99f7b14 1200 {
sinrab 0:ed1ba99f7b14 1201 if (complit==0) {
sinrab 0:ed1ba99f7b14 1202 TFT.background(Blue);
sinrab 4:776f59129c24 1203 TFT.foreground(White);
sinrab 0:ed1ba99f7b14 1204 TFT.cls();
sinrab 0:ed1ba99f7b14 1205 complit = 1; // прорисовали!
sinrab 4:776f59129c24 1206
sinrab 4:776f59129c24 1207 TFT.line(0,40,319,40,Black);
sinrab 4:776f59129c24 1208 TFT.line(0,80,319,80,Black);
sinrab 4:776f59129c24 1209 TFT.line(0,120,319,120,Black);
sinrab 4:776f59129c24 1210 TFT.line(0,160,319,160,Black);
sinrab 4:776f59129c24 1211 TFT.line(0,200,319,200,Black);
sinrab 0:ed1ba99f7b14 1212 }
sinrab 4:776f59129c24 1213
sinrab 4:776f59129c24 1214 TFT.background(Blue);
sinrab 4:776f59129c24 1215 TFT.foreground(White);
sinrab 4:776f59129c24 1216 iiii++;
sinrab 4:776f59129c24 1217 if (iiii==320) {
sinrab 4:776f59129c24 1218 iiii=0;
sinrab 4:776f59129c24 1219 TFT.background(Blue);
sinrab 4:776f59129c24 1220 TFT.foreground(White);
sinrab 4:776f59129c24 1221 TFT.cls();
sinrab 4:776f59129c24 1222 TFT.line(0,40,319,40,Black);
sinrab 4:776f59129c24 1223 TFT.line(0,80,319,80,Black);
sinrab 4:776f59129c24 1224 TFT.line(0,120,319,120,Black);
sinrab 4:776f59129c24 1225 TFT.line(0,160,319,160,Black);
sinrab 4:776f59129c24 1226 TFT.line(0,200,319,200,Black);
sinrab 4:776f59129c24 1227 }
sinrab 4:776f59129c24 1228 int b = noisea1*40;
sinrab 4:776f59129c24 1229 TFT.locate(5,5);
sinrab 4:776f59129c24 1230 TFT.set_font((unsigned char*) Courier8x13);
sinrab 4:776f59129c24 1231 printf("I A1 noise= %0.1f, avg= %0.5f \n", noisea1, in1);
sinrab 4:776f59129c24 1232 printf(" I real = %06.1f set zero \n", Ireal);
sinrab 4:776f59129c24 1233 TFT.line(iiii,245-b,iiii,240-b, White);
sinrab 4:776f59129c24 1234 //TFT.pixel(iiii,240-b,White);
sinrab 4:776f59129c24 1235
sinrab 4:776f59129c24 1236 wait(0.01);
sinrab 0:ed1ba99f7b14 1237 }
sinrab 0:ed1ba99f7b14 1238 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1239 void drawScreen8(void) //экран 8
sinrab 0:ed1ba99f7b14 1240 {
sinrab 0:ed1ba99f7b14 1241 if (complit==0) {
sinrab 4:776f59129c24 1242 TFT.background(Black);
sinrab 4:776f59129c24 1243 TFT.foreground(White);
sinrab 0:ed1ba99f7b14 1244 TFT.cls();
sinrab 0:ed1ba99f7b14 1245 complit = 1; // прорисовали!
sinrab 0:ed1ba99f7b14 1246 }
sinrab 0:ed1ba99f7b14 1247
sinrab 4:776f59129c24 1248 TFT.set_font((unsigned char*) Lucida13x21);
sinrab 4:776f59129c24 1249 char buffer[32];
sinrab 4:776f59129c24 1250 seconds=time(NULL);
sinrab 4:776f59129c24 1251 strftime(buffer, 32, "%H:%M:%S %d.%m.%Y", localtime(&seconds));
sinrab 4:776f59129c24 1252 TFT.background(back5_i);
sinrab 4:776f59129c24 1253 TFT.foreground(text5_i);
sinrab 4:776f59129c24 1254 TFT.locate (30,25);
sinrab 4:776f59129c24 1255 printf("%s", buffer); //вывод реального времени
sinrab 0:ed1ba99f7b14 1256 }
sinrab 0:ed1ba99f7b14 1257 //------------------------------------------------------------------------------------------------------------
sinrab 2:d20b1ef35d3f 1258 float map(float x, float in_min, float in_max, float out_min, float out_max) // функция масштабирования
sinrab 0:ed1ba99f7b14 1259 {
sinrab 0:ed1ba99f7b14 1260 return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
sinrab 0:ed1ba99f7b14 1261 }
sinrab 0:ed1ba99f7b14 1262 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1263 float avgAin0() // функция среднего значения с входа A0
sinrab 0:ed1ba99f7b14 1264 {
sinrab 0:ed1ba99f7b14 1265 int m = 100;
sinrab 0:ed1ba99f7b14 1266 float value[m];
sinrab 0:ed1ba99f7b14 1267 float max;
sinrab 0:ed1ba99f7b14 1268 float min;
sinrab 0:ed1ba99f7b14 1269 double itg;
sinrab 0:ed1ba99f7b14 1270 max = itg = 0.0;
sinrab 0:ed1ba99f7b14 1271 min = 3.3;
sinrab 0:ed1ba99f7b14 1272 for (int i=0; i<m; i++) {
sinrab 0:ed1ba99f7b14 1273 value[i] = ainA0;
sinrab 0:ed1ba99f7b14 1274 if (value[i] > max) max = value[i];
sinrab 0:ed1ba99f7b14 1275 if (value[i] < min) min = value[i];
sinrab 0:ed1ba99f7b14 1276 itg += value[i];
sinrab 0:ed1ba99f7b14 1277 }
sinrab 0:ed1ba99f7b14 1278 noisea0 = (max - min)*1000;
sinrab 0:ed1ba99f7b14 1279 return itg/m;
sinrab 0:ed1ba99f7b14 1280 }
sinrab 0:ed1ba99f7b14 1281 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1282 float avgAin1() // функция среднего значения с входа A1
sinrab 0:ed1ba99f7b14 1283 {
sinrab 0:ed1ba99f7b14 1284 float value[100];
sinrab 0:ed1ba99f7b14 1285 float max;
sinrab 0:ed1ba99f7b14 1286 float min;
sinrab 0:ed1ba99f7b14 1287 double itg;
sinrab 0:ed1ba99f7b14 1288 max = itg = 0.0;
sinrab 0:ed1ba99f7b14 1289 min = 3.3;
sinrab 0:ed1ba99f7b14 1290 for (int i=0; i<100; i++) {
sinrab 0:ed1ba99f7b14 1291 value[i] = ainA1;
sinrab 0:ed1ba99f7b14 1292 if (value[i] > max) max = value[i];
sinrab 0:ed1ba99f7b14 1293 if (value[i] < min) min = value[i];
sinrab 0:ed1ba99f7b14 1294 itg += value[i];
sinrab 0:ed1ba99f7b14 1295 }
sinrab 0:ed1ba99f7b14 1296 noisea1 = (max - min)*1000;
sinrab 0:ed1ba99f7b14 1297 return itg/100;
sinrab 0:ed1ba99f7b14 1298 }
sinrab 0:ed1ba99f7b14 1299 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1300 float avgAin2() // функция среднего значения с входа A2
sinrab 0:ed1ba99f7b14 1301 {
sinrab 0:ed1ba99f7b14 1302 float value[100];
sinrab 0:ed1ba99f7b14 1303 float max;
sinrab 0:ed1ba99f7b14 1304 float min;
sinrab 0:ed1ba99f7b14 1305 double itg;
sinrab 0:ed1ba99f7b14 1306 max = itg = 0.0;
sinrab 0:ed1ba99f7b14 1307 min = 3.3;
sinrab 0:ed1ba99f7b14 1308 for (int i=0; i<100; i++) {
sinrab 0:ed1ba99f7b14 1309 value[i] = ainA2;
sinrab 0:ed1ba99f7b14 1310 if (value[i] > max) max = value[i];
sinrab 0:ed1ba99f7b14 1311 if (value[i] < min) min = value[i];
sinrab 0:ed1ba99f7b14 1312 itg += value[i];
sinrab 0:ed1ba99f7b14 1313 }
sinrab 0:ed1ba99f7b14 1314 noisea2 = (max - min)*1000;
sinrab 0:ed1ba99f7b14 1315 return itg/100;
sinrab 0:ed1ba99f7b14 1316 }
sinrab 0:ed1ba99f7b14 1317 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1318 float avgAin3() // функция среднего значения с входа A3
sinrab 0:ed1ba99f7b14 1319 {
sinrab 0:ed1ba99f7b14 1320 float value[100];
sinrab 0:ed1ba99f7b14 1321 float max;
sinrab 0:ed1ba99f7b14 1322 float min;
sinrab 0:ed1ba99f7b14 1323 double itg;
sinrab 0:ed1ba99f7b14 1324 max = itg = 0.0;
sinrab 0:ed1ba99f7b14 1325 min = 3.3;
sinrab 0:ed1ba99f7b14 1326 for (int i=0; i<100; i++) {
sinrab 0:ed1ba99f7b14 1327 value[i] = ainA3;
sinrab 0:ed1ba99f7b14 1328 if (value[i] > max) max = value[i];
sinrab 0:ed1ba99f7b14 1329 if (value[i] < min) min = value[i];
sinrab 0:ed1ba99f7b14 1330 itg += value[i];
sinrab 0:ed1ba99f7b14 1331 }
sinrab 0:ed1ba99f7b14 1332 noisea3 = (max - min)*1000;
sinrab 0:ed1ba99f7b14 1333 return itg/100;
sinrab 0:ed1ba99f7b14 1334 }
sinrab 0:ed1ba99f7b14 1335 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1336 void dataProcessing(void) // обработка и подготовка данных с аналоговых входов
sinrab 0:ed1ba99f7b14 1337 {
sinrab 0:ed1ba99f7b14 1338 /*t.reset();// FPS
sinrab 0:ed1ba99f7b14 1339 t.start();// FPS*/
sinrab 0:ed1ba99f7b14 1340
sinrab 0:ed1ba99f7b14 1341 in0 = avgAin0();
sinrab 0:ed1ba99f7b14 1342 in1 = avgAin1();
sinrab 0:ed1ba99f7b14 1343 in2 = avgAin2();
sinrab 0:ed1ba99f7b14 1344 in3 = avgAin3();
sinrab 3:791cf9a867d1 1345 //in4 = avgAin4();
sinrab 3:791cf9a867d1 1346 //in5 = avgAin5();
sinrab 0:ed1ba99f7b14 1347
sinrab 0:ed1ba99f7b14 1348 // A0 U real U = (avgAin0() - a0a) * a0k
sinrab 0:ed1ba99f7b14 1349 // A1 I real I = (avgAin1() - a1a) * a1k
sinrab 0:ed1ba99f7b14 1350 // A2 U set U = (avgAin2() - a2a) * a2k
sinrab 0:ed1ba99f7b14 1351 // A3 I set I = (avgAin3() - a3a) * a3k
sinrab 0:ed1ba99f7b14 1352 // A4 U usb U = (avgAin4() - a4a) * a4k
sinrab 0:ed1ba99f7b14 1353 // A5 I usb I = (avgAin5() - a5a) * a5k
sinrab 0:ed1ba99f7b14 1354
sinrab 4:776f59129c24 1355 Ireal = a1k*1000*(in1-a1a);
sinrab 4:776f59129c24 1356
sinrab 4:776f59129c24 1357 temperature = map(in3, 0.232, 0.188 , 0, 90); //(in3, 0.232, 0.188 , 0, 90);
sinrab 4:776f59129c24 1358
sinrab 4:776f59129c24 1359 if (rdown_on==1) {
sinrab 4:776f59129c24 1360 U5 = a0k*(in0-a0a)+Ireal*rdown/1000;
sinrab 4:776f59129c24 1361 U30 = a2k*(in2-a2a)+Ireal*rdown/1000;
sinrab 4:776f59129c24 1362 } else {
sinrab 4:776f59129c24 1363 U5 = a0k*(in0-a0a);
sinrab 4:776f59129c24 1364 U30 = a2k*(in2-a2a);
sinrab 4:776f59129c24 1365 }
sinrab 4:776f59129c24 1366
sinrab 3:791cf9a867d1 1367 if (cc==1) ledcc=0;
sinrab 3:791cf9a867d1 1368 if (cc==0) ledcc=1;
sinrab 0:ed1ba99f7b14 1369
sinrab 0:ed1ba99f7b14 1370 /*t.stop();// FPS
sinrab 0:ed1ba99f7b14 1371 TFT.background(Black);// FPS
sinrab 0:ed1ba99f7b14 1372 TFT.foreground(Green);// FPS
sinrab 0:ed1ba99f7b14 1373 TFT.set_font((unsigned char*) Courier8x13);// FPS
sinrab 0:ed1ba99f7b14 1374 TFT.locate(260,225);// FPS
sinrab 0:ed1ba99f7b14 1375 TFT.printf("%0.2f", (1/t.read()));// FPS*/
sinrab 0:ed1ba99f7b14 1376 }
sinrab 0:ed1ba99f7b14 1377 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1378 void buttonUse(void) // обработка нажатий кнопок
sinrab 0:ed1ba99f7b14 1379 {
sinrab 4:776f59129c24 1380 if (beeper==1) {
sinrab 4:776f59129c24 1381
sinrab 4:776f59129c24 1382 if (buttonEnter==0) {
sinrab 4:776f59129c24 1383 buzzer.beep(300,0.01);
sinrab 4:776f59129c24 1384 }
sinrab 4:776f59129c24 1385 if (buttonDown==0) {
sinrab 4:776f59129c24 1386 buzzer.beep(300,0.01);
sinrab 4:776f59129c24 1387 }
sinrab 4:776f59129c24 1388 if (buttonUp==0) {
sinrab 4:776f59129c24 1389 buzzer.beep(300,0.01);
sinrab 4:776f59129c24 1390 }
sinrab 4:776f59129c24 1391 }
sinrab 4:776f59129c24 1392
sinrab 4:776f59129c24 1393
sinrab 4:776f59129c24 1394
sinrab 4:776f59129c24 1395
sinrab 0:ed1ba99f7b14 1396 int one=0; // для обработки одной кнопки за раз
sinrab 0:ed1ba99f7b14 1397 //------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1398 if (Screen==1 & one==0) { //главный экран
sinrab 0:ed1ba99f7b14 1399 if (buttonEnter==0) { // Enter
sinrab 0:ed1ba99f7b14 1400 //wait(1);
sinrab 0:ed1ba99f7b14 1401 Screen=5; // 5 главная настройки
sinrab 0:ed1ba99f7b14 1402 complit=0;
sinrab 0:ed1ba99f7b14 1403 }
sinrab 0:ed1ba99f7b14 1404 if (buttonDown==0) { // Down
sinrab 4:776f59129c24 1405 if (powerMosfet==0){
sinrab 4:776f59129c24 1406 a1a = in1 - 0.000100f; // 2
sinrab 4:776f59129c24 1407 Screen=7;
sinrab 4:776f59129c24 1408 iiii=0;
sinrab 0:ed1ba99f7b14 1409 complit=0;
sinrab 0:ed1ba99f7b14 1410 }
sinrab 4:776f59129c24 1411 }
sinrab 0:ed1ba99f7b14 1412 if (buttonUp==0) { // Up
sinrab 0:ed1ba99f7b14 1413 powerProtect=!powerProtect;
sinrab 0:ed1ba99f7b14 1414 pp=0;
sinrab 0:ed1ba99f7b14 1415 wait(0.2);
sinrab 0:ed1ba99f7b14 1416 }
sinrab 0:ed1ba99f7b14 1417 one=1;
sinrab 0:ed1ba99f7b14 1418 }
sinrab 0:ed1ba99f7b14 1419 //------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1420 if (Screen==2 & one==0) { //экран 2 analog in, noise
sinrab 0:ed1ba99f7b14 1421 if (buttonEnter==0) { // Enter
sinrab 0:ed1ba99f7b14 1422 //wait(1);
sinrab 0:ed1ba99f7b14 1423 Screen=5; //3
sinrab 0:ed1ba99f7b14 1424 complit=0;
sinrab 0:ed1ba99f7b14 1425 }
sinrab 0:ed1ba99f7b14 1426 one=1;
sinrab 0:ed1ba99f7b14 1427 }
sinrab 0:ed1ba99f7b14 1428 //------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1429 if (Screen==3 & one==0) { //экран 3
sinrab 4:776f59129c24 1430 if(nline==7 & pmenu==1) {
sinrab 4:776f59129c24 1431 wait(0.2);
sinrab 4:776f59129c24 1432 pmenu=0;
sinrab 1:7bc0f280c259 1433 }
sinrab 1:7bc0f280c259 1434 if (buttonEnter==0 & pmenu==0) { // Enter
sinrab 1:7bc0f280c259 1435 pmenu=1;
sinrab 1:7bc0f280c259 1436 wait(0.2);
sinrab 4:776f59129c24 1437 if(nline==7) {
sinrab 1:7bc0f280c259 1438 mon=mon-1;
sinrab 1:7bc0f280c259 1439 SetDateTime();
sinrab 1:7bc0f280c259 1440 mon=mon+1;
sinrab 1:7bc0f280c259 1441 }
sinrab 4:776f59129c24 1442 if(nline==8) {
sinrab 1:7bc0f280c259 1443 pmenu=0;
sinrab 1:7bc0f280c259 1444 Screen=5;
sinrab 1:7bc0f280c259 1445 complit=0;
sinrab 1:7bc0f280c259 1446 }
sinrab 1:7bc0f280c259 1447 }
sinrab 1:7bc0f280c259 1448 if (buttonUp==0 & pmenu==0) { // Up
sinrab 1:7bc0f280c259 1449 nline--;
sinrab 1:7bc0f280c259 1450 wait(0.2);
sinrab 1:7bc0f280c259 1451 if (nline==0) nline=8;
sinrab 1:7bc0f280c259 1452 }
sinrab 1:7bc0f280c259 1453 if (buttonDown==0 & pmenu==0) { // Down
sinrab 1:7bc0f280c259 1454 nline++;
sinrab 1:7bc0f280c259 1455 wait(0.2);
sinrab 1:7bc0f280c259 1456 if (nline==9) nline=1;
sinrab 0:ed1ba99f7b14 1457 }
sinrab 1:7bc0f280c259 1458
sinrab 1:7bc0f280c259 1459 if (pmenu==1) {
sinrab 1:7bc0f280c259 1460 if (buttonEnter==0) {
sinrab 1:7bc0f280c259 1461 pmenu=0;
sinrab 1:7bc0f280c259 1462 wait(0.2);
sinrab 1:7bc0f280c259 1463 }
sinrab 1:7bc0f280c259 1464 if (buttonUp==0) {
sinrab 1:7bc0f280c259 1465 if (nline==1) {
sinrab 1:7bc0f280c259 1466 hour++;
sinrab 1:7bc0f280c259 1467 wait(0.1);
sinrab 1:7bc0f280c259 1468 }
sinrab 1:7bc0f280c259 1469 if (nline==2) {
sinrab 1:7bc0f280c259 1470 min++;
sinrab 1:7bc0f280c259 1471 wait(0.1);
sinrab 1:7bc0f280c259 1472 }
sinrab 1:7bc0f280c259 1473 if (nline==3) {
sinrab 1:7bc0f280c259 1474 sec++;
sinrab 1:7bc0f280c259 1475 wait(0.1);
sinrab 1:7bc0f280c259 1476 }
sinrab 1:7bc0f280c259 1477 if (nline==4) {
sinrab 1:7bc0f280c259 1478 day++;
sinrab 1:7bc0f280c259 1479 wait(0.1);
sinrab 1:7bc0f280c259 1480 }
sinrab 1:7bc0f280c259 1481 if (nline==5) {
sinrab 1:7bc0f280c259 1482 mon++;
sinrab 1:7bc0f280c259 1483 wait(0.1);
sinrab 1:7bc0f280c259 1484 }
sinrab 1:7bc0f280c259 1485 if (nline==6) {
sinrab 1:7bc0f280c259 1486 year++;
sinrab 1:7bc0f280c259 1487 wait(0.1);
sinrab 1:7bc0f280c259 1488 }
sinrab 1:7bc0f280c259 1489 }
sinrab 1:7bc0f280c259 1490 if (buttonDown==0) {
sinrab 1:7bc0f280c259 1491 if (nline==1) {
sinrab 1:7bc0f280c259 1492 hour--;
sinrab 1:7bc0f280c259 1493 wait(0.1);
sinrab 1:7bc0f280c259 1494 }
sinrab 1:7bc0f280c259 1495 if (nline==2) {
sinrab 1:7bc0f280c259 1496 min--;
sinrab 1:7bc0f280c259 1497 wait(0.1);
sinrab 1:7bc0f280c259 1498 }
sinrab 1:7bc0f280c259 1499 if (nline==3) {
sinrab 1:7bc0f280c259 1500 sec--;
sinrab 1:7bc0f280c259 1501 wait(0.1);
sinrab 1:7bc0f280c259 1502 }
sinrab 1:7bc0f280c259 1503 if (nline==4) {
sinrab 1:7bc0f280c259 1504 day--;
sinrab 1:7bc0f280c259 1505 wait(0.1);
sinrab 1:7bc0f280c259 1506 }
sinrab 1:7bc0f280c259 1507 if (nline==5) {
sinrab 1:7bc0f280c259 1508 mon--;
sinrab 1:7bc0f280c259 1509 wait(0.1);
sinrab 1:7bc0f280c259 1510 }
sinrab 1:7bc0f280c259 1511 if (nline==6) {
sinrab 1:7bc0f280c259 1512 year--;
sinrab 1:7bc0f280c259 1513 wait(0.1);
sinrab 1:7bc0f280c259 1514 }
sinrab 1:7bc0f280c259 1515 }
sinrab 1:7bc0f280c259 1516
sinrab 1:7bc0f280c259 1517 one=1;
sinrab 1:7bc0f280c259 1518 }
sinrab 0:ed1ba99f7b14 1519 }
sinrab 0:ed1ba99f7b14 1520 //------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1521 if (Screen==4 & one==0) { //экран меню Калибровка
sinrab 0:ed1ba99f7b14 1522 if (buttonEnter==0) { // Enter set!
sinrab 4:776f59129c24 1523
sinrab 4:776f59129c24 1524 if (kline==1) a0a = in0;
sinrab 4:776f59129c24 1525 if (kline==2) a0k = 1.900f/(in0-a0a); //a0k = umax/(in0-a0a);
sinrab 4:776f59129c24 1526
sinrab 4:776f59129c24 1527 if (kline==3) a1a = in1 - 0.000100f; // a1a = avgAin1() - 0.00004
sinrab 4:776f59129c24 1528 if (kline==4) a1k = 0.2f/(in1 - a1a); //a1k = 1000/(avgAin1() - a1a) при 1амперах
sinrab 4:776f59129c24 1529
sinrab 4:776f59129c24 1530 if (kline==5) a2a = in2; // U high v
sinrab 4:776f59129c24 1531 if (kline==6) a2k = 1.900f/(in2-a2a); // U high v
sinrab 4:776f59129c24 1532
sinrab 4:776f59129c24 1533 if (kline==13) { // load
sinrab 4:776f59129c24 1534
sinrab 4:776f59129c24 1535 a0a = 0.000679;
sinrab 4:776f59129c24 1536 a0k = 5.006402;
sinrab 4:776f59129c24 1537 a1a = 0.143353;
sinrab 4:776f59129c24 1538 a1k = 3.224676;
sinrab 4:776f59129c24 1539 a2a = 0.000015;
sinrab 4:776f59129c24 1540 a2k = 33.627953;
sinrab 4:776f59129c24 1541 }
sinrab 4:776f59129c24 1542 if (kline==14) { // save
sinrab 4:776f59129c24 1543 ledshort=1; // 1 раз моргнуло - начало записи
sinrab 4:776f59129c24 1544 wait(0.02);
sinrab 4:776f59129c24 1545 ledshort=0;
sinrab 4:776f59129c24 1546 wait(0.05);
sinrab 4:776f59129c24 1547 eeprom.nbyte_write(8, (char*)&a0a, sizeof(a0a)); // a0a float - 4 байта
sinrab 4:776f59129c24 1548 eeprom.nbyte_write(12, (char*)&a0k, sizeof(a0k)); // a0k float - 4 байта
sinrab 4:776f59129c24 1549 eeprom.nbyte_write(16, (char*)&a1a, sizeof(a1a)); // a1a float - 4 байта
sinrab 4:776f59129c24 1550 eeprom.nbyte_write(20, (char*)&a1k, sizeof(a1k)); // a1k float - 4 байта
sinrab 4:776f59129c24 1551 eeprom.nbyte_write(24, (char*)&a2a, sizeof(a2a)); // a2a float - 4 байта
sinrab 4:776f59129c24 1552 eeprom.nbyte_write(28, (char*)&a2k, sizeof(a2k)); // a2k float - 4 байта
sinrab 4:776f59129c24 1553 ledshort=1; // 2 раз моргнуло - записалось
sinrab 4:776f59129c24 1554 wait(0.02);
sinrab 4:776f59129c24 1555 ledshort=0;
sinrab 4:776f59129c24 1556 wait(0.1);
sinrab 4:776f59129c24 1557 }
sinrab 3:791cf9a867d1 1558 if (kline==15) Screen=5; //exit
sinrab 0:ed1ba99f7b14 1559 complit=0;
sinrab 0:ed1ba99f7b14 1560 }
sinrab 0:ed1ba99f7b14 1561
sinrab 0:ed1ba99f7b14 1562 if (buttonUp==0) { // Up
sinrab 0:ed1ba99f7b14 1563 kline--; //-
sinrab 0:ed1ba99f7b14 1564 if (kline==0) kline=15;
sinrab 0:ed1ba99f7b14 1565 }
sinrab 0:ed1ba99f7b14 1566
sinrab 0:ed1ba99f7b14 1567 if (buttonDown==0) { // Down
sinrab 0:ed1ba99f7b14 1568 kline++; //+
sinrab 0:ed1ba99f7b14 1569 if (kline==16) kline=1;
sinrab 0:ed1ba99f7b14 1570 }
sinrab 0:ed1ba99f7b14 1571 one=1;
sinrab 0:ed1ba99f7b14 1572 }
sinrab 0:ed1ba99f7b14 1573 //------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1574 if (Screen==5 & one==0) { //экран 5 Настройки главная-------------------------------------------------------
sinrab 0:ed1ba99f7b14 1575 if (buttonEnter==0 & pmenu==0) { // Enter
sinrab 4:776f59129c24 1576
sinrab 0:ed1ba99f7b14 1577 if (mline==1) {
sinrab 1:7bc0f280c259 1578 Screen=3;
sinrab 0:ed1ba99f7b14 1579 complit=0;
sinrab 0:ed1ba99f7b14 1580 }
sinrab 4:776f59129c24 1581
sinrab 0:ed1ba99f7b14 1582 if (mline==2) {
sinrab 0:ed1ba99f7b14 1583 mline2=1;
sinrab 0:ed1ba99f7b14 1584 pmenu=1;
sinrab 0:ed1ba99f7b14 1585 one=1;
sinrab 0:ed1ba99f7b14 1586 wait(0.2);
sinrab 0:ed1ba99f7b14 1587 }
sinrab 4:776f59129c24 1588
sinrab 4:776f59129c24 1589 if (mline==3) { // sound beeper
sinrab 4:776f59129c24 1590 beeper=!beeper;
sinrab 4:776f59129c24 1591 ledshort=1;
sinrab 4:776f59129c24 1592 wait(0.02);
sinrab 4:776f59129c24 1593 ledshort=0;
sinrab 4:776f59129c24 1594 wait(0.05);
sinrab 4:776f59129c24 1595 eeprom.nbyte_write(44, (char*)&beeper, sizeof(beeper)); // beeper float - 4 байта
sinrab 4:776f59129c24 1596 ledshort=1;
sinrab 4:776f59129c24 1597 wait(0.02);
sinrab 4:776f59129c24 1598 ledshort=0;
sinrab 4:776f59129c24 1599 mline7=1;
sinrab 4:776f59129c24 1600 pmenu=1;
sinrab 4:776f59129c24 1601 one=1;
sinrab 4:776f59129c24 1602 wait(0.2);
sinrab 4:776f59129c24 1603 }
sinrab 4:776f59129c24 1604
sinrab 3:791cf9a867d1 1605 if (mline==4) { // вентилятор старт
sinrab 3:791cf9a867d1 1606 mline4=1;
sinrab 3:791cf9a867d1 1607 pmenu=1;
sinrab 3:791cf9a867d1 1608 one=1;
sinrab 3:791cf9a867d1 1609 wait(0.2);
sinrab 3:791cf9a867d1 1610 }
sinrab 4:776f59129c24 1611
sinrab 3:791cf9a867d1 1612 if (mline==5) { // вентилятор full
sinrab 3:791cf9a867d1 1613 mline5=1;
sinrab 3:791cf9a867d1 1614 pmenu=1;
sinrab 3:791cf9a867d1 1615 one=1;
sinrab 3:791cf9a867d1 1616 wait(0.2);
sinrab 3:791cf9a867d1 1617 }
sinrab 4:776f59129c24 1618
sinrab 3:791cf9a867d1 1619 if (mline==6) { // температура отключения нагрузки
sinrab 3:791cf9a867d1 1620 mline6=1;
sinrab 3:791cf9a867d1 1621 pmenu=1;
sinrab 3:791cf9a867d1 1622 one=1;
sinrab 3:791cf9a867d1 1623 wait(0.2);
sinrab 3:791cf9a867d1 1624 }
sinrab 4:776f59129c24 1625
sinrab 3:791cf9a867d1 1626 if (mline==7) { // R падение U вкл выкл
sinrab 3:791cf9a867d1 1627 rdown_on=!rdown_on;
sinrab 4:776f59129c24 1628 ledshort=1;
sinrab 4:776f59129c24 1629 wait(0.02);
sinrab 4:776f59129c24 1630 ledshort=0;
sinrab 4:776f59129c24 1631 wait(0.05);
sinrab 4:776f59129c24 1632 eeprom.nbyte_write(48, (char*)&rdown_on, sizeof(rdown_on)); // rdown_on float - 4 байта
sinrab 4:776f59129c24 1633 ledshort=1;
sinrab 4:776f59129c24 1634 wait(0.02);
sinrab 4:776f59129c24 1635 ledshort=0;
sinrab 3:791cf9a867d1 1636 mline7=1;
sinrab 3:791cf9a867d1 1637 pmenu=1;
sinrab 3:791cf9a867d1 1638 one=1;
sinrab 3:791cf9a867d1 1639 wait(0.2);
sinrab 3:791cf9a867d1 1640 }
sinrab 4:776f59129c24 1641
sinrab 3:791cf9a867d1 1642 if (mline==8) { // сопротивление R номинал
sinrab 3:791cf9a867d1 1643 mline8=1;
sinrab 3:791cf9a867d1 1644 pmenu=1;
sinrab 3:791cf9a867d1 1645 one=1;
sinrab 3:791cf9a867d1 1646 wait(0.2);
sinrab 3:791cf9a867d1 1647 }
sinrab 4:776f59129c24 1648
sinrab 0:ed1ba99f7b14 1649 if (mline==9) { // меню калибровки
sinrab 0:ed1ba99f7b14 1650 Screen=4;
sinrab 0:ed1ba99f7b14 1651 complit=0;
sinrab 0:ed1ba99f7b14 1652 }
sinrab 4:776f59129c24 1653
sinrab 0:ed1ba99f7b14 1654 if (mline==10) { // меню analog in, noise
sinrab 0:ed1ba99f7b14 1655 Screen=2;
sinrab 0:ed1ba99f7b14 1656 complit=0;
sinrab 0:ed1ba99f7b14 1657 }
sinrab 4:776f59129c24 1658
sinrab 3:791cf9a867d1 1659 if (mline==11) { // U максимальная
sinrab 3:791cf9a867d1 1660 mline11=1;
sinrab 3:791cf9a867d1 1661 pmenu=1;
sinrab 3:791cf9a867d1 1662 one=1;
sinrab 3:791cf9a867d1 1663 wait(0.2);
sinrab 3:791cf9a867d1 1664 }
sinrab 4:776f59129c24 1665
sinrab 4:776f59129c24 1666 if (mline==12) { // I max
sinrab 4:776f59129c24 1667 mline12=1;
sinrab 4:776f59129c24 1668 pmenu=1;
sinrab 4:776f59129c24 1669 one=1;
sinrab 4:776f59129c24 1670 wait(0.2);
sinrab 4:776f59129c24 1671 }
sinrab 4:776f59129c24 1672
sinrab 4:776f59129c24 1673 if (mline==13) { // screen saver
sinrab 4:776f59129c24 1674 mline13=1;
sinrab 4:776f59129c24 1675 pmenu=1;
sinrab 4:776f59129c24 1676 one=1;
sinrab 4:776f59129c24 1677 wait(0.2);
sinrab 4:776f59129c24 1678 }
sinrab 4:776f59129c24 1679
sinrab 4:776f59129c24 1680 if (mline==14) { // загрузить в память настройки по умолчанию и нужно перезагрузиться
sinrab 4:776f59129c24 1681 savedefaulttoflash();
sinrab 4:776f59129c24 1682 mline14=1;
sinrab 4:776f59129c24 1683 pmenu=1;
sinrab 4:776f59129c24 1684 one=1;
sinrab 4:776f59129c24 1685 wait(0.2);
sinrab 4:776f59129c24 1686 }
sinrab 4:776f59129c24 1687
sinrab 0:ed1ba99f7b14 1688 if (mline==15) {
sinrab 0:ed1ba99f7b14 1689 Screen=1;
sinrab 0:ed1ba99f7b14 1690 complit=0;
sinrab 0:ed1ba99f7b14 1691 }
sinrab 0:ed1ba99f7b14 1692 }
sinrab 0:ed1ba99f7b14 1693
sinrab 0:ed1ba99f7b14 1694 if (buttonUp==0 & pmenu==0) { // Up
sinrab 0:ed1ba99f7b14 1695 mline--; //-
sinrab 0:ed1ba99f7b14 1696 if (mline==0) mline=15;
sinrab 0:ed1ba99f7b14 1697 }
sinrab 0:ed1ba99f7b14 1698
sinrab 0:ed1ba99f7b14 1699 if (buttonDown==0 & pmenu==0) { // Down
sinrab 0:ed1ba99f7b14 1700 mline++; //+
sinrab 0:ed1ba99f7b14 1701 if (mline==16) mline=1;
sinrab 0:ed1ba99f7b14 1702 }
sinrab 0:ed1ba99f7b14 1703
sinrab 0:ed1ba99f7b14 1704 //---------подменю яркость подсветки
sinrab 0:ed1ba99f7b14 1705 if (mline2==1) {
sinrab 0:ed1ba99f7b14 1706 int i=0;
sinrab 4:776f59129c24 1707 if (buttonUp==0 && brightness<1) {
sinrab 4:776f59129c24 1708 if(brightness >= 0.09f && i==0) {
sinrab 4:776f59129c24 1709 brightness+=0.1f;
sinrab 4:776f59129c24 1710 pinbrightness=brightness;
sinrab 0:ed1ba99f7b14 1711 i=1;
sinrab 0:ed1ba99f7b14 1712 }
sinrab 4:776f59129c24 1713 if(brightness < 0.09f && i==0) {
sinrab 4:776f59129c24 1714 brightness+=0.01f;
sinrab 4:776f59129c24 1715 pinbrightness=brightness;
sinrab 0:ed1ba99f7b14 1716 i=1;
sinrab 0:ed1ba99f7b14 1717 }
sinrab 0:ed1ba99f7b14 1718
sinrab 0:ed1ba99f7b14 1719 }
sinrab 0:ed1ba99f7b14 1720
sinrab 4:776f59129c24 1721 if (buttonDown==0 && brightness>0.01f) {
sinrab 4:776f59129c24 1722 if(brightness <= 0.1f && i==0) {
sinrab 4:776f59129c24 1723 brightness-=0.01f;
sinrab 4:776f59129c24 1724 pinbrightness=brightness;
sinrab 0:ed1ba99f7b14 1725 i=1;
sinrab 0:ed1ba99f7b14 1726 }
sinrab 4:776f59129c24 1727 if(brightness > 0.1f && i==0) {
sinrab 4:776f59129c24 1728 brightness-=0.1f;
sinrab 4:776f59129c24 1729 pinbrightness=brightness;
sinrab 0:ed1ba99f7b14 1730 i=1;
sinrab 0:ed1ba99f7b14 1731 }
sinrab 0:ed1ba99f7b14 1732 }
sinrab 0:ed1ba99f7b14 1733
sinrab 0:ed1ba99f7b14 1734 if (buttonEnter==0) {
sinrab 4:776f59129c24 1735 ledshort=1;
sinrab 4:776f59129c24 1736 wait(0.02);
sinrab 4:776f59129c24 1737 ledshort=0;
sinrab 4:776f59129c24 1738 wait(0.05);
sinrab 4:776f59129c24 1739 eeprom.nbyte_write(40, (char*)&brightness, sizeof(brightness)); // brightness float - 4 байта
sinrab 4:776f59129c24 1740 ledshort=1;
sinrab 4:776f59129c24 1741 wait(0.02);
sinrab 4:776f59129c24 1742 ledshort=0;
sinrab 0:ed1ba99f7b14 1743 mline2=0;
sinrab 0:ed1ba99f7b14 1744 pmenu=0;
sinrab 0:ed1ba99f7b14 1745 }
sinrab 0:ed1ba99f7b14 1746 }
sinrab 4:776f59129c24 1747 //------------------------------------ tempstart
sinrab 3:791cf9a867d1 1748 if (mline4==1) {
sinrab 4:776f59129c24 1749 if (buttonUp==0) {
sinrab 3:791cf9a867d1 1750 tempstart++;
sinrab 3:791cf9a867d1 1751 wait(0.1);
sinrab 3:791cf9a867d1 1752 }
sinrab 4:776f59129c24 1753 if (buttonDown==0) {
sinrab 3:791cf9a867d1 1754 tempstart--;
sinrab 3:791cf9a867d1 1755 wait(0.1);
sinrab 3:791cf9a867d1 1756 }
sinrab 3:791cf9a867d1 1757 if (buttonEnter==0) {
sinrab 4:776f59129c24 1758 ledshort=1;
sinrab 4:776f59129c24 1759 wait(0.02);
sinrab 4:776f59129c24 1760 ledshort=0;
sinrab 4:776f59129c24 1761 wait(0.05);
sinrab 4:776f59129c24 1762 eeprom.nbyte_write(56, (char*)&tempstart, sizeof(tempstart)); // tempstart float - 4 байта
sinrab 4:776f59129c24 1763 ledshort=1;
sinrab 4:776f59129c24 1764 wait(0.02);
sinrab 4:776f59129c24 1765 ledshort=0;
sinrab 3:791cf9a867d1 1766 mline4=0;
sinrab 3:791cf9a867d1 1767 pmenu=0;
sinrab 3:791cf9a867d1 1768 }
sinrab 3:791cf9a867d1 1769 }
sinrab 3:791cf9a867d1 1770 //------------------------------------ tempfull
sinrab 3:791cf9a867d1 1771 if (mline5==1) {
sinrab 4:776f59129c24 1772 if (buttonUp==0) {
sinrab 3:791cf9a867d1 1773 tempfull++;
sinrab 3:791cf9a867d1 1774 wait(0.1);
sinrab 3:791cf9a867d1 1775 }
sinrab 4:776f59129c24 1776 if (buttonDown==0) {
sinrab 3:791cf9a867d1 1777 tempfull--;
sinrab 3:791cf9a867d1 1778 wait(0.1);
sinrab 3:791cf9a867d1 1779 }
sinrab 3:791cf9a867d1 1780 if (buttonEnter==0) {
sinrab 4:776f59129c24 1781 ledshort=1;
sinrab 4:776f59129c24 1782 wait(0.02);
sinrab 4:776f59129c24 1783 ledshort=0;
sinrab 4:776f59129c24 1784 wait(0.05);
sinrab 4:776f59129c24 1785 eeprom.nbyte_write(60, (char*)&tempfull, sizeof(tempfull)); // tempfull float - 4 байта
sinrab 4:776f59129c24 1786 ledshort=1;
sinrab 4:776f59129c24 1787 wait(0.02);
sinrab 4:776f59129c24 1788 ledshort=0;
sinrab 3:791cf9a867d1 1789 mline5=0;
sinrab 3:791cf9a867d1 1790 pmenu=0;
sinrab 3:791cf9a867d1 1791 }
sinrab 3:791cf9a867d1 1792 }
sinrab 3:791cf9a867d1 1793 //------------------------------------ tempcutoff
sinrab 3:791cf9a867d1 1794 if (mline6==1) {
sinrab 4:776f59129c24 1795 if (buttonUp==0) {
sinrab 3:791cf9a867d1 1796 tempcutoff++;
sinrab 3:791cf9a867d1 1797 wait(0.1);
sinrab 3:791cf9a867d1 1798 }
sinrab 4:776f59129c24 1799 if (buttonDown==0) {
sinrab 3:791cf9a867d1 1800 tempcutoff--;
sinrab 3:791cf9a867d1 1801 wait(0.1);
sinrab 3:791cf9a867d1 1802 }
sinrab 3:791cf9a867d1 1803 if (buttonEnter==0) {
sinrab 4:776f59129c24 1804 ledshort=1;
sinrab 4:776f59129c24 1805 wait(0.02);
sinrab 4:776f59129c24 1806 ledshort=0;
sinrab 4:776f59129c24 1807 wait(0.05);
sinrab 4:776f59129c24 1808 eeprom.nbyte_write(64, (char*)&tempcutoff, sizeof(tempcutoff)); // tempcutoff float - 4 байта
sinrab 4:776f59129c24 1809 ledshort=1;
sinrab 4:776f59129c24 1810 wait(0.02);
sinrab 4:776f59129c24 1811 ledshort=0;
sinrab 3:791cf9a867d1 1812 mline6=0;
sinrab 3:791cf9a867d1 1813 pmenu=0;
sinrab 3:791cf9a867d1 1814 }
sinrab 3:791cf9a867d1 1815 }
sinrab 3:791cf9a867d1 1816 //------------------------------------ падение на R вкл выкл
sinrab 3:791cf9a867d1 1817 if (mline7==1 & one==0) {
sinrab 4:776f59129c24 1818 wait(0.1);
sinrab 4:776f59129c24 1819 mline7=0;
sinrab 4:776f59129c24 1820 pmenu=0;
sinrab 3:791cf9a867d1 1821 }
sinrab 3:791cf9a867d1 1822 //------------------------------------ сопротивление резистора
sinrab 3:791cf9a867d1 1823 if (mline8==1) {
sinrab 4:776f59129c24 1824 if (buttonUp==0) {
sinrab 3:791cf9a867d1 1825 rdown=rdown+0.001f;
sinrab 3:791cf9a867d1 1826 wait(0.1);
sinrab 3:791cf9a867d1 1827 }
sinrab 4:776f59129c24 1828 if (buttonDown==0) {
sinrab 3:791cf9a867d1 1829 rdown=rdown-0.001f;
sinrab 3:791cf9a867d1 1830 wait(0.1);
sinrab 3:791cf9a867d1 1831 }
sinrab 3:791cf9a867d1 1832 if (buttonEnter==0) {
sinrab 4:776f59129c24 1833 ledshort=1;
sinrab 4:776f59129c24 1834 wait(0.02);
sinrab 4:776f59129c24 1835 ledshort=0;
sinrab 4:776f59129c24 1836 wait(0.05);
sinrab 4:776f59129c24 1837 eeprom.nbyte_write(36, (char*)&rdown, sizeof(rdown)); // rdown float - 4 байта
sinrab 4:776f59129c24 1838 ledshort=1;
sinrab 4:776f59129c24 1839 wait(0.02);
sinrab 4:776f59129c24 1840 ledshort=0;
sinrab 3:791cf9a867d1 1841 mline8=0;
sinrab 3:791cf9a867d1 1842 pmenu=0;
sinrab 3:791cf9a867d1 1843 }
sinrab 3:791cf9a867d1 1844 }
sinrab 3:791cf9a867d1 1845 //------------------------------------ U max
sinrab 3:791cf9a867d1 1846 if (mline11==1) {
sinrab 4:776f59129c24 1847 if (buttonUp==0) {
sinrab 3:791cf9a867d1 1848 umax++;
sinrab 3:791cf9a867d1 1849 wait(0.1);
sinrab 3:791cf9a867d1 1850 }
sinrab 4:776f59129c24 1851 if (buttonDown==0) {
sinrab 3:791cf9a867d1 1852 umax--;
sinrab 3:791cf9a867d1 1853 wait(0.1);
sinrab 3:791cf9a867d1 1854 }
sinrab 3:791cf9a867d1 1855 if (buttonEnter==0) {
sinrab 4:776f59129c24 1856 ledshort=1;
sinrab 4:776f59129c24 1857 wait(0.02);
sinrab 4:776f59129c24 1858 ledshort=0;
sinrab 4:776f59129c24 1859 wait(0.05);
sinrab 4:776f59129c24 1860 eeprom.nbyte_write(52, (char*)&umax, sizeof(umax)); // umax float - 4 байта
sinrab 4:776f59129c24 1861 ledshort=1;
sinrab 4:776f59129c24 1862 wait(0.02);
sinrab 4:776f59129c24 1863 ledshort=0;
sinrab 3:791cf9a867d1 1864 mline11=0;
sinrab 3:791cf9a867d1 1865 pmenu=0;
sinrab 3:791cf9a867d1 1866 }
sinrab 3:791cf9a867d1 1867 }
sinrab 4:776f59129c24 1868 //------------------------------------ I max
sinrab 4:776f59129c24 1869 if (mline12==1) {
sinrab 4:776f59129c24 1870 if (buttonUp==0) {
sinrab 4:776f59129c24 1871 imax=imax+0.1f;
sinrab 4:776f59129c24 1872 wait(0.05);
sinrab 4:776f59129c24 1873 }
sinrab 4:776f59129c24 1874 if (buttonDown==0) {
sinrab 4:776f59129c24 1875 imax=imax-0.1f;
sinrab 4:776f59129c24 1876 wait(0.05);
sinrab 4:776f59129c24 1877 }
sinrab 4:776f59129c24 1878 if (buttonEnter==0) {
sinrab 4:776f59129c24 1879 ledshort=1;
sinrab 4:776f59129c24 1880 wait(0.02);
sinrab 4:776f59129c24 1881 ledshort=0;
sinrab 4:776f59129c24 1882 wait(0.05);
sinrab 4:776f59129c24 1883 eeprom.nbyte_write(32, (char*)&imax, sizeof(imax)); // imax float - 4 байта
sinrab 4:776f59129c24 1884 ledshort=1;
sinrab 4:776f59129c24 1885 wait(0.02);
sinrab 4:776f59129c24 1886 ledshort=0;
sinrab 4:776f59129c24 1887 mline12=0;
sinrab 4:776f59129c24 1888 pmenu=0;
sinrab 4:776f59129c24 1889 }
sinrab 4:776f59129c24 1890 }
sinrab 4:776f59129c24 1891 //------------------------------------ screensaver
sinrab 4:776f59129c24 1892 if (mline13==1) {
sinrab 4:776f59129c24 1893 if (buttonUp==0) {
sinrab 4:776f59129c24 1894 screensaver++;
sinrab 4:776f59129c24 1895 if (screensaver==4) screensaver=0;
sinrab 4:776f59129c24 1896 wait(0.1);
sinrab 4:776f59129c24 1897 }
sinrab 4:776f59129c24 1898 if (buttonDown==0) {
sinrab 4:776f59129c24 1899 screensaver--;
sinrab 4:776f59129c24 1900 if (screensaver==-1) screensaver=3;
sinrab 4:776f59129c24 1901 wait(0.1);
sinrab 4:776f59129c24 1902 }
sinrab 4:776f59129c24 1903 if (buttonEnter==0) {
sinrab 4:776f59129c24 1904 ledshort=1;
sinrab 4:776f59129c24 1905 wait(0.02);
sinrab 4:776f59129c24 1906 ledshort=0;
sinrab 4:776f59129c24 1907 wait(0.05);
sinrab 4:776f59129c24 1908 eeprom.nbyte_write(68, (char*)&screensaver, sizeof(screensaver)); // screensaver float - 1 байт
sinrab 4:776f59129c24 1909 ledshort=1;
sinrab 4:776f59129c24 1910 wait(0.02);
sinrab 4:776f59129c24 1911 ledshort=0;
sinrab 4:776f59129c24 1912 mline13=0;
sinrab 4:776f59129c24 1913 pmenu=0;
sinrab 4:776f59129c24 1914 }
sinrab 4:776f59129c24 1915 }
sinrab 4:776f59129c24 1916 //------------------------------------
sinrab 4:776f59129c24 1917 if (mline14==1 & one==0) {
sinrab 4:776f59129c24 1918 wait(0.1);
sinrab 4:776f59129c24 1919 mline14=0;
sinrab 4:776f59129c24 1920 pmenu=0;
sinrab 4:776f59129c24 1921 }
sinrab 0:ed1ba99f7b14 1922 //------------------------------------
sinrab 0:ed1ba99f7b14 1923 one=1;
sinrab 3:791cf9a867d1 1924 //------------------------------------
sinrab 0:ed1ba99f7b14 1925
sinrab 0:ed1ba99f7b14 1926 }
sinrab 0:ed1ba99f7b14 1927 //------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1928 if (Screen==6 & one==0) { //экран 6
sinrab 0:ed1ba99f7b14 1929 if (buttonEnter==0) { // Enter
sinrab 4:776f59129c24 1930 Screen=1;
sinrab 4:776f59129c24 1931 complit=0;
sinrab 0:ed1ba99f7b14 1932 }
sinrab 0:ed1ba99f7b14 1933
sinrab 0:ed1ba99f7b14 1934 if (buttonUp==0) { // Up
sinrab 0:ed1ba99f7b14 1935 }
sinrab 0:ed1ba99f7b14 1936
sinrab 0:ed1ba99f7b14 1937 if (buttonDown==0) { // Down
sinrab 0:ed1ba99f7b14 1938 }
sinrab 0:ed1ba99f7b14 1939 one=1;
sinrab 0:ed1ba99f7b14 1940
sinrab 0:ed1ba99f7b14 1941 }
sinrab 0:ed1ba99f7b14 1942 //------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1943 if (Screen==7 & one==0) { //экран 7
sinrab 0:ed1ba99f7b14 1944 if (buttonEnter==0) { // Enter
sinrab 4:776f59129c24 1945
sinrab 0:ed1ba99f7b14 1946 }
sinrab 0:ed1ba99f7b14 1947
sinrab 0:ed1ba99f7b14 1948 if (buttonUp==0) { // Up
sinrab 4:776f59129c24 1949
sinrab 0:ed1ba99f7b14 1950 }
sinrab 0:ed1ba99f7b14 1951
sinrab 0:ed1ba99f7b14 1952 if (buttonDown==0) { // Down
sinrab 4:776f59129c24 1953 Screen=1;
sinrab 4:776f59129c24 1954 complit=0;
sinrab 0:ed1ba99f7b14 1955 }
sinrab 0:ed1ba99f7b14 1956 one=1;
sinrab 0:ed1ba99f7b14 1957
sinrab 0:ed1ba99f7b14 1958 }
sinrab 0:ed1ba99f7b14 1959 //------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1960 if (Screen==8 & one==0) { //экран 8
sinrab 0:ed1ba99f7b14 1961 if (buttonEnter==0) { // Enter
sinrab 0:ed1ba99f7b14 1962 }
sinrab 0:ed1ba99f7b14 1963
sinrab 0:ed1ba99f7b14 1964 if (buttonUp==0) { // Up
sinrab 0:ed1ba99f7b14 1965 }
sinrab 0:ed1ba99f7b14 1966
sinrab 0:ed1ba99f7b14 1967 if (buttonDown==0) { // Down
sinrab 0:ed1ba99f7b14 1968 }
sinrab 0:ed1ba99f7b14 1969 one=1;
sinrab 0:ed1ba99f7b14 1970
sinrab 0:ed1ba99f7b14 1971 }
sinrab 0:ed1ba99f7b14 1972 //------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1973 }
sinrab 0:ed1ba99f7b14 1974 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1975 void grid(void)
sinrab 0:ed1ba99f7b14 1976 {
sinrab 0:ed1ba99f7b14 1977 TFT.cls();
sinrab 0:ed1ba99f7b14 1978 for (int i=0; i<240; i=i+5) {
sinrab 0:ed1ba99f7b14 1979 TFT.line(0,i,320,i, White);
sinrab 0:ed1ba99f7b14 1980 }
sinrab 0:ed1ba99f7b14 1981 for (int i=2; i<240; i=i+5) {
sinrab 0:ed1ba99f7b14 1982 TFT.line(4,i,320,i, White);
sinrab 0:ed1ba99f7b14 1983 }
sinrab 0:ed1ba99f7b14 1984 for (int i=3; i<240; i=i+5) {
sinrab 0:ed1ba99f7b14 1985 TFT.line(4,i,320,i, White);
sinrab 0:ed1ba99f7b14 1986 }
sinrab 0:ed1ba99f7b14 1987
sinrab 0:ed1ba99f7b14 1988 }
sinrab 1:7bc0f280c259 1989 //------------------------------------------------------------------------------------------------------------
sinrab 0:ed1ba99f7b14 1990 void timeConvert(void) //показывает час с минуты с секундами начинают идти с часа и одной минуты
sinrab 0:ed1ba99f7b14 1991 {
sinrab 0:ed1ba99f7b14 1992 if (powerMosfet==1) treal = time(NULL);
sinrab 0:ed1ba99f7b14 1993 t = treal - tstart;
sinrab 0:ed1ba99f7b14 1994 h= t/3600;
sinrab 0:ed1ba99f7b14 1995 m= (t-h*3600)/60;
sinrab 0:ed1ba99f7b14 1996 s= (t-h*3600)-m*60;
sinrab 0:ed1ba99f7b14 1997 if (t == 359999) tstart=treal;
sinrab 1:7bc0f280c259 1998 }
sinrab 1:7bc0f280c259 1999 //------------------------------------------------------------------------------------------------------------
sinrab 1:7bc0f280c259 2000 void SetDateTime (void)
sinrab 1:7bc0f280c259 2001 {
sinrab 1:7bc0f280c259 2002 struct tm Clock;
sinrab 1:7bc0f280c259 2003 Clock.tm_year = year - 1900;
sinrab 1:7bc0f280c259 2004 Clock.tm_mon = mon;
sinrab 1:7bc0f280c259 2005 Clock.tm_mday = day;
sinrab 1:7bc0f280c259 2006 Clock.tm_hour = hour;
sinrab 1:7bc0f280c259 2007 Clock.tm_min = min;
sinrab 1:7bc0f280c259 2008 Clock.tm_sec = sec;
sinrab 1:7bc0f280c259 2009 time_t epoch = mktime(&Clock);
sinrab 1:7bc0f280c259 2010 set_time(epoch);
sinrab 1:7bc0f280c259 2011 }
sinrab 4:776f59129c24 2012 //------------------------------------------------------------------------------------------------------------*/
sinrab 4:776f59129c24 2013 void powerButton(void) // при нажатии кнопки питания
sinrab 4:776f59129c24 2014 {
sinrab 4:776f59129c24 2015 if (onepower==0) {
sinrab 4:776f59129c24 2016 timerforpoweriddle.attach(&keypoweriddle, 0.5);
sinrab 1:7bc0f280c259 2017
sinrab 4:776f59129c24 2018 if (saveractive==0) {
sinrab 4:776f59129c24 2019 powerMosfet=!powerMosfet;
sinrab 4:776f59129c24 2020 iddletimesaver.detach();
sinrab 4:776f59129c24 2021 onesaver=0;
sinrab 4:776f59129c24 2022 saveractive=0;
sinrab 4:776f59129c24 2023 } else {
sinrab 4:776f59129c24 2024 iddletimesaver.detach();
sinrab 4:776f59129c24 2025 onesaver=0;
sinrab 4:776f59129c24 2026 saveractive=0;
sinrab 4:776f59129c24 2027 }
sinrab 1:7bc0f280c259 2028
sinrab 4:776f59129c24 2029 if (beeper==1) {
sinrab 4:776f59129c24 2030 buzzer.beep(1600,0.05);
sinrab 4:776f59129c24 2031 }
sinrab 4:776f59129c24 2032 onepower=1;
sinrab 4:776f59129c24 2033 pb=0;
sinrab 1:7bc0f280c259 2034
sinrab 4:776f59129c24 2035 }
sinrab 4:776f59129c24 2036 if (powerMosfet==1) {
sinrab 4:776f59129c24 2037 tstart = treal = time(NULL);
sinrab 4:776f59129c24 2038 h=m=s=0;
sinrab 4:776f59129c24 2039 }
sinrab 4:776f59129c24 2040 }
sinrab 4:776f59129c24 2041 //------------------------------------------------------------------------------------------------------------
sinrab 4:776f59129c24 2042 void fans(void)
sinrab 4:776f59129c24 2043 {
sinrab 4:776f59129c24 2044 if (temperature < (tempstart-2)) {
sinrab 4:776f59129c24 2045 fst=0;
sinrab 4:776f59129c24 2046 fst2=0;
sinrab 4:776f59129c24 2047 fan = 0.0f;
sinrab 4:776f59129c24 2048 }
sinrab 1:7bc0f280c259 2049
sinrab 4:776f59129c24 2050 if (temperature >= tempstart && fst == 0) {
sinrab 4:776f59129c24 2051 fan = 1.0f;
sinrab 4:776f59129c24 2052 timerforfanstart.attach(&fanstart, 2.0);
sinrab 4:776f59129c24 2053 fst=1;
sinrab 4:776f59129c24 2054 }
sinrab 1:7bc0f280c259 2055
sinrab 4:776f59129c24 2056 if (fst2==1) {
sinrab 4:776f59129c24 2057 fanspeed = map (temperature, tempstart, tempfull, 0.4, 1);
sinrab 4:776f59129c24 2058 fan = fanspeed;
sinrab 4:776f59129c24 2059 }
sinrab 1:7bc0f280c259 2060
sinrab 4:776f59129c24 2061 if (temperature >= tempcutoff) {
sinrab 4:776f59129c24 2062 powerMosfet=0;
sinrab 4:776f59129c24 2063 pb=0;
sinrab 4:776f59129c24 2064 }
sinrab 1:7bc0f280c259 2065
sinrab 4:776f59129c24 2066 }
sinrab 4:776f59129c24 2067 //------------------------------------------------------------------------------------------------------------
sinrab 4:776f59129c24 2068 void fanstart(void)
sinrab 4:776f59129c24 2069 {
sinrab 4:776f59129c24 2070 fst2=1;
sinrab 4:776f59129c24 2071 }
sinrab 4:776f59129c24 2072 //------------------------------------------------------------------------------------------------------------
sinrab 4:776f59129c24 2073 void keypoweriddle(void)
sinrab 4:776f59129c24 2074 {
sinrab 4:776f59129c24 2075 onepower=0;
sinrab 4:776f59129c24 2076 }
sinrab 4:776f59129c24 2077 //------------------------------------------------------------------------------------------------------------
sinrab 4:776f59129c24 2078 void Protect(void)
sinrab 4:776f59129c24 2079 {
sinrab 4:776f59129c24 2080 // powerProtect==0 pp==0 защита от кз
sinrab 4:776f59129c24 2081 // cs==0 csp==0 прорисовка короткого замыкания
sinrab 4:776f59129c24 2082 if (U5<0.9f && cc==0) {
sinrab 4:776f59129c24 2083 shortline=1;
sinrab 4:776f59129c24 2084 } else {
sinrab 4:776f59129c24 2085 shortline=0;
sinrab 4:776f59129c24 2086 }
sinrab 4:776f59129c24 2087 if (shm==!shortline) {
sinrab 4:776f59129c24 2088 shl=0;
sinrab 4:776f59129c24 2089 }
sinrab 1:7bc0f280c259 2090
sinrab 4:776f59129c24 2091 if (shortline==1 && shl==0) {
sinrab 4:776f59129c24 2092 cs=1;
sinrab 4:776f59129c24 2093 csp=0;
sinrab 4:776f59129c24 2094 shl=1;
sinrab 4:776f59129c24 2095 shm=shortline;
sinrab 4:776f59129c24 2096 ledshort=1;
sinrab 4:776f59129c24 2097 }
sinrab 1:7bc0f280c259 2098
sinrab 4:776f59129c24 2099 if (shortline==0 && shl==0) {
sinrab 4:776f59129c24 2100 cs=0;
sinrab 4:776f59129c24 2101 csp=0;
sinrab 4:776f59129c24 2102 shl=1;
sinrab 4:776f59129c24 2103 shm=shortline;
sinrab 4:776f59129c24 2104 ledshort=0;
sinrab 4:776f59129c24 2105 }
sinrab 1:7bc0f280c259 2106
sinrab 4:776f59129c24 2107 if (powerProtect==1) {
sinrab 4:776f59129c24 2108 if (U5<0.9f && cc==0) {
sinrab 4:776f59129c24 2109 powerMosfet=0;
sinrab 4:776f59129c24 2110 pb=0;
sinrab 4:776f59129c24 2111 if (beeper==1) {
sinrab 4:776f59129c24 2112 buzzer.beep(480,0.3);
sinrab 4:776f59129c24 2113 }
sinrab 4:776f59129c24 2114 }
sinrab 4:776f59129c24 2115 }
sinrab 4:776f59129c24 2116 }
sinrab 4:776f59129c24 2117 //------------------------------------------------------------------------------------------------------------
sinrab 4:776f59129c24 2118 void ScreenSaver(void)
sinrab 4:776f59129c24 2119 {
sinrab 4:776f59129c24 2120 if (screensaver != 0) {
sinrab 4:776f59129c24 2121 if (buttonEnter==0) {
sinrab 4:776f59129c24 2122 iddletimesaver.detach();
sinrab 4:776f59129c24 2123 onesaver=0;
sinrab 4:776f59129c24 2124 saveractive=0;
sinrab 4:776f59129c24 2125 }
sinrab 4:776f59129c24 2126 if (buttonDown==0) {
sinrab 4:776f59129c24 2127 iddletimesaver.detach();
sinrab 4:776f59129c24 2128 onesaver=0;
sinrab 4:776f59129c24 2129 saveractive=0;
sinrab 4:776f59129c24 2130 }
sinrab 4:776f59129c24 2131 if (buttonUp==0) {
sinrab 4:776f59129c24 2132 iddletimesaver.detach();
sinrab 4:776f59129c24 2133 onesaver=0;
sinrab 4:776f59129c24 2134 saveractive=0;
sinrab 4:776f59129c24 2135 }
sinrab 4:776f59129c24 2136 }
sinrab 4:776f59129c24 2137 if (Screen==8 && saveractive==0) {
sinrab 4:776f59129c24 2138 Screen=1;
sinrab 4:776f59129c24 2139 complit=0;
sinrab 4:776f59129c24 2140 }
sinrab 4:776f59129c24 2141 if (Screen == 1 && onesaver==0) {
sinrab 4:776f59129c24 2142 if (powerMosfet == 0 && screensaver != 0) {
sinrab 4:776f59129c24 2143 iddletimesaver.attach(&screensaverstart, 10.0);
sinrab 4:776f59129c24 2144 onesaver=1;
sinrab 4:776f59129c24 2145 }
sinrab 4:776f59129c24 2146 }
sinrab 4:776f59129c24 2147 }
sinrab 4:776f59129c24 2148 //------------------------------------------------------------------------------------------------------------
sinrab 4:776f59129c24 2149 void screensaverstart(void)
sinrab 4:776f59129c24 2150 {
sinrab 4:776f59129c24 2151 saveractive=1;
sinrab 4:776f59129c24 2152 Screen=8;
sinrab 4:776f59129c24 2153 complit=0;
sinrab 4:776f59129c24 2154 }
sinrab 4:776f59129c24 2155 //------------------------------------------------------------------------------------------------------------