Freeman Oldman / Mbed 2 deprecated PSTFT_DC_Power_Supply

Dependencies:   mbed TFT_fonts SPI_TFT_ILI9341 beep _24LCXXX

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