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
Child:
6:88e92896a3a1
Child:
7:8410439dee73
v1.0.1

Who changed what in which revision?

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