FRMD KL25Z <=i2c=> NXP PCF8563 (RTC) FRMD KL25Z SPI=> MCP23S17 => (GLCD) T6963C FRMD KL25Z Tsi => 3 button : <--> <enter> <++> FRMD KL25Z => Bip()

Dependencies:   TSI mbed

Fork of RTC8564NB_Clock by masa miya

Revision:
2:c271f83a69e4
diff -r 7c1d3790f08d -r c271f83a69e4 TouchMenu.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TouchMenu.h	Wed May 14 04:46:52 2014 +0000
@@ -0,0 +1,303 @@
+#ifndef TOUCHMENU_H
+#define TOUCHMENU_H
+#include "bip.h"
+#include "TSISensor.h"
+#include "mbed.h"
+#include "GLCD_spi.h"
+
+//*******************************************
+/*   TouchRun osztály
+// Példányosítás:  TouchRun TchR;
+//
+*/
+class TouchRun{
+public:
+    TouchRun();        // Konstruktor
+    //~TouchRun();       // Destructor
+    int touch_run(void);
+private: 
+    void kurzor(void);
+    void kurzor_torles(void);
+    void kep(void);
+    void akcio(void);
+ 
+    char buffer[22]; 
+    int touch_status;
+    int touch_value;
+    int T_value;
+    int a;
+    TSISensor tsi;
+    Timer touch_timer;
+};
+//*******************************************
+
+//** Fügvény definició **********************
+
+
+//-------------------------------------------
+//-------------------------------------------
+void TouchRun::kurzor(){
+    lcd_string(touch_value+1,1,">>");
+}
+
+//-------------------------------------------
+void TouchRun::kurzor_torles(){
+    lcd_string(2,0,"    ");
+    lcd_string(3,0,"    ");
+    lcd_string(4,0,"    ");    
+    lcd_string(5,0,"    ");
+    lcd_string(6,0,"    ");        
+    
+}
+//-------------------------------------------
+void TouchRun::akcio(){
+    int touch=0;
+    touch = int(tsi.readPercentage()*100);                   // vissza adott érték:
+    if(touch==0){touch_value=0; return;}
+    if(touch>0 & touch<33)  {touch_value=1; return;}       // [<]        z_villan();
+    if(touch>32 & touch<66) {touch_value=2; return;}      // [ent]       z_villan();
+    if(touch>65 & touch<101){touch_value=3; return;}     // [>]          z_villan();
+    return;
+    
+}
+//-------------------------------------------
+void TouchRun::kep(){
+    //lcd_cls();
+    lcd_string(7,0,"<--> <Ent> <++> ");
+}
+//-------------------------------------------
+int TouchRun::touch_run(){           //  Touch állapotgép
+    //DigitalOut K_LED(LED3);
+
+    switch(touch_status){
+        case 0:             // állókép kiírása
+            //K_LED = 1;
+            kep();
+            T_value=1;
+            touch_status++;        
+            return 0;
+        case 1:                     // akció???
+            akcio();                // Melyik gombot nyomta meg? : touch_value = 0 semmi, =1 [<], =2 [ENter], =3 [>]
+            if(touch_value>0){      // Ha volt akció, tovább lép
+                Bip(2,1);
+                touch_status++; 
+            }
+            sprintf(buffer,">%d<",touch_value);
+            lcd_string(7,18,buffer);
+            return(touch_value);
+        case 2:             // akció volt
+            //kurzor();
+            //K_LED = 0;
+            
+            touch_timer.reset();    //késleltet
+            touch_timer.start();
+            touch_status++;
+            return 0;
+        case 3:             // timer túl csordult???
+            a= touch_timer.read_ms();
+            if(a > int(300)){
+                touch_timer.stop();
+                
+                touch_status++;
+            }
+            return 0;
+        case 4:             // kúrzor megjelenítése
+            //kurzor_torles();
+            touch_status=1; //touch_status++;
+            return 0;
+    }
+    return 0;
+}
+
+
+//*******************************************
+TouchRun::TouchRun(){       //Konstruktor
+    touch_status = 0;
+    touch_value = 0;
+    //DigitalOut P_LED(LED1), Z_LED(LED2), K_LED(LED3);
+
+}
+//TouchRun::~TouchRun(){}     //Destructor
+//*******************************************
+//*******************************************
+
+
+
+
+
+//*******************************************
+/*TouchMenu 
+// Meghívás:       b = TchM.menu_run(a);       //Fő menü
+// (a) Meghívás paramétere: megadja melyik menüsort jelenitse meg a kép függvény
+// (b) Visszatérési paraméter: megadja melyik sorról nyomott <Enter>-t (touch_value)
+//
+*/
+
+    int menu_run(int);
+    TouchRun TchR1;
+
+    void mstart(int);
+    int mkurzor(int);
+    void kurzor_torles(void);
+    void akcio(void);
+
+    int t_value;
+    int m_kurzor;
+    int m_kurzor_old;
+    char buffer[22]; 
+    int menu_status;
+    int menu_value;
+    int M_value;
+    int mk_value;
+    TSISensor tsi;
+    Timer menu_timer;
+    
+//** Fügvény definiciók **********************
+void mstart(int a){
+    char menu_chr[10][7][15] = { 
+    {"FRMD KL25Z ","   RTC menu   ","   Acc menu   ","   MMG menu   ","   Press menu ","   SET menu   ","   Fo  menu   ",},
+    {"RTC menu   ","   Date Set   ","   Time Set   ","   Alarm Set  ","   RTC RUN    ","              ","   Fo  menu   ",},
+    {"Acc menu   ","   Acc 1      ","   Acc 2      ","   Acc 3      ","   Acc RUN    ","              ","   Fo  menu   ",},
+    {"MMG menu   ","   MMG 1      ","   MMG 2      ","   MMG 3      ","   MMG4       ","              ","   Fo  menu   ",},
+    {"Press menu ","   Press1     ","   Press2     ","   Press3     ","   Press4     ","              ","   Fo  menu   ",},
+    {"SET menu   ","   RTC Set    ","   6.  2      ","   6.  3      ","   6. 4       ","              ","   Fo  menu   ",},
+    {"Date Set m.","   Year Set   ","   Month set  ","   Day set    ","   Week set   ","              ","   Fo  menu   ",}, //RTC
+    {"Time Set m.","   Hour Set   ","   Minute set ","   Second set ","              ","              ","   Fo  menu   ",}, //RTC
+    {"AlarmSet m.","  AHour Set   ","  AMinute set ","  ASecond set ","              ","              ","   Fo  menu   ",}, //RTC
+    {"RTC RUN    ","   Start      ","   STOP       ","              ","              ","              ","   Fo  menu   ",}, //RTC
+                                };
+    
+    //lcd_string(0,5,menu_chr[a][0]);
+    lcd_string(1,0,menu_chr[a][1]);
+    lcd_string(2,0,menu_chr[a][2]);
+    lcd_string(3,0,menu_chr[a][3]);
+    lcd_string(4,0,menu_chr[a][4]);
+    lcd_string(5,0,menu_chr[a][5]);
+    lcd_string(6,0,menu_chr[a][6]);
+
+    lcd_line(0,7,128,7,char(1));
+    lcd_line(0,55,128,55,char(1));
+    m_kurzor = 1;
+    m_kurzor_old = 1;
+
+}
+//-------------------------------------------
+int mkurzor(int delta){
+    m_kurzor = m_kurzor_old + delta;
+    if(m_kurzor<1){m_kurzor=6;}
+    if(m_kurzor>6){m_kurzor=1;}
+    lcd_string(m_kurzor_old,0,"  ");
+    lcd_string(m_kurzor,0,"->");
+    m_kurzor_old = m_kurzor;
+    return m_kurzor;
+}
+//-------------------------------------------
+//-------------------------------------------
+int menu_run(int a){
+    menu_status=0;
+    while(1){
+        switch(menu_status){
+            case 0:
+                mstart(a);
+                mk_value = mkurzor(0);
+                menu_status++; 
+                break;
+            case 1:
+                t_value = TchR1.touch_run();
+                if(t_value>0){
+                    menu_status++;  
+                }
+                break;
+            case 2:
+                menu_status = 1;
+                switch(t_value){
+                    case 1:
+                        mk_value = mkurzor(-1);
+                        break;
+                    case 3:
+                        mk_value = mkurzor(1);
+                        break;
+                    case 2:
+                        sprintf(buffer,"=>%d",mk_value);
+                        lcd_string(6,15,buffer);
+                        return mk_value;                      
+                }
+                break;
+        }
+    }
+//    return 0;
+}
+//------------------------------------------------
+void SendBox(){     //buffer[12] -ben van a szöveg változó
+    
+    
+    lcd_string(1,2,"                ");
+    lcd_string(2,2,"                ");    
+    lcd_string(3,2,"                ");    
+    lcd_string(4,2,"     SendBox    ");    
+    lcd_string(5,2,"                ");    
+    lcd_string(6,2,"                ");    
+    lcd_string(3,4,buffer);    
+
+    lcd_line(18,10,110,10,char(1));
+    lcd_line(110,10,110,50,char(1));
+    lcd_line(110,50,18,50,char(1));
+    lcd_line(18,50,18,10,char(1));
+    wait(2);
+    lcd_line(18,10,110,10,char(0));
+    lcd_line(110,10,110,50,char(0));
+    lcd_line(110,50,18,50,char(0));
+    lcd_line(18,50,18,10,char(0));
+
+}
+//--------------------------------------------------------
+int SetBox(int value, int min, int max){             ////buffer[12] -ben van a szöveg változó
+    TouchRun TchR2;
+    int t_value;
+    
+    lcd_string(1,2,"                ");
+    lcd_string(2,2,"    SetBox      ");    
+    lcd_string(3,2,"                ");    
+    lcd_string(4,2,"                ");    
+    lcd_string(5,2,"                ");    
+    lcd_string(6,2,"                ");    
+    lcd_string(4,4,buffer);    
+    sprintf(buffer,"%d", value);
+    lcd_string(4,9,buffer);
+    lcd_line(18,10,110,10,char(1));
+    lcd_line(110,10,110,50,char(1));
+    lcd_line(110,50,18,50,char(1));
+    lcd_line(18,50,18,10,char(1));
+    while(1){
+        t_value = TchR2.touch_run();    
+        switch(t_value){
+            case 0:
+            break;
+            case 1:     //-- 0-99 között lehet
+                value--;
+                if(value<min){value = max;}
+            break;
+            case 2:     // Ent.
+                return value;
+            case 3:     //++  0-99 között lehet
+                value++;
+                if(value>max){value = min;}
+            break;    
+        }
+        //sprintf(buffer,"  ");
+        //lcd_string(4,9,buffer);
+        sprintf(buffer,"\b\b%d ", value);
+        lcd_string(4,9,buffer);
+ 
+    }
+}
+//----------------------------------------------
+void BoxClear(){
+    lcd_line(18,10,110,10,char(0));
+    lcd_line(110,10,110,50,char(0));
+    lcd_line(110,50,18,50,char(0));
+    lcd_line(18,50,18,10,char(0));
+
+    
+}
+#endif
\ No newline at end of file