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

Committer:
szjenter
Date:
Wed May 14 04:46:52 2014 +0000
Revision:
2:c271f83a69e4
FRMD KL25Z  <=i2c=>  NXP PCF8563  (RTC); FRMD KL25Z    SPI=> MCP23S17 => (GLCD  T6963C); FRMD KL25Z   Tsi => 3 button :           <-->     <enter>    <++>; FRMD KL25Z => Bip()

Who changed what in which revision?

UserRevisionLine numberNew contents of line
szjenter 2:c271f83a69e4 1 #ifndef TOUCHMENU_H
szjenter 2:c271f83a69e4 2 #define TOUCHMENU_H
szjenter 2:c271f83a69e4 3 #include "bip.h"
szjenter 2:c271f83a69e4 4 #include "TSISensor.h"
szjenter 2:c271f83a69e4 5 #include "mbed.h"
szjenter 2:c271f83a69e4 6 #include "GLCD_spi.h"
szjenter 2:c271f83a69e4 7
szjenter 2:c271f83a69e4 8 //*******************************************
szjenter 2:c271f83a69e4 9 /* TouchRun osztály
szjenter 2:c271f83a69e4 10 // Példányosítás: TouchRun TchR;
szjenter 2:c271f83a69e4 11 //
szjenter 2:c271f83a69e4 12 */
szjenter 2:c271f83a69e4 13 class TouchRun{
szjenter 2:c271f83a69e4 14 public:
szjenter 2:c271f83a69e4 15 TouchRun(); // Konstruktor
szjenter 2:c271f83a69e4 16 //~TouchRun(); // Destructor
szjenter 2:c271f83a69e4 17 int touch_run(void);
szjenter 2:c271f83a69e4 18 private:
szjenter 2:c271f83a69e4 19 void kurzor(void);
szjenter 2:c271f83a69e4 20 void kurzor_torles(void);
szjenter 2:c271f83a69e4 21 void kep(void);
szjenter 2:c271f83a69e4 22 void akcio(void);
szjenter 2:c271f83a69e4 23
szjenter 2:c271f83a69e4 24 char buffer[22];
szjenter 2:c271f83a69e4 25 int touch_status;
szjenter 2:c271f83a69e4 26 int touch_value;
szjenter 2:c271f83a69e4 27 int T_value;
szjenter 2:c271f83a69e4 28 int a;
szjenter 2:c271f83a69e4 29 TSISensor tsi;
szjenter 2:c271f83a69e4 30 Timer touch_timer;
szjenter 2:c271f83a69e4 31 };
szjenter 2:c271f83a69e4 32 //*******************************************
szjenter 2:c271f83a69e4 33
szjenter 2:c271f83a69e4 34 //** Fügvény definició **********************
szjenter 2:c271f83a69e4 35
szjenter 2:c271f83a69e4 36
szjenter 2:c271f83a69e4 37 //-------------------------------------------
szjenter 2:c271f83a69e4 38 //-------------------------------------------
szjenter 2:c271f83a69e4 39 void TouchRun::kurzor(){
szjenter 2:c271f83a69e4 40 lcd_string(touch_value+1,1,">>");
szjenter 2:c271f83a69e4 41 }
szjenter 2:c271f83a69e4 42
szjenter 2:c271f83a69e4 43 //-------------------------------------------
szjenter 2:c271f83a69e4 44 void TouchRun::kurzor_torles(){
szjenter 2:c271f83a69e4 45 lcd_string(2,0," ");
szjenter 2:c271f83a69e4 46 lcd_string(3,0," ");
szjenter 2:c271f83a69e4 47 lcd_string(4,0," ");
szjenter 2:c271f83a69e4 48 lcd_string(5,0," ");
szjenter 2:c271f83a69e4 49 lcd_string(6,0," ");
szjenter 2:c271f83a69e4 50
szjenter 2:c271f83a69e4 51 }
szjenter 2:c271f83a69e4 52 //-------------------------------------------
szjenter 2:c271f83a69e4 53 void TouchRun::akcio(){
szjenter 2:c271f83a69e4 54 int touch=0;
szjenter 2:c271f83a69e4 55 touch = int(tsi.readPercentage()*100); // vissza adott érték:
szjenter 2:c271f83a69e4 56 if(touch==0){touch_value=0; return;}
szjenter 2:c271f83a69e4 57 if(touch>0 & touch<33) {touch_value=1; return;} // [<] z_villan();
szjenter 2:c271f83a69e4 58 if(touch>32 & touch<66) {touch_value=2; return;} // [ent] z_villan();
szjenter 2:c271f83a69e4 59 if(touch>65 & touch<101){touch_value=3; return;} // [>] z_villan();
szjenter 2:c271f83a69e4 60 return;
szjenter 2:c271f83a69e4 61
szjenter 2:c271f83a69e4 62 }
szjenter 2:c271f83a69e4 63 //-------------------------------------------
szjenter 2:c271f83a69e4 64 void TouchRun::kep(){
szjenter 2:c271f83a69e4 65 //lcd_cls();
szjenter 2:c271f83a69e4 66 lcd_string(7,0,"<--> <Ent> <++> ");
szjenter 2:c271f83a69e4 67 }
szjenter 2:c271f83a69e4 68 //-------------------------------------------
szjenter 2:c271f83a69e4 69 int TouchRun::touch_run(){ // Touch állapotgép
szjenter 2:c271f83a69e4 70 //DigitalOut K_LED(LED3);
szjenter 2:c271f83a69e4 71
szjenter 2:c271f83a69e4 72 switch(touch_status){
szjenter 2:c271f83a69e4 73 case 0: // állókép kiírása
szjenter 2:c271f83a69e4 74 //K_LED = 1;
szjenter 2:c271f83a69e4 75 kep();
szjenter 2:c271f83a69e4 76 T_value=1;
szjenter 2:c271f83a69e4 77 touch_status++;
szjenter 2:c271f83a69e4 78 return 0;
szjenter 2:c271f83a69e4 79 case 1: // akció???
szjenter 2:c271f83a69e4 80 akcio(); // Melyik gombot nyomta meg? : touch_value = 0 semmi, =1 [<], =2 [ENter], =3 [>]
szjenter 2:c271f83a69e4 81 if(touch_value>0){ // Ha volt akció, tovább lép
szjenter 2:c271f83a69e4 82 Bip(2,1);
szjenter 2:c271f83a69e4 83 touch_status++;
szjenter 2:c271f83a69e4 84 }
szjenter 2:c271f83a69e4 85 sprintf(buffer,">%d<",touch_value);
szjenter 2:c271f83a69e4 86 lcd_string(7,18,buffer);
szjenter 2:c271f83a69e4 87 return(touch_value);
szjenter 2:c271f83a69e4 88 case 2: // akció volt
szjenter 2:c271f83a69e4 89 //kurzor();
szjenter 2:c271f83a69e4 90 //K_LED = 0;
szjenter 2:c271f83a69e4 91
szjenter 2:c271f83a69e4 92 touch_timer.reset(); //késleltet
szjenter 2:c271f83a69e4 93 touch_timer.start();
szjenter 2:c271f83a69e4 94 touch_status++;
szjenter 2:c271f83a69e4 95 return 0;
szjenter 2:c271f83a69e4 96 case 3: // timer túl csordult???
szjenter 2:c271f83a69e4 97 a= touch_timer.read_ms();
szjenter 2:c271f83a69e4 98 if(a > int(300)){
szjenter 2:c271f83a69e4 99 touch_timer.stop();
szjenter 2:c271f83a69e4 100
szjenter 2:c271f83a69e4 101 touch_status++;
szjenter 2:c271f83a69e4 102 }
szjenter 2:c271f83a69e4 103 return 0;
szjenter 2:c271f83a69e4 104 case 4: // kúrzor megjelenítése
szjenter 2:c271f83a69e4 105 //kurzor_torles();
szjenter 2:c271f83a69e4 106 touch_status=1; //touch_status++;
szjenter 2:c271f83a69e4 107 return 0;
szjenter 2:c271f83a69e4 108 }
szjenter 2:c271f83a69e4 109 return 0;
szjenter 2:c271f83a69e4 110 }
szjenter 2:c271f83a69e4 111
szjenter 2:c271f83a69e4 112
szjenter 2:c271f83a69e4 113 //*******************************************
szjenter 2:c271f83a69e4 114 TouchRun::TouchRun(){ //Konstruktor
szjenter 2:c271f83a69e4 115 touch_status = 0;
szjenter 2:c271f83a69e4 116 touch_value = 0;
szjenter 2:c271f83a69e4 117 //DigitalOut P_LED(LED1), Z_LED(LED2), K_LED(LED3);
szjenter 2:c271f83a69e4 118
szjenter 2:c271f83a69e4 119 }
szjenter 2:c271f83a69e4 120 //TouchRun::~TouchRun(){} //Destructor
szjenter 2:c271f83a69e4 121 //*******************************************
szjenter 2:c271f83a69e4 122 //*******************************************
szjenter 2:c271f83a69e4 123
szjenter 2:c271f83a69e4 124
szjenter 2:c271f83a69e4 125
szjenter 2:c271f83a69e4 126
szjenter 2:c271f83a69e4 127
szjenter 2:c271f83a69e4 128 //*******************************************
szjenter 2:c271f83a69e4 129 /*TouchMenu
szjenter 2:c271f83a69e4 130 // Meghívás: b = TchM.menu_run(a); //Fő menü
szjenter 2:c271f83a69e4 131 // (a) Meghívás paramétere: megadja melyik menüsort jelenitse meg a kép függvény
szjenter 2:c271f83a69e4 132 // (b) Visszatérési paraméter: megadja melyik sorról nyomott <Enter>-t (touch_value)
szjenter 2:c271f83a69e4 133 //
szjenter 2:c271f83a69e4 134 */
szjenter 2:c271f83a69e4 135
szjenter 2:c271f83a69e4 136 int menu_run(int);
szjenter 2:c271f83a69e4 137 TouchRun TchR1;
szjenter 2:c271f83a69e4 138
szjenter 2:c271f83a69e4 139 void mstart(int);
szjenter 2:c271f83a69e4 140 int mkurzor(int);
szjenter 2:c271f83a69e4 141 void kurzor_torles(void);
szjenter 2:c271f83a69e4 142 void akcio(void);
szjenter 2:c271f83a69e4 143
szjenter 2:c271f83a69e4 144 int t_value;
szjenter 2:c271f83a69e4 145 int m_kurzor;
szjenter 2:c271f83a69e4 146 int m_kurzor_old;
szjenter 2:c271f83a69e4 147 char buffer[22];
szjenter 2:c271f83a69e4 148 int menu_status;
szjenter 2:c271f83a69e4 149 int menu_value;
szjenter 2:c271f83a69e4 150 int M_value;
szjenter 2:c271f83a69e4 151 int mk_value;
szjenter 2:c271f83a69e4 152 TSISensor tsi;
szjenter 2:c271f83a69e4 153 Timer menu_timer;
szjenter 2:c271f83a69e4 154
szjenter 2:c271f83a69e4 155 //** Fügvény definiciók **********************
szjenter 2:c271f83a69e4 156 void mstart(int a){
szjenter 2:c271f83a69e4 157 char menu_chr[10][7][15] = {
szjenter 2:c271f83a69e4 158 {"FRMD KL25Z "," RTC menu "," Acc menu "," MMG menu "," Press menu "," SET menu "," Fo menu ",},
szjenter 2:c271f83a69e4 159 {"RTC menu "," Date Set "," Time Set "," Alarm Set "," RTC RUN "," "," Fo menu ",},
szjenter 2:c271f83a69e4 160 {"Acc menu "," Acc 1 "," Acc 2 "," Acc 3 "," Acc RUN "," "," Fo menu ",},
szjenter 2:c271f83a69e4 161 {"MMG menu "," MMG 1 "," MMG 2 "," MMG 3 "," MMG4 "," "," Fo menu ",},
szjenter 2:c271f83a69e4 162 {"Press menu "," Press1 "," Press2 "," Press3 "," Press4 "," "," Fo menu ",},
szjenter 2:c271f83a69e4 163 {"SET menu "," RTC Set "," 6. 2 "," 6. 3 "," 6. 4 "," "," Fo menu ",},
szjenter 2:c271f83a69e4 164 {"Date Set m."," Year Set "," Month set "," Day set "," Week set "," "," Fo menu ",}, //RTC
szjenter 2:c271f83a69e4 165 {"Time Set m."," Hour Set "," Minute set "," Second set "," "," "," Fo menu ",}, //RTC
szjenter 2:c271f83a69e4 166 {"AlarmSet m."," AHour Set "," AMinute set "," ASecond set "," "," "," Fo menu ",}, //RTC
szjenter 2:c271f83a69e4 167 {"RTC RUN "," Start "," STOP "," "," "," "," Fo menu ",}, //RTC
szjenter 2:c271f83a69e4 168 };
szjenter 2:c271f83a69e4 169
szjenter 2:c271f83a69e4 170 //lcd_string(0,5,menu_chr[a][0]);
szjenter 2:c271f83a69e4 171 lcd_string(1,0,menu_chr[a][1]);
szjenter 2:c271f83a69e4 172 lcd_string(2,0,menu_chr[a][2]);
szjenter 2:c271f83a69e4 173 lcd_string(3,0,menu_chr[a][3]);
szjenter 2:c271f83a69e4 174 lcd_string(4,0,menu_chr[a][4]);
szjenter 2:c271f83a69e4 175 lcd_string(5,0,menu_chr[a][5]);
szjenter 2:c271f83a69e4 176 lcd_string(6,0,menu_chr[a][6]);
szjenter 2:c271f83a69e4 177
szjenter 2:c271f83a69e4 178 lcd_line(0,7,128,7,char(1));
szjenter 2:c271f83a69e4 179 lcd_line(0,55,128,55,char(1));
szjenter 2:c271f83a69e4 180 m_kurzor = 1;
szjenter 2:c271f83a69e4 181 m_kurzor_old = 1;
szjenter 2:c271f83a69e4 182
szjenter 2:c271f83a69e4 183 }
szjenter 2:c271f83a69e4 184 //-------------------------------------------
szjenter 2:c271f83a69e4 185 int mkurzor(int delta){
szjenter 2:c271f83a69e4 186 m_kurzor = m_kurzor_old + delta;
szjenter 2:c271f83a69e4 187 if(m_kurzor<1){m_kurzor=6;}
szjenter 2:c271f83a69e4 188 if(m_kurzor>6){m_kurzor=1;}
szjenter 2:c271f83a69e4 189 lcd_string(m_kurzor_old,0," ");
szjenter 2:c271f83a69e4 190 lcd_string(m_kurzor,0,"->");
szjenter 2:c271f83a69e4 191 m_kurzor_old = m_kurzor;
szjenter 2:c271f83a69e4 192 return m_kurzor;
szjenter 2:c271f83a69e4 193 }
szjenter 2:c271f83a69e4 194 //-------------------------------------------
szjenter 2:c271f83a69e4 195 //-------------------------------------------
szjenter 2:c271f83a69e4 196 int menu_run(int a){
szjenter 2:c271f83a69e4 197 menu_status=0;
szjenter 2:c271f83a69e4 198 while(1){
szjenter 2:c271f83a69e4 199 switch(menu_status){
szjenter 2:c271f83a69e4 200 case 0:
szjenter 2:c271f83a69e4 201 mstart(a);
szjenter 2:c271f83a69e4 202 mk_value = mkurzor(0);
szjenter 2:c271f83a69e4 203 menu_status++;
szjenter 2:c271f83a69e4 204 break;
szjenter 2:c271f83a69e4 205 case 1:
szjenter 2:c271f83a69e4 206 t_value = TchR1.touch_run();
szjenter 2:c271f83a69e4 207 if(t_value>0){
szjenter 2:c271f83a69e4 208 menu_status++;
szjenter 2:c271f83a69e4 209 }
szjenter 2:c271f83a69e4 210 break;
szjenter 2:c271f83a69e4 211 case 2:
szjenter 2:c271f83a69e4 212 menu_status = 1;
szjenter 2:c271f83a69e4 213 switch(t_value){
szjenter 2:c271f83a69e4 214 case 1:
szjenter 2:c271f83a69e4 215 mk_value = mkurzor(-1);
szjenter 2:c271f83a69e4 216 break;
szjenter 2:c271f83a69e4 217 case 3:
szjenter 2:c271f83a69e4 218 mk_value = mkurzor(1);
szjenter 2:c271f83a69e4 219 break;
szjenter 2:c271f83a69e4 220 case 2:
szjenter 2:c271f83a69e4 221 sprintf(buffer,"=>%d",mk_value);
szjenter 2:c271f83a69e4 222 lcd_string(6,15,buffer);
szjenter 2:c271f83a69e4 223 return mk_value;
szjenter 2:c271f83a69e4 224 }
szjenter 2:c271f83a69e4 225 break;
szjenter 2:c271f83a69e4 226 }
szjenter 2:c271f83a69e4 227 }
szjenter 2:c271f83a69e4 228 // return 0;
szjenter 2:c271f83a69e4 229 }
szjenter 2:c271f83a69e4 230 //------------------------------------------------
szjenter 2:c271f83a69e4 231 void SendBox(){ //buffer[12] -ben van a szöveg változó
szjenter 2:c271f83a69e4 232
szjenter 2:c271f83a69e4 233
szjenter 2:c271f83a69e4 234 lcd_string(1,2," ");
szjenter 2:c271f83a69e4 235 lcd_string(2,2," ");
szjenter 2:c271f83a69e4 236 lcd_string(3,2," ");
szjenter 2:c271f83a69e4 237 lcd_string(4,2," SendBox ");
szjenter 2:c271f83a69e4 238 lcd_string(5,2," ");
szjenter 2:c271f83a69e4 239 lcd_string(6,2," ");
szjenter 2:c271f83a69e4 240 lcd_string(3,4,buffer);
szjenter 2:c271f83a69e4 241
szjenter 2:c271f83a69e4 242 lcd_line(18,10,110,10,char(1));
szjenter 2:c271f83a69e4 243 lcd_line(110,10,110,50,char(1));
szjenter 2:c271f83a69e4 244 lcd_line(110,50,18,50,char(1));
szjenter 2:c271f83a69e4 245 lcd_line(18,50,18,10,char(1));
szjenter 2:c271f83a69e4 246 wait(2);
szjenter 2:c271f83a69e4 247 lcd_line(18,10,110,10,char(0));
szjenter 2:c271f83a69e4 248 lcd_line(110,10,110,50,char(0));
szjenter 2:c271f83a69e4 249 lcd_line(110,50,18,50,char(0));
szjenter 2:c271f83a69e4 250 lcd_line(18,50,18,10,char(0));
szjenter 2:c271f83a69e4 251
szjenter 2:c271f83a69e4 252 }
szjenter 2:c271f83a69e4 253 //--------------------------------------------------------
szjenter 2:c271f83a69e4 254 int SetBox(int value, int min, int max){ ////buffer[12] -ben van a szöveg változó
szjenter 2:c271f83a69e4 255 TouchRun TchR2;
szjenter 2:c271f83a69e4 256 int t_value;
szjenter 2:c271f83a69e4 257
szjenter 2:c271f83a69e4 258 lcd_string(1,2," ");
szjenter 2:c271f83a69e4 259 lcd_string(2,2," SetBox ");
szjenter 2:c271f83a69e4 260 lcd_string(3,2," ");
szjenter 2:c271f83a69e4 261 lcd_string(4,2," ");
szjenter 2:c271f83a69e4 262 lcd_string(5,2," ");
szjenter 2:c271f83a69e4 263 lcd_string(6,2," ");
szjenter 2:c271f83a69e4 264 lcd_string(4,4,buffer);
szjenter 2:c271f83a69e4 265 sprintf(buffer,"%d", value);
szjenter 2:c271f83a69e4 266 lcd_string(4,9,buffer);
szjenter 2:c271f83a69e4 267 lcd_line(18,10,110,10,char(1));
szjenter 2:c271f83a69e4 268 lcd_line(110,10,110,50,char(1));
szjenter 2:c271f83a69e4 269 lcd_line(110,50,18,50,char(1));
szjenter 2:c271f83a69e4 270 lcd_line(18,50,18,10,char(1));
szjenter 2:c271f83a69e4 271 while(1){
szjenter 2:c271f83a69e4 272 t_value = TchR2.touch_run();
szjenter 2:c271f83a69e4 273 switch(t_value){
szjenter 2:c271f83a69e4 274 case 0:
szjenter 2:c271f83a69e4 275 break;
szjenter 2:c271f83a69e4 276 case 1: //-- 0-99 között lehet
szjenter 2:c271f83a69e4 277 value--;
szjenter 2:c271f83a69e4 278 if(value<min){value = max;}
szjenter 2:c271f83a69e4 279 break;
szjenter 2:c271f83a69e4 280 case 2: // Ent.
szjenter 2:c271f83a69e4 281 return value;
szjenter 2:c271f83a69e4 282 case 3: //++ 0-99 között lehet
szjenter 2:c271f83a69e4 283 value++;
szjenter 2:c271f83a69e4 284 if(value>max){value = min;}
szjenter 2:c271f83a69e4 285 break;
szjenter 2:c271f83a69e4 286 }
szjenter 2:c271f83a69e4 287 //sprintf(buffer," ");
szjenter 2:c271f83a69e4 288 //lcd_string(4,9,buffer);
szjenter 2:c271f83a69e4 289 sprintf(buffer,"\b\b%d ", value);
szjenter 2:c271f83a69e4 290 lcd_string(4,9,buffer);
szjenter 2:c271f83a69e4 291
szjenter 2:c271f83a69e4 292 }
szjenter 2:c271f83a69e4 293 }
szjenter 2:c271f83a69e4 294 //----------------------------------------------
szjenter 2:c271f83a69e4 295 void BoxClear(){
szjenter 2:c271f83a69e4 296 lcd_line(18,10,110,10,char(0));
szjenter 2:c271f83a69e4 297 lcd_line(110,10,110,50,char(0));
szjenter 2:c271f83a69e4 298 lcd_line(110,50,18,50,char(0));
szjenter 2:c271f83a69e4 299 lcd_line(18,50,18,10,char(0));
szjenter 2:c271f83a69e4 300
szjenter 2:c271f83a69e4 301
szjenter 2:c271f83a69e4 302 }
szjenter 2:c271f83a69e4 303 #endif