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:
Thu Jun 06 10:22:13 2019 +0000
Revision:
10:60fa02641552
Parent:
5:0b3c71d7e475
v1.0.1

Who changed what in which revision?

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