FRMD KL25Z <=i2c=> NXP PCF8563 (RTC) FRMD KL25Z SPI=> MCP23S17 => (GLCD) T6963C FRMD KL25Z Tsi => 3 button : <--> <enter> <++> FRMD KL25Z => Bip()
Fork of RTC8564NB_Clock by
TouchMenu.h
- Committer:
- szjenter
- Date:
- 2014-05-14
- Revision:
- 2:c271f83a69e4
File content as of revision 2:c271f83a69e4:
#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