Dependencies:   EthernetNetIf NTPClient_NetServices mbed

Committer:
suupen
Date:
Sun Dec 11 00:24:18 2011 +0000
Revision:
0:f49394bec833

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 0:f49394bec833 1 /***********************************************************************/
suupen 0:f49394bec833 2 /* */
suupen 0:f49394bec833 3 /* tokei.c */
suupen 0:f49394bec833 4 /* */
suupen 0:f49394bec833 5 /***********************************************************************/
suupen 0:f49394bec833 6 #define _TOKEI_C
suupen 0:f49394bec833 7
suupen 0:f49394bec833 8 #include "mbed.h"
suupen 0:f49394bec833 9 #include "math.h"
suupen 0:f49394bec833 10
suupen 0:f49394bec833 11 #include "tokei.h"
suupen 0:f49394bec833 12 #include "display.h"
suupen 0:f49394bec833 13 #include "dotmatrix.h"
suupen 0:f49394bec833 14 #include "NTPClient.h"
suupen 0:f49394bec833 15 #include "NTP.h"
suupen 0:f49394bec833 16
suupen 0:f49394bec833 17 //#define DBG
suupen 0:f49394bec833 18
suupen 0:f49394bec833 19 /*****************************Macro definition********************************/
suupen 0:f49394bec833 20
suupen 0:f49394bec833 21 /*****************************Global variable*********************************/
suupen 0:f49394bec833 22
suupen 0:f49394bec833 23 /******************************Function declaration***************************/
suupen 0:f49394bec833 24 static void tokei_jikokuKeiji(_JIKOKU *j);
suupen 0:f49394bec833 25 static void tokei_byoHyoji(_JIKOKU j);
suupen 0:f49394bec833 26 static void tokei_funHyoji(_JIKOKU j);
suupen 0:f49394bec833 27 static void tokei_jiHyoji(_JIKOKU j);
suupen 0:f49394bec833 28 static void tokei_amPmHyoji(_JIKOKU j);
suupen 0:f49394bec833 29 static _DISPLAYPOSITION tokei_byoIti(uint8_t sec);
suupen 0:f49394bec833 30 static _DISPLAYPOSITION tokei_jiIti(uint8_t ji, uint8_t min);
suupen 0:f49394bec833 31 static void tokei_mojibanByo(void);
suupen 0:f49394bec833 32 static void tokei_mojibanJi(void);
suupen 0:f49394bec833 33
suupen 0:f49394bec833 34
suupen 0:f49394bec833 35 /******************************************************************************
suupen 0:f49394bec833 36 Name : jikoku keiji
suupen 0:f49394bec833 37 Parameters : none
suupen 0:f49394bec833 38 Returns : nothing
suupen 0:f49394bec833 39 Description: 100ms call
suupen 0:f49394bec833 40 ******************************************************************************/
suupen 0:f49394bec833 41
suupen 0:f49394bec833 42 void tokei_main(void)
suupen 0:f49394bec833 43 {
suupen 0:f49394bec833 44
suupen 0:f49394bec833 45 tokei_jikokuKeiji(&D_genzaiJikoku);
suupen 0:f49394bec833 46
suupen 0:f49394bec833 47 // genzai jikoku hyoji
suupen 0:f49394bec833 48 tokei_funHyoji(D_genzaiJikoku);
suupen 0:f49394bec833 49 tokei_byoHyoji(D_genzaiJikoku); // fun no dot wo henko suru no de tokei_funHyoji()no ato ni jittko
suupen 0:f49394bec833 50 tokei_jiHyoji(D_genzaiJikoku);
suupen 0:f49394bec833 51
suupen 0:f49394bec833 52 // mojiban hyoji
suupen 0:f49394bec833 53 tokei_amPmHyoji(D_genzaiJikoku);
suupen 0:f49394bec833 54 tokei_mojibanByo();
suupen 0:f49394bec833 55 tokei_mojibanJi();
suupen 0:f49394bec833 56
suupen 0:f49394bec833 57 // TLC5940 heno kakikae wo siteinaitoki ni hyoji data kosin
suupen 0:f49394bec833 58 if(F_kakikae == 0){
suupen 0:f49394bec833 59 // hyoji data kakikae OK
suupen 0:f49394bec833 60 for(uint8_t x = 0; x < 16; x++){
suupen 0:f49394bec833 61 for(uint8_t y = 0; y < 16; y++){
suupen 0:f49394bec833 62 B_display[Z_green][x][y] = D_display[Z_green][x][y];
suupen 0:f49394bec833 63 B_display[Z_red][x][y] = D_display[Z_red][x][y];
suupen 0:f49394bec833 64 }
suupen 0:f49394bec833 65 }
suupen 0:f49394bec833 66 }
suupen 0:f49394bec833 67 }
suupen 0:f49394bec833 68
suupen 0:f49394bec833 69 /******************************************************************************
suupen 0:f49394bec833 70 Name : jikoku keiji (debug)
suupen 0:f49394bec833 71 Parameters : none
suupen 0:f49394bec833 72 Returns : nothing
suupen 0:f49394bec833 73 Description: 10ms call
suupen 0:f49394bec833 74 ******************************************************************************/
suupen 0:f49394bec833 75 #ifndef DBG
suupen 0:f49394bec833 76 static void tokei_jikokuKeiji(_JIKOKU *j)
suupen 0:f49394bec833 77 {
suupen 0:f49394bec833 78 static uint8_t secBuffer = 0;
suupen 0:f49394bec833 79 time_t ctTime;
suupen 0:f49394bec833 80 struct tm *jst_time;
suupen 0:f49394bec833 81
suupen 0:f49394bec833 82 _JIKOKU wk = *j;
suupen 0:f49394bec833 83
suupen 0:f49394bec833 84
suupen 0:f49394bec833 85 ctTime = time(NULL);
suupen 0:f49394bec833 86 ctTime += 32400;
suupen 0:f49394bec833 87 jst_time = localtime(&ctTime);
suupen 0:f49394bec833 88
suupen 0:f49394bec833 89
suupen 0:f49394bec833 90 wk.sec = jst_time->tm_sec;
suupen 0:f49394bec833 91 wk.min = jst_time->tm_min;
suupen 0:f49394bec833 92 wk.hour = jst_time->tm_hour;
suupen 0:f49394bec833 93
suupen 0:f49394bec833 94 // dammy ms data setup
suupen 0:f49394bec833 95 if(wk.msec < 99){wk.msec++;}
suupen 0:f49394bec833 96 if(secBuffer != wk.sec){
suupen 0:f49394bec833 97 wk.msec = 0;
suupen 0:f49394bec833 98 secBuffer = wk.sec;
suupen 0:f49394bec833 99 }
suupen 0:f49394bec833 100
suupen 0:f49394bec833 101 *j = wk;
suupen 0:f49394bec833 102
suupen 0:f49394bec833 103 /* NTP wo tukawanai toki no code
suupen 0:f49394bec833 104 _JIKOKU wk = *j;
suupen 0:f49394bec833 105
suupen 0:f49394bec833 106 wk.msec++;
suupen 0:f49394bec833 107 if(wk.msec > 99){
suupen 0:f49394bec833 108 wk.msec = 0;
suupen 0:f49394bec833 109 wk.sec++;
suupen 0:f49394bec833 110 if(wk.sec > 59){
suupen 0:f49394bec833 111 wk.sec = 0;
suupen 0:f49394bec833 112 wk.min++;
suupen 0:f49394bec833 113 if(wk.min > 59){
suupen 0:f49394bec833 114 wk.min = 0;
suupen 0:f49394bec833 115 wk.hour++;
suupen 0:f49394bec833 116 if(wk.hour > 23){
suupen 0:f49394bec833 117 wk.hour = 0;
suupen 0:f49394bec833 118 }
suupen 0:f49394bec833 119 }
suupen 0:f49394bec833 120 }
suupen 0:f49394bec833 121 }
suupen 0:f49394bec833 122 *j = wk;
suupen 0:f49394bec833 123 */
suupen 0:f49394bec833 124 }
suupen 0:f49394bec833 125 #else // DBG
suupen 0:f49394bec833 126 static void tokei_jikokuKeiji(_JIKOKU *j)
suupen 0:f49394bec833 127 {
suupen 0:f49394bec833 128 _JIKOKU wk = *j;
suupen 0:f49394bec833 129
suupen 0:f49394bec833 130 wk.msec++;
suupen 0:f49394bec833 131 if(wk.msec > 99){
suupen 0:f49394bec833 132 wk.msec = 0;
suupen 0:f49394bec833 133 wk.sec++;
suupen 0:f49394bec833 134 if(wk.sec > 59){
suupen 0:f49394bec833 135 wk.sec = 0;
suupen 0:f49394bec833 136 wk.min++;
suupen 0:f49394bec833 137 if(wk.min > 59){
suupen 0:f49394bec833 138 wk.min = 0;
suupen 0:f49394bec833 139 wk.hour++;
suupen 0:f49394bec833 140 if(wk.hour > 23){
suupen 0:f49394bec833 141 wk.hour = 0;
suupen 0:f49394bec833 142 }
suupen 0:f49394bec833 143 }
suupen 0:f49394bec833 144 }
suupen 0:f49394bec833 145 }
suupen 0:f49394bec833 146 *j = wk;
suupen 0:f49394bec833 147 }
suupen 0:f49394bec833 148 #endif // DBG
suupen 0:f49394bec833 149
suupen 0:f49394bec833 150 /******************************************************************************
suupen 0:f49394bec833 151 Name : byo hyoji
suupen 0:f49394bec833 152 Parameters : none
suupen 0:f49394bec833 153 Returns : nothing
suupen 0:f49394bec833 154 Description: 10ms ika no syuki de call
suupen 0:f49394bec833 155 ******************************************************************************/
suupen 0:f49394bec833 156 static void tokei_byoHyoji(_JIKOKU j)
suupen 0:f49394bec833 157 {
suupen 0:f49394bec833 158 uint8_t c = j.sec;
suupen 0:f49394bec833 159 uint8_t i;
suupen 0:f49394bec833 160 int8_t red;
suupen 0:f49394bec833 161
suupen 0:f49394bec833 162 _DISPLAYPOSITION iti;
suupen 0:f49394bec833 163 _DISPLAYCOLOR color;
suupen 0:f49394bec833 164
suupen 0:f49394bec833 165 // kako no tento kasyo wo 1s goto ni 1dankai zutu syoto
suupen 0:f49394bec833 166 for(i = 0; i < 60; i++){
suupen 0:f49394bec833 167
suupen 0:f49394bec833 168 iti = tokei_byoIti(i);
suupen 0:f49394bec833 169 if((j.msec % 10) == 0){
suupen 0:f49394bec833 170 if(D_display[Z_green][iti.x][iti.y] > 0){
suupen 0:f49394bec833 171 D_display[Z_green][iti.x][iti.y] -=1;
suupen 0:f49394bec833 172 }
suupen 0:f49394bec833 173 }
suupen 0:f49394bec833 174
suupen 0:f49394bec833 175 uint8_t j1 = j.min + 1;
suupen 0:f49394bec833 176 if(j1 > 60){j1 = 0;}
suupen 0:f49394bec833 177 if((D_display[Z_green][iti.x][iti.y] > 0) && ((j.min != i) && ((j1 != i )))){
suupen 0:f49394bec833 178 // red to green ga kasanaru tokoto ha red wo genko suru
suupen 0:f49394bec833 179 // (genzai ji to 59s kara 0s deno senko hyoji no red ha genko kara jogai)
suupen 0:f49394bec833 180 red = D_display[Z_red][iti.x][iti.y] - D_display[Z_green][iti.x][iti.y];
suupen 0:f49394bec833 181 if(red < 0){
suupen 0:f49394bec833 182 red = 0;
suupen 0:f49394bec833 183 }
suupen 0:f49394bec833 184 D_display[Z_red][iti.x][iti.y] = (uint8_t)red;
suupen 0:f49394bec833 185 }
suupen 0:f49394bec833 186 }
suupen 0:f49394bec833 187
suupen 0:f49394bec833 188 // genzai no byo iti wo 100ms goto ni 1dankai zutu tento
suupen 0:f49394bec833 189 iti = tokei_byoIti(c);
suupen 0:f49394bec833 190
suupen 0:f49394bec833 191 color.r = Z_colorNull;
suupen 0:f49394bec833 192 color.g = ((uint16_t)j.msec * Z_colorMax) / 99;
suupen 0:f49394bec833 193 display_pset(color, iti);
suupen 0:f49394bec833 194
suupen 0:f49394bec833 195 }
suupen 0:f49394bec833 196
suupen 0:f49394bec833 197 /******************************************************************************
suupen 0:f49394bec833 198 Name : fun hyoji(byo to onaji iti ni hyoji)
suupen 0:f49394bec833 199 Parameters : none
suupen 0:f49394bec833 200 Returns : nothing
suupen 0:f49394bec833 201 Description: 10msec ika no syuki de call
suupen 0:f49394bec833 202 ******************************************************************************/
suupen 0:f49394bec833 203 static void tokei_funHyoji(_JIKOKU j)
suupen 0:f49394bec833 204 {
suupen 0:f49394bec833 205 static uint8_t clearflag = 0; // 59min to 0min clear flag
suupen 0:f49394bec833 206 uint8_t c = j.min;
suupen 0:f49394bec833 207
suupen 0:f49394bec833 208 // static _JIKOKU zenkaiJikoku = {0, 0, 1, 0};
suupen 0:f49394bec833 209
suupen 0:f49394bec833 210 _DISPLAYPOSITION iti;
suupen 0:f49394bec833 211 _DISPLAYCOLOR color;
suupen 0:f49394bec833 212
suupen 0:f49394bec833 213 // 0min no toki no clear yo
suupen 0:f49394bec833 214 _DISPLAYPOSITION p0;
suupen 0:f49394bec833 215 _DISPLAYPOSITION p1;
suupen 0:f49394bec833 216
suupen 0:f49394bec833 217
suupen 0:f49394bec833 218 // 1jikan keika go no fun dot clear
suupen 0:f49394bec833 219 switch(clearflag){
suupen 0:f49394bec833 220 case 0:
suupen 0:f49394bec833 221 if(c == 59){clearflag = 1;}
suupen 0:f49394bec833 222 break;
suupen 0:f49394bec833 223 case 1:
suupen 0:f49394bec833 224 if(c == 0){
suupen 0:f49394bec833 225 color.g = Z_colorNull;
suupen 0:f49394bec833 226 if(j.sec == 0){
suupen 0:f49394bec833 227 color.r = Z_colorMax - ((uint16_t)j.msec * Z_colorMax) / 99;
suupen 0:f49394bec833 228 }
suupen 0:f49394bec833 229 else{
suupen 0:f49394bec833 230 color.r = 0;
suupen 0:f49394bec833 231 clearflag = 0;
suupen 0:f49394bec833 232 }
suupen 0:f49394bec833 233 p0.x = 0;
suupen 0:f49394bec833 234 p0.y = 0;
suupen 0:f49394bec833 235 p1.x = 15;
suupen 0:f49394bec833 236 p1.y = 0;
suupen 0:f49394bec833 237 display_line(color, p0, p1);
suupen 0:f49394bec833 238 p0.x = 15;
suupen 0:f49394bec833 239 p0.y = 0;
suupen 0:f49394bec833 240 p1.x = 15;
suupen 0:f49394bec833 241 p1.y = 15;
suupen 0:f49394bec833 242 display_line(color, p0, p1);
suupen 0:f49394bec833 243 p0.x = 15;
suupen 0:f49394bec833 244 p0.y = 15;
suupen 0:f49394bec833 245 p1.x = 0;
suupen 0:f49394bec833 246 p1.y = 15;
suupen 0:f49394bec833 247 display_line(color, p0, p1);
suupen 0:f49394bec833 248 p0.x = 0;
suupen 0:f49394bec833 249 p0.y = 15;
suupen 0:f49394bec833 250 p1.x = 0;
suupen 0:f49394bec833 251 p1.y = 0;
suupen 0:f49394bec833 252 display_line(color, p0, p1);
suupen 0:f49394bec833 253 }
suupen 0:f49394bec833 254 default:
suupen 0:f49394bec833 255 // nothing
suupen 0:f49394bec833 256 break;
suupen 0:f49394bec833 257 }
suupen 0:f49394bec833 258
suupen 0:f49394bec833 259 // fun dot no reflesh
suupen 0:f49394bec833 260 for(uint8_t i = 0; i < c; i++){
suupen 0:f49394bec833 261 iti = tokei_byoIti(i);
suupen 0:f49394bec833 262 color.r = Z_colorMax;
suupen 0:f49394bec833 263 color.g = Z_colorNull;
suupen 0:f49394bec833 264 display_pset(color, iti);
suupen 0:f49394bec833 265 }
suupen 0:f49394bec833 266
suupen 0:f49394bec833 267 // genzai no byo iti wo 1s goto ni 1dankai zutu tento
suupen 0:f49394bec833 268 iti = tokei_byoIti(c);
suupen 0:f49394bec833 269
suupen 0:f49394bec833 270 if((j.sec & 0x01) == 0){
suupen 0:f49394bec833 271 // genzai fun no tenmetu hyoji
suupen 0:f49394bec833 272 color.r = Z_colorMax - ((uint16_t)j.msec * Z_colorMax) / 99;
suupen 0:f49394bec833 273 }
suupen 0:f49394bec833 274 else{
suupen 0:f49394bec833 275 color.r = ((uint16_t)j.msec * Z_colorMax) / 99;
suupen 0:f49394bec833 276 }
suupen 0:f49394bec833 277
suupen 0:f49394bec833 278 color.g = Z_colorNull;
suupen 0:f49394bec833 279 display_pset(color, iti);
suupen 0:f49394bec833 280
suupen 0:f49394bec833 281 // 59s to 0s deno tugi no fun dot senko hyoji
suupen 0:f49394bec833 282 if(j.sec == 59){
suupen 0:f49394bec833 283 uint8_t ctugi = c + 1;
suupen 0:f49394bec833 284 if(ctugi > 59){
suupen 0:f49394bec833 285 ctugi = 0;
suupen 0:f49394bec833 286 }
suupen 0:f49394bec833 287 iti = tokei_byoIti(ctugi);
suupen 0:f49394bec833 288 color.r = ((uint16_t)j.msec * Z_colorMax) / 99;
suupen 0:f49394bec833 289
suupen 0:f49394bec833 290 color.g = Z_colorNull;
suupen 0:f49394bec833 291 display_pset(color, iti);
suupen 0:f49394bec833 292 }
suupen 0:f49394bec833 293 }
suupen 0:f49394bec833 294
suupen 0:f49394bec833 295 /******************************************************************************
suupen 0:f49394bec833 296 Name : ji hyoji(chusin yori 5syume de hyoji) 3dot 1jikan
suupen 0:f49394bec833 297 Parameters : none
suupen 0:f49394bec833 298 Returns : nothing
suupen 0:f49394bec833 299 Description: 1jikan ika no syuki de call
suupen 0:f49394bec833 300 ******************************************************************************/
suupen 0:f49394bec833 301 static void tokei_jiHyoji(_JIKOKU j)
suupen 0:f49394bec833 302 {
suupen 0:f49394bec833 303 static uint8_t clearflag = 0;
suupen 0:f49394bec833 304
suupen 0:f49394bec833 305 uint8_t ji;
suupen 0:f49394bec833 306 uint8_t jiIti;
suupen 0:f49394bec833 307 _DISPLAYPOSITION iti;
suupen 0:f49394bec833 308 _DISPLAYCOLOR color;
suupen 0:f49394bec833 309
suupen 0:f49394bec833 310 // 0ji no clear yo
suupen 0:f49394bec833 311 _DISPLAYCOLOR c = {0, 0};
suupen 0:f49394bec833 312 _DISPLAYPOSITION p0;
suupen 0:f49394bec833 313 _DISPLAYPOSITION p1;
suupen 0:f49394bec833 314
suupen 0:f49394bec833 315 // 24hour to 12hour
suupen 0:f49394bec833 316 ji = j.hour;
suupen 0:f49394bec833 317 if(ji > 11){ji -= 12;}
suupen 0:f49394bec833 318
suupen 0:f49394bec833 319
suupen 0:f49394bec833 320 // ji dot clear syori (59min to 0min clear)
suupen 0:f49394bec833 321 switch(clearflag){
suupen 0:f49394bec833 322 case 0:
suupen 0:f49394bec833 323 if(ji == 11){clearflag = 1;}
suupen 0:f49394bec833 324 break;
suupen 0:f49394bec833 325 case 1:
suupen 0:f49394bec833 326 if(ji == 0){
suupen 0:f49394bec833 327 if(j.sec == 0){
suupen 0:f49394bec833 328 color.r = Z_colorMax - ((uint16_t)j.msec * Z_colorMax) / 99;
suupen 0:f49394bec833 329 color.g = color.r;
suupen 0:f49394bec833 330 }
suupen 0:f49394bec833 331 else{
suupen 0:f49394bec833 332 color.r = 0;
suupen 0:f49394bec833 333 color.g = 0;
suupen 0:f49394bec833 334 clearflag = 0;
suupen 0:f49394bec833 335 }
suupen 0:f49394bec833 336
suupen 0:f49394bec833 337 p0.x = 3;
suupen 0:f49394bec833 338 p0.y = 3;
suupen 0:f49394bec833 339 p1.x = 12;
suupen 0:f49394bec833 340 p1.y = 3;
suupen 0:f49394bec833 341 display_line(color, p0, p1);
suupen 0:f49394bec833 342 p0.x = 12;
suupen 0:f49394bec833 343 p0.y = 3;
suupen 0:f49394bec833 344 p1.x = 12;
suupen 0:f49394bec833 345 p1.y = 12;
suupen 0:f49394bec833 346 display_line(color, p0, p1);
suupen 0:f49394bec833 347 p0.x = 12;
suupen 0:f49394bec833 348 p0.y = 12;
suupen 0:f49394bec833 349 p1.x = 3;
suupen 0:f49394bec833 350 p1.y = 12;
suupen 0:f49394bec833 351 display_line(color, p0, p1);
suupen 0:f49394bec833 352 p0.x = 3;
suupen 0:f49394bec833 353 p0.y = 12;
suupen 0:f49394bec833 354 p1.x = 3;
suupen 0:f49394bec833 355 p1.y = 3;
suupen 0:f49394bec833 356 display_line(color, p0, p1);
suupen 0:f49394bec833 357 }
suupen 0:f49394bec833 358 default:
suupen 0:f49394bec833 359 // nothing
suupen 0:f49394bec833 360 break;
suupen 0:f49394bec833 361 }
suupen 0:f49394bec833 362
suupen 0:f49394bec833 363 // kako no ji dot wo tento
suupen 0:f49394bec833 364 color.r = Z_colorMax;
suupen 0:f49394bec833 365 color.g = color.r;
suupen 0:f49394bec833 366 for(uint8_t jiKako = 0; jiKako < ji; jiKako++){
suupen 0:f49394bec833 367 for(uint8_t minKako = 0; minKako < 60; minKako += 20){
suupen 0:f49394bec833 368 iti = tokei_jiIti(jiKako, minKako);
suupen 0:f49394bec833 369 display_pset(color, iti);
suupen 0:f49394bec833 370 }
suupen 0:f49394bec833 371 }
suupen 0:f49394bec833 372 for(uint8_t minKako = 0; minKako < j.min; minKako += 20){
suupen 0:f49394bec833 373 iti = tokei_jiIti(ji, minKako);
suupen 0:f49394bec833 374 display_pset(color, iti);
suupen 0:f49394bec833 375 }
suupen 0:f49394bec833 376
suupen 0:f49394bec833 377 //*************************
suupen 0:f49394bec833 378 // genzai ji no dot tenmetu
suupen 0:f49394bec833 379 //*************************
suupen 0:f49394bec833 380 iti = tokei_jiIti(ji, j.min);
suupen 0:f49394bec833 381 if((j.sec & 0x01) == 0){
suupen 0:f49394bec833 382 // genzai ji no tenmetu hyoji
suupen 0:f49394bec833 383 color.r = Z_colorMax - ((uint16_t)j.msec * Z_colorMax) / 99;
suupen 0:f49394bec833 384 color.g = color.r;
suupen 0:f49394bec833 385 }
suupen 0:f49394bec833 386 else{
suupen 0:f49394bec833 387 color.r = ((uint16_t)j.msec * Z_colorMax) / 99;
suupen 0:f49394bec833 388 color.g = color.r;
suupen 0:f49394bec833 389 }
suupen 0:f49394bec833 390
suupen 0:f49394bec833 391 display_pset(color, iti);
suupen 0:f49394bec833 392
suupen 0:f49394bec833 393 //**********************************
suupen 0:f49394bec833 394 // 20fun goto no ji dot senko hyoji
suupen 0:f49394bec833 395 //**********************************
suupen 0:f49394bec833 396 if(j.sec == 59){
suupen 0:f49394bec833 397 if((j.min == 19) || (j.min == 39) || (j.min == 59)){
suupen 0:f49394bec833 398 uint8_t tugiFun = j.min + 1;
suupen 0:f49394bec833 399 uint8_t tugiJi = ji;
suupen 0:f49394bec833 400 if(tugiFun > 59){
suupen 0:f49394bec833 401 tugiFun = 0;
suupen 0:f49394bec833 402 tugiJi++;
suupen 0:f49394bec833 403 if(tugiJi > 11){tugiJi = 0;};
suupen 0:f49394bec833 404 }
suupen 0:f49394bec833 405
suupen 0:f49394bec833 406 iti = tokei_jiIti(tugiJi, tugiFun);
suupen 0:f49394bec833 407 color.r = ((uint16_t)j.msec * Z_colorMax) / 99;
suupen 0:f49394bec833 408 color.g = color.r;
suupen 0:f49394bec833 409
suupen 0:f49394bec833 410 display_pset(color, iti);
suupen 0:f49394bec833 411 }
suupen 0:f49394bec833 412 }
suupen 0:f49394bec833 413 }
suupen 0:f49394bec833 414
suupen 0:f49394bec833 415
suupen 0:f49394bec833 416 /******************************************************************************
suupen 0:f49394bec833 417 Name : AM/PM hyoji
suupen 0:f49394bec833 418 Parameters : none
suupen 0:f49394bec833 419 Returns : nothing
suupen 0:f49394bec833 420 Description: 1jikan ika no syuki de call
suupen 0:f49394bec833 421 ******************************************************************************/
suupen 0:f49394bec833 422 static void tokei_amPmHyoji(_JIKOKU j)
suupen 0:f49394bec833 423 {
suupen 0:f49394bec833 424 uint8_t ji = j.hour;
suupen 0:f49394bec833 425 uint8_t ji12;
suupen 0:f49394bec833 426 _DISPLAYPOSITION iti;
suupen 0:f49394bec833 427 _DISPLAYCOLOR color;
suupen 0:f49394bec833 428
suupen 0:f49394bec833 429 if(ji < 12){ji12 = ji;}
suupen 0:f49394bec833 430 else{ji12 = ji - 12;}
suupen 0:f49394bec833 431
suupen 0:f49394bec833 432 // AM/PM no hyoji
suupen 0:f49394bec833 433 if(ji < 12){
suupen 0:f49394bec833 434 color.g = ji12 * 5 + 39;
suupen 0:f49394bec833 435 color.r = Z_colorMin;
suupen 0:f49394bec833 436 }
suupen 0:f49394bec833 437 else{
suupen 0:f49394bec833 438 color.g = Z_colorMin;
suupen 0:f49394bec833 439 color.r = ji12 * 5 + 39;
suupen 0:f49394bec833 440 }
suupen 0:f49394bec833 441
suupen 0:f49394bec833 442 iti.x = 7;
suupen 0:f49394bec833 443 iti.y = 7;
suupen 0:f49394bec833 444 display_pset(color, iti);
suupen 0:f49394bec833 445 iti.x = 8;
suupen 0:f49394bec833 446 iti.y = 7;
suupen 0:f49394bec833 447 display_pset(color, iti);
suupen 0:f49394bec833 448 iti.x = 7;
suupen 0:f49394bec833 449 iti.y = 8;
suupen 0:f49394bec833 450 display_pset(color, iti);
suupen 0:f49394bec833 451 iti.x = 8;
suupen 0:f49394bec833 452 iti.y = 8;
suupen 0:f49394bec833 453 display_pset(color, iti);
suupen 0:f49394bec833 454
suupen 0:f49394bec833 455
suupen 0:f49394bec833 456 }
suupen 0:f49394bec833 457
suupen 0:f49394bec833 458 /******************************************************************************
suupen 0:f49394bec833 459 Name : moji ban (byo bubun)
suupen 0:f49394bec833 460 Parameters : none
suupen 0:f49394bec833 461 Returns : nothing
suupen 0:f49394bec833 462 Description:
suupen 0:f49394bec833 463 ******************************************************************************/
suupen 0:f49394bec833 464 static void tokei_mojibanByo(void)
suupen 0:f49394bec833 465 {
suupen 0:f49394bec833 466 _DISPLAYPOSITION iti,iti2;
suupen 0:f49394bec833 467 _DISPLAYCOLOR color;
suupen 0:f49394bec833 468
suupen 0:f49394bec833 469 // base line
suupen 0:f49394bec833 470 color.r = Z_colorMin;
suupen 0:f49394bec833 471 color.g = 50;
suupen 0:f49394bec833 472
suupen 0:f49394bec833 473 iti.x = 1;
suupen 0:f49394bec833 474 iti.y = 1;
suupen 0:f49394bec833 475 iti2.x = 14;
suupen 0:f49394bec833 476 iti2.y = 1;
suupen 0:f49394bec833 477 display_line(color, iti, iti2);
suupen 0:f49394bec833 478
suupen 0:f49394bec833 479 iti.x = 14;
suupen 0:f49394bec833 480 iti.y = 1;
suupen 0:f49394bec833 481 iti2.x = 14;
suupen 0:f49394bec833 482 iti2.y = 14;
suupen 0:f49394bec833 483 display_line(color, iti, iti2);
suupen 0:f49394bec833 484
suupen 0:f49394bec833 485 iti.x = 14;
suupen 0:f49394bec833 486 iti.y = 14;
suupen 0:f49394bec833 487 iti2.x = 1;
suupen 0:f49394bec833 488 iti2.y = 14;
suupen 0:f49394bec833 489 display_line(color, iti, iti2);
suupen 0:f49394bec833 490
suupen 0:f49394bec833 491 iti.x = 1;
suupen 0:f49394bec833 492 iti.y = 14;
suupen 0:f49394bec833 493 iti2.x = 1;
suupen 0:f49394bec833 494 iti2.y = 1;
suupen 0:f49394bec833 495 display_line(color, iti, iti2);
suupen 0:f49394bec833 496
suupen 0:f49394bec833 497
suupen 0:f49394bec833 498 // 0fun
suupen 0:f49394bec833 499 iti.x = 1;
suupen 0:f49394bec833 500 iti.y = 1;
suupen 0:f49394bec833 501 color.r = Z_colorMax;
suupen 0:f49394bec833 502 color.g = Z_colorMin;
suupen 0:f49394bec833 503 display_pset(color, iti);
suupen 0:f49394bec833 504
suupen 0:f49394bec833 505 // 5fun
suupen 0:f49394bec833 506 iti.x = 5;
suupen 0:f49394bec833 507 iti.y = 1;
suupen 0:f49394bec833 508 color.r = Z_colorMax;
suupen 0:f49394bec833 509 color.g = Z_colorMax;
suupen 0:f49394bec833 510 display_pset(color, iti);
suupen 0:f49394bec833 511
suupen 0:f49394bec833 512 // 10fun
suupen 0:f49394bec833 513 iti.x = 10;
suupen 0:f49394bec833 514 iti.y = 1;
suupen 0:f49394bec833 515 color.r = Z_colorMax;
suupen 0:f49394bec833 516 color.g = Z_colorMax;
suupen 0:f49394bec833 517 display_pset(color, iti);
suupen 0:f49394bec833 518
suupen 0:f49394bec833 519 // 15fun
suupen 0:f49394bec833 520 iti.x = 14;
suupen 0:f49394bec833 521 iti.y = 1;
suupen 0:f49394bec833 522 color.r = Z_colorMax;
suupen 0:f49394bec833 523 color.g = Z_colorMin;
suupen 0:f49394bec833 524 display_pset(color, iti);
suupen 0:f49394bec833 525
suupen 0:f49394bec833 526 // 20fun
suupen 0:f49394bec833 527 iti.x = 14;
suupen 0:f49394bec833 528 iti.y = 5;
suupen 0:f49394bec833 529 color.r = Z_colorMax;
suupen 0:f49394bec833 530 color.g = Z_colorMax;
suupen 0:f49394bec833 531 display_pset(color, iti);
suupen 0:f49394bec833 532
suupen 0:f49394bec833 533 // 25fun
suupen 0:f49394bec833 534 iti.x = 14;
suupen 0:f49394bec833 535 iti.y = 10;
suupen 0:f49394bec833 536 color.r = Z_colorMax;
suupen 0:f49394bec833 537 color.g = Z_colorMax;
suupen 0:f49394bec833 538 display_pset(color, iti);
suupen 0:f49394bec833 539
suupen 0:f49394bec833 540 // 30fun
suupen 0:f49394bec833 541 iti.x = 14;
suupen 0:f49394bec833 542 iti.y = 14;
suupen 0:f49394bec833 543 color.r = Z_colorMax;
suupen 0:f49394bec833 544 color.g = Z_colorMin;
suupen 0:f49394bec833 545 display_pset(color, iti);
suupen 0:f49394bec833 546
suupen 0:f49394bec833 547 // 35fun
suupen 0:f49394bec833 548 iti.x = 10;
suupen 0:f49394bec833 549 iti.y = 14;
suupen 0:f49394bec833 550 color.r = Z_colorMax;
suupen 0:f49394bec833 551 color.g = Z_colorMax;
suupen 0:f49394bec833 552 display_pset(color, iti);
suupen 0:f49394bec833 553
suupen 0:f49394bec833 554 // 40fun
suupen 0:f49394bec833 555 iti.x = 5;
suupen 0:f49394bec833 556 iti.y = 14;
suupen 0:f49394bec833 557 color.r = Z_colorMax;
suupen 0:f49394bec833 558 color.g = Z_colorMax;
suupen 0:f49394bec833 559 display_pset(color, iti);
suupen 0:f49394bec833 560
suupen 0:f49394bec833 561 // 45fun
suupen 0:f49394bec833 562 iti.x = 1;
suupen 0:f49394bec833 563 iti.y = 14;
suupen 0:f49394bec833 564 color.r = Z_colorMax;
suupen 0:f49394bec833 565 color.g = Z_colorMin;
suupen 0:f49394bec833 566 display_pset(color, iti);
suupen 0:f49394bec833 567
suupen 0:f49394bec833 568 // 50fun
suupen 0:f49394bec833 569 iti.x = 1;
suupen 0:f49394bec833 570 iti.y = 10;
suupen 0:f49394bec833 571 color.r = Z_colorMax;
suupen 0:f49394bec833 572 color.g = Z_colorMax;
suupen 0:f49394bec833 573 display_pset(color, iti);
suupen 0:f49394bec833 574
suupen 0:f49394bec833 575 // 55fun
suupen 0:f49394bec833 576 iti.x = 1;
suupen 0:f49394bec833 577 iti.y = 5;
suupen 0:f49394bec833 578 color.r = Z_colorMax;
suupen 0:f49394bec833 579 color.g = Z_colorMax;
suupen 0:f49394bec833 580 display_pset(color, iti);
suupen 0:f49394bec833 581 }
suupen 0:f49394bec833 582
suupen 0:f49394bec833 583 /******************************************************************************
suupen 0:f49394bec833 584 Name : moji ban (ji bubun)
suupen 0:f49394bec833 585 Parameters : none
suupen 0:f49394bec833 586 Returns : nothing
suupen 0:f49394bec833 587 Description:
suupen 0:f49394bec833 588 ******************************************************************************/
suupen 0:f49394bec833 589 static void tokei_mojibanJi(void)
suupen 0:f49394bec833 590 {
suupen 0:f49394bec833 591 _DISPLAYPOSITION iti,iti2;
suupen 0:f49394bec833 592 _DISPLAYCOLOR color;
suupen 0:f49394bec833 593
suupen 0:f49394bec833 594 // base line
suupen 0:f49394bec833 595 color.r = Z_colorMin;
suupen 0:f49394bec833 596 color.g = 50;
suupen 0:f49394bec833 597
suupen 0:f49394bec833 598 iti.x = 4;
suupen 0:f49394bec833 599 iti.y = 4;
suupen 0:f49394bec833 600 iti2.x = 11;
suupen 0:f49394bec833 601 iti2.y = 4;
suupen 0:f49394bec833 602 display_line(color, iti, iti2);
suupen 0:f49394bec833 603
suupen 0:f49394bec833 604 iti.x = 11;
suupen 0:f49394bec833 605 iti.y = 4;
suupen 0:f49394bec833 606 iti2.x = 11;
suupen 0:f49394bec833 607 iti2.y = 11;
suupen 0:f49394bec833 608 display_line(color, iti, iti2);
suupen 0:f49394bec833 609
suupen 0:f49394bec833 610 iti.x = 11;
suupen 0:f49394bec833 611 iti.y = 11;
suupen 0:f49394bec833 612 iti2.x = 4;
suupen 0:f49394bec833 613 iti2.y = 11;
suupen 0:f49394bec833 614 display_line(color, iti, iti2);
suupen 0:f49394bec833 615
suupen 0:f49394bec833 616 iti.x = 4;
suupen 0:f49394bec833 617 iti.y = 11;
suupen 0:f49394bec833 618 iti2.x = 4;
suupen 0:f49394bec833 619 iti2.y = 4;
suupen 0:f49394bec833 620 display_line(color, iti, iti2);
suupen 0:f49394bec833 621
suupen 0:f49394bec833 622 // 0ji
suupen 0:f49394bec833 623 iti.x = 4;
suupen 0:f49394bec833 624 iti.y = 4;
suupen 0:f49394bec833 625 color.r = Z_colorMax;
suupen 0:f49394bec833 626 color.g = Z_colorMin;
suupen 0:f49394bec833 627 display_pset(color, iti);
suupen 0:f49394bec833 628
suupen 0:f49394bec833 629 // 1ji
suupen 0:f49394bec833 630 iti.x = 6;
suupen 0:f49394bec833 631 iti.y = 4;
suupen 0:f49394bec833 632 color.r = Z_colorMax;
suupen 0:f49394bec833 633 color.g = Z_colorMax;
suupen 0:f49394bec833 634 display_pset(color, iti);
suupen 0:f49394bec833 635
suupen 0:f49394bec833 636 // 2ji
suupen 0:f49394bec833 637 iti.x = 9;
suupen 0:f49394bec833 638 iti.y = 4;
suupen 0:f49394bec833 639 color.r = Z_colorMax;
suupen 0:f49394bec833 640 color.g = Z_colorMax;
suupen 0:f49394bec833 641 display_pset(color, iti);
suupen 0:f49394bec833 642
suupen 0:f49394bec833 643 // 3ji
suupen 0:f49394bec833 644 iti.x = 11;
suupen 0:f49394bec833 645 iti.y = 4;
suupen 0:f49394bec833 646 color.r = Z_colorMax;
suupen 0:f49394bec833 647 color.g = Z_colorMin;
suupen 0:f49394bec833 648 display_pset(color, iti);
suupen 0:f49394bec833 649
suupen 0:f49394bec833 650 // 4ji
suupen 0:f49394bec833 651 iti.x = 11;
suupen 0:f49394bec833 652 iti.y = 6;
suupen 0:f49394bec833 653 color.r = Z_colorMax;
suupen 0:f49394bec833 654 color.g = Z_colorMax;
suupen 0:f49394bec833 655 display_pset(color, iti);
suupen 0:f49394bec833 656
suupen 0:f49394bec833 657 // 5ji
suupen 0:f49394bec833 658 iti.x = 11;
suupen 0:f49394bec833 659 iti.y = 9;
suupen 0:f49394bec833 660 color.r = Z_colorMax;
suupen 0:f49394bec833 661 color.g = Z_colorMax;
suupen 0:f49394bec833 662 display_pset(color, iti);
suupen 0:f49394bec833 663
suupen 0:f49394bec833 664 // 6ji
suupen 0:f49394bec833 665 iti.x = 11;
suupen 0:f49394bec833 666 iti.y = 11;
suupen 0:f49394bec833 667 color.r = Z_colorMax;
suupen 0:f49394bec833 668 color.g = Z_colorMin;
suupen 0:f49394bec833 669 display_pset(color, iti);
suupen 0:f49394bec833 670
suupen 0:f49394bec833 671 // 7ji
suupen 0:f49394bec833 672 iti.x = 9;
suupen 0:f49394bec833 673 iti.y = 11;
suupen 0:f49394bec833 674 color.r = Z_colorMax;
suupen 0:f49394bec833 675 color.g = Z_colorMax;
suupen 0:f49394bec833 676 display_pset(color, iti);
suupen 0:f49394bec833 677
suupen 0:f49394bec833 678 // 8ji
suupen 0:f49394bec833 679 iti.x = 6;
suupen 0:f49394bec833 680 iti.y = 11;
suupen 0:f49394bec833 681 color.r = Z_colorMax;
suupen 0:f49394bec833 682 color.g = Z_colorMax;
suupen 0:f49394bec833 683 display_pset(color, iti);
suupen 0:f49394bec833 684
suupen 0:f49394bec833 685 // 9ji
suupen 0:f49394bec833 686 iti.x = 4;
suupen 0:f49394bec833 687 iti.y = 11;
suupen 0:f49394bec833 688 color.r = Z_colorMax;
suupen 0:f49394bec833 689 color.g = Z_colorMin;
suupen 0:f49394bec833 690 display_pset(color, iti);
suupen 0:f49394bec833 691
suupen 0:f49394bec833 692 // 10ji
suupen 0:f49394bec833 693 iti.x = 4;
suupen 0:f49394bec833 694 iti.y = 9;
suupen 0:f49394bec833 695 color.r = Z_colorMax;
suupen 0:f49394bec833 696 color.g = Z_colorMax;
suupen 0:f49394bec833 697 display_pset(color, iti);
suupen 0:f49394bec833 698
suupen 0:f49394bec833 699 // 12ji
suupen 0:f49394bec833 700 iti.x = 4;
suupen 0:f49394bec833 701 iti.y = 6;
suupen 0:f49394bec833 702 color.r = Z_colorMax;
suupen 0:f49394bec833 703 color.g = Z_colorMax;
suupen 0:f49394bec833 704 display_pset(color, iti);
suupen 0:f49394bec833 705
suupen 0:f49394bec833 706 }
suupen 0:f49394bec833 707
suupen 0:f49394bec833 708 /******************************************************************************
suupen 0:f49394bec833 709 Name : byo iti zahyo no sansyutu
suupen 0:f49394bec833 710 Parameters : none
suupen 0:f49394bec833 711 Returns : nothing
suupen 0:f49394bec833 712 Description:
suupen 0:f49394bec833 713 ******************************************************************************/
suupen 0:f49394bec833 714 static _DISPLAYPOSITION tokei_byoIti(uint8_t sec)
suupen 0:f49394bec833 715 {
suupen 0:f49394bec833 716 _DISPLAYPOSITION iti;
suupen 0:f49394bec833 717
suupen 0:f49394bec833 718 // genzai no byo iti wo 100ms goto ni 1dankai zutu tento
suupen 0:f49394bec833 719 if(sec <= 14){
suupen 0:f49394bec833 720 iti.x = sec;
suupen 0:f49394bec833 721 iti.y = 0;
suupen 0:f49394bec833 722 }
suupen 0:f49394bec833 723 else if(sec <= 29){
suupen 0:f49394bec833 724 iti.x = 15;
suupen 0:f49394bec833 725 iti.y = sec % 15;
suupen 0:f49394bec833 726 }
suupen 0:f49394bec833 727 else if(sec <= 44){
suupen 0:f49394bec833 728 iti.x = 15 - (sec % 15);
suupen 0:f49394bec833 729 iti.y = 15;
suupen 0:f49394bec833 730 }
suupen 0:f49394bec833 731 else{
suupen 0:f49394bec833 732 iti.x = 0;
suupen 0:f49394bec833 733 iti.y = 15 - (sec % 15);
suupen 0:f49394bec833 734 }
suupen 0:f49394bec833 735 return iti;
suupen 0:f49394bec833 736 }
suupen 0:f49394bec833 737
suupen 0:f49394bec833 738 /******************************************************************************
suupen 0:f49394bec833 739 Name : ji iti zahyo no sansyutu
suupen 0:f49394bec833 740 Parameters : ji : 0 - 11, min : 0 - 59
suupen 0:f49394bec833 741 Returns : nothing
suupen 0:f49394bec833 742 Description:
suupen 0:f49394bec833 743 ******************************************************************************/
suupen 0:f49394bec833 744 static _DISPLAYPOSITION tokei_jiIti(uint8_t ji, uint8_t min)
suupen 0:f49394bec833 745 {
suupen 0:f49394bec833 746 uint8_t jiIti;
suupen 0:f49394bec833 747 _DISPLAYPOSITION iti;
suupen 0:f49394bec833 748 // genzai no ji iti wo tento
suupen 0:f49394bec833 749 jiIti = (ji * 3) + (min / 20);
suupen 0:f49394bec833 750 if(jiIti <= 8){
suupen 0:f49394bec833 751 iti.x = jiIti + 3;
suupen 0:f49394bec833 752 iti.y = 3;
suupen 0:f49394bec833 753 }
suupen 0:f49394bec833 754 else if(jiIti <= 17){
suupen 0:f49394bec833 755 iti.x = 12;
suupen 0:f49394bec833 756 iti.y = (jiIti % 9) + 3;
suupen 0:f49394bec833 757 }
suupen 0:f49394bec833 758 else if(jiIti <= 26){
suupen 0:f49394bec833 759 iti.x = 12 - (jiIti % 9) ;
suupen 0:f49394bec833 760 iti.y = 12;
suupen 0:f49394bec833 761 }
suupen 0:f49394bec833 762 else{
suupen 0:f49394bec833 763 iti.x = 3;
suupen 0:f49394bec833 764 iti.y = 12 - (jiIti % 9);
suupen 0:f49394bec833 765 }
suupen 0:f49394bec833 766
suupen 0:f49394bec833 767 return iti;
suupen 0:f49394bec833 768
suupen 0:f49394bec833 769 }