Takeuchi Kouichi
/
2ck0706_mbed CWd_Ver1
エレキジャックweb mbed入門 mbed CWデコーダ 完成形です。CWd Ver1.0とします。細かなバグを修正してあります。デコーダ基板が必要です。
main.cpp@0:3e0f52f529fc, 2012-07-16 (annotated)
- Committer:
- takeuchi
- Date:
- Mon Jul 16 06:34:02 2012 +0000
- Revision:
- 0:3e0f52f529fc
???????web mbed?? mbed CW??????12???CQ????????????????????????????????????????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
takeuchi | 0:3e0f52f529fc | 1 | // CW13 = CWd Ver1.0 |
takeuchi | 0:3e0f52f529fc | 2 | // BT AR taiou |
takeuchi | 0:3e0f52f529fc | 3 | // Wabun |
takeuchi | 0:3e0f52f529fc | 4 | // SW tuika |
takeuchi | 0:3e0f52f529fc | 5 | // hore taiou |
takeuchi | 0:3e0f52f529fc | 6 | // wabun (OUBUN) wabun |
takeuchi | 0:3e0f52f529fc | 7 | // CQ hore taiou |
takeuchi | 0:3e0f52f529fc | 8 | |
takeuchi | 0:3e0f52f529fc | 9 | #include "mbed.h" |
takeuchi | 0:3e0f52f529fc | 10 | #include "TextLCD0420.h" |
takeuchi | 0:3e0f52f529fc | 11 | |
takeuchi | 0:3e0f52f529fc | 12 | #define ON 1 |
takeuchi | 0:3e0f52f529fc | 13 | #define OFF 0 |
takeuchi | 0:3e0f52f529fc | 14 | #define XON 0 |
takeuchi | 0:3e0f52f529fc | 15 | #define XOFF 1 |
takeuchi | 0:3e0f52f529fc | 16 | #define XHI 0 |
takeuchi | 0:3e0f52f529fc | 17 | #define XLOW 1 |
takeuchi | 0:3e0f52f529fc | 18 | #define HI 1 |
takeuchi | 0:3e0f52f529fc | 19 | #define LOW |
takeuchi | 0:3e0f52f529fc | 20 | #define OUBUN 1 |
takeuchi | 0:3e0f52f529fc | 21 | #define WABUN 0 |
takeuchi | 0:3e0f52f529fc | 22 | #define AUTO 1 |
takeuchi | 0:3e0f52f529fc | 23 | #define MANUAL 0 |
takeuchi | 0:3e0f52f529fc | 24 | #define KN 44 |
takeuchi | 0:3e0f52f529fc | 25 | #define AS 33 |
takeuchi | 0:3e0f52f529fc | 26 | #define CT 52 |
takeuchi | 0:3e0f52f529fc | 27 | #define BT 48 |
takeuchi | 0:3e0f52f529fc | 28 | #define AR 41 |
takeuchi | 0:3e0f52f529fc | 29 | #define HH 255 |
takeuchi | 0:3e0f52f529fc | 30 | #define VA 103 |
takeuchi | 0:3e0f52f529fc | 31 | #define HORE 120 |
takeuchi | 0:3e0f52f529fc | 32 | #define RATA 39 |
takeuchi | 0:3e0f52f529fc | 33 | |
takeuchi | 0:3e0f52f529fc | 34 | DigitalOut mled1(LED1); |
takeuchi | 0:3e0f52f529fc | 35 | DigitalOut mled2(LED2); |
takeuchi | 0:3e0f52f529fc | 36 | DigitalOut mled3(LED3); |
takeuchi | 0:3e0f52f529fc | 37 | DigitalOut mled4(LED4); |
takeuchi | 0:3e0f52f529fc | 38 | DigitalIn CW(p5); |
takeuchi | 0:3e0f52f529fc | 39 | DigitalIn SP_SELECT(p6); |
takeuchi | 0:3e0f52f529fc | 40 | DigitalIn GENGO_MODE(p7); |
takeuchi | 0:3e0f52f529fc | 41 | DigitalIn GENGO_SELECT(p8); |
takeuchi | 0:3e0f52f529fc | 42 | |
takeuchi | 0:3e0f52f529fc | 43 | TextLCD lcd(p24, p25, p26, p27, p28, p29, p30,20,4); // rs, rw, e, d0, d1, d2, d3 |
takeuchi | 0:3e0f52f529fc | 44 | |
takeuchi | 0:3e0f52f529fc | 45 | int retu,gyou; |
takeuchi | 0:3e0f52f529fc | 46 | char g2[20],g3[20]; |
takeuchi | 0:3e0f52f529fc | 47 | int init_flag=ON; |
takeuchi | 0:3e0f52f529fc | 48 | int min_ms,max_ms; |
takeuchi | 0:3e0f52f529fc | 49 | int gengo,wabun_temp; |
takeuchi | 0:3e0f52f529fc | 50 | |
takeuchi | 0:3e0f52f529fc | 51 | void lcd_scprintf(char pdata){ |
takeuchi | 0:3e0f52f529fc | 52 | int i; |
takeuchi | 0:3e0f52f529fc | 53 | |
takeuchi | 0:3e0f52f529fc | 54 | if(init_flag==ON){ |
takeuchi | 0:3e0f52f529fc | 55 | if(gyou==1){ |
takeuchi | 0:3e0f52f529fc | 56 | lcd.locate(retu,1); |
takeuchi | 0:3e0f52f529fc | 57 | lcd.printf("%c",pdata); |
takeuchi | 0:3e0f52f529fc | 58 | retu++; |
takeuchi | 0:3e0f52f529fc | 59 | if(retu==20){ |
takeuchi | 0:3e0f52f529fc | 60 | gyou=2; |
takeuchi | 0:3e0f52f529fc | 61 | retu=0; |
takeuchi | 0:3e0f52f529fc | 62 | } |
takeuchi | 0:3e0f52f529fc | 63 | } |
takeuchi | 0:3e0f52f529fc | 64 | else if(gyou==2){ |
takeuchi | 0:3e0f52f529fc | 65 | lcd.locate(retu,2); |
takeuchi | 0:3e0f52f529fc | 66 | lcd.printf("%c",pdata); |
takeuchi | 0:3e0f52f529fc | 67 | g2[retu]=pdata; |
takeuchi | 0:3e0f52f529fc | 68 | retu++; |
takeuchi | 0:3e0f52f529fc | 69 | if(retu==20){ |
takeuchi | 0:3e0f52f529fc | 70 | retu=0; |
takeuchi | 0:3e0f52f529fc | 71 | gyou=3; |
takeuchi | 0:3e0f52f529fc | 72 | } |
takeuchi | 0:3e0f52f529fc | 73 | } |
takeuchi | 0:3e0f52f529fc | 74 | else if(gyou==3){ |
takeuchi | 0:3e0f52f529fc | 75 | lcd.locate(retu,3); |
takeuchi | 0:3e0f52f529fc | 76 | lcd.printf("%c",pdata); |
takeuchi | 0:3e0f52f529fc | 77 | g3[retu]=pdata; |
takeuchi | 0:3e0f52f529fc | 78 | retu++; |
takeuchi | 0:3e0f52f529fc | 79 | if(retu==20){ |
takeuchi | 0:3e0f52f529fc | 80 | retu=0; |
takeuchi | 0:3e0f52f529fc | 81 | gyou=1; |
takeuchi | 0:3e0f52f529fc | 82 | for(i=0;i<20;i++){ |
takeuchi | 0:3e0f52f529fc | 83 | lcd.locate(i,1); |
takeuchi | 0:3e0f52f529fc | 84 | lcd.printf("%c",g2[i]); |
takeuchi | 0:3e0f52f529fc | 85 | } |
takeuchi | 0:3e0f52f529fc | 86 | for(i=0;i<20;i++){ |
takeuchi | 0:3e0f52f529fc | 87 | lcd.locate(i,2); |
takeuchi | 0:3e0f52f529fc | 88 | lcd.printf("%c",g3[i]); |
takeuchi | 0:3e0f52f529fc | 89 | g2[i]=g3[i]; |
takeuchi | 0:3e0f52f529fc | 90 | } |
takeuchi | 0:3e0f52f529fc | 91 | lcd.locate(0,3); |
takeuchi | 0:3e0f52f529fc | 92 | lcd.printf(" "); |
takeuchi | 0:3e0f52f529fc | 93 | init_flag=OFF; |
takeuchi | 0:3e0f52f529fc | 94 | } |
takeuchi | 0:3e0f52f529fc | 95 | } |
takeuchi | 0:3e0f52f529fc | 96 | } |
takeuchi | 0:3e0f52f529fc | 97 | if(init_flag==OFF){ |
takeuchi | 0:3e0f52f529fc | 98 | gyou=3; |
takeuchi | 0:3e0f52f529fc | 99 | lcd.locate(retu,3); |
takeuchi | 0:3e0f52f529fc | 100 | lcd.printf("%c",pdata); |
takeuchi | 0:3e0f52f529fc | 101 | g3[retu]=pdata; |
takeuchi | 0:3e0f52f529fc | 102 | retu++; |
takeuchi | 0:3e0f52f529fc | 103 | if(retu==20){ |
takeuchi | 0:3e0f52f529fc | 104 | for(i=0;i<20;i++){ |
takeuchi | 0:3e0f52f529fc | 105 | lcd.locate(i,1); |
takeuchi | 0:3e0f52f529fc | 106 | lcd.printf("%c",g2[i]); |
takeuchi | 0:3e0f52f529fc | 107 | lcd.locate(i,2); |
takeuchi | 0:3e0f52f529fc | 108 | lcd.printf("%c",g3[i]); |
takeuchi | 0:3e0f52f529fc | 109 | g2[i]=g3[i]; |
takeuchi | 0:3e0f52f529fc | 110 | } |
takeuchi | 0:3e0f52f529fc | 111 | lcd.locate(0,3); |
takeuchi | 0:3e0f52f529fc | 112 | lcd.printf(" "); |
takeuchi | 0:3e0f52f529fc | 113 | retu=0; |
takeuchi | 0:3e0f52f529fc | 114 | } |
takeuchi | 0:3e0f52f529fc | 115 | } |
takeuchi | 0:3e0f52f529fc | 116 | } |
takeuchi | 0:3e0f52f529fc | 117 | |
takeuchi | 0:3e0f52f529fc | 118 | void set_speed(){ |
takeuchi | 0:3e0f52f529fc | 119 | if(SP_SELECT==HI){ |
takeuchi | 0:3e0f52f529fc | 120 | min_ms=30; |
takeuchi | 0:3e0f52f529fc | 121 | max_ms=90; |
takeuchi | 0:3e0f52f529fc | 122 | lcd.locate(5,0); |
takeuchi | 0:3e0f52f529fc | 123 | lcd.printf("H"); |
takeuchi | 0:3e0f52f529fc | 124 | } |
takeuchi | 0:3e0f52f529fc | 125 | else{ |
takeuchi | 0:3e0f52f529fc | 126 | min_ms=70; |
takeuchi | 0:3e0f52f529fc | 127 | max_ms=210; |
takeuchi | 0:3e0f52f529fc | 128 | lcd.locate(5,0); |
takeuchi | 0:3e0f52f529fc | 129 | lcd.printf("L"); |
takeuchi | 0:3e0f52f529fc | 130 | } |
takeuchi | 0:3e0f52f529fc | 131 | } |
takeuchi | 0:3e0f52f529fc | 132 | |
takeuchi | 0:3e0f52f529fc | 133 | void lcd_manual(){ |
takeuchi | 0:3e0f52f529fc | 134 | lcd.locate(6,0); |
takeuchi | 0:3e0f52f529fc | 135 | lcd.printf("M"); |
takeuchi | 0:3e0f52f529fc | 136 | } |
takeuchi | 0:3e0f52f529fc | 137 | |
takeuchi | 0:3e0f52f529fc | 138 | void lcd_auto(){ |
takeuchi | 0:3e0f52f529fc | 139 | lcd.locate(6,0); |
takeuchi | 0:3e0f52f529fc | 140 | lcd.printf("A"); |
takeuchi | 0:3e0f52f529fc | 141 | } |
takeuchi | 0:3e0f52f529fc | 142 | |
takeuchi | 0:3e0f52f529fc | 143 | void lcd_alpha(){ |
takeuchi | 0:3e0f52f529fc | 144 | lcd.locate(7,0); |
takeuchi | 0:3e0f52f529fc | 145 | lcd.printf("A"); |
takeuchi | 0:3e0f52f529fc | 146 | } |
takeuchi | 0:3e0f52f529fc | 147 | void lcd_kana(){ |
takeuchi | 0:3e0f52f529fc | 148 | lcd.locate(7,0); |
takeuchi | 0:3e0f52f529fc | 149 | lcd.printf("%c",0xb6); |
takeuchi | 0:3e0f52f529fc | 150 | } |
takeuchi | 0:3e0f52f529fc | 151 | |
takeuchi | 0:3e0f52f529fc | 152 | void set_gengo(){ |
takeuchi | 0:3e0f52f529fc | 153 | if(GENGO_MODE==MANUAL){// Gengo Manual mode |
takeuchi | 0:3e0f52f529fc | 154 | lcd_manual(); |
takeuchi | 0:3e0f52f529fc | 155 | if(GENGO_SELECT==OUBUN){// manual wabun |
takeuchi | 0:3e0f52f529fc | 156 | gengo=OUBUN; |
takeuchi | 0:3e0f52f529fc | 157 | } |
takeuchi | 0:3e0f52f529fc | 158 | else if(GENGO_SELECT==WABUN){// manual oubun |
takeuchi | 0:3e0f52f529fc | 159 | gengo=WABUN; |
takeuchi | 0:3e0f52f529fc | 160 | wabun_temp=WABUN; |
takeuchi | 0:3e0f52f529fc | 161 | } |
takeuchi | 0:3e0f52f529fc | 162 | } |
takeuchi | 0:3e0f52f529fc | 163 | else if(GENGO_MODE==AUTO){// Gengo Auto mode |
takeuchi | 0:3e0f52f529fc | 164 | lcd_auto(); |
takeuchi | 0:3e0f52f529fc | 165 | } |
takeuchi | 0:3e0f52f529fc | 166 | } |
takeuchi | 0:3e0f52f529fc | 167 | |
takeuchi | 0:3e0f52f529fc | 168 | int main() { |
takeuchi | 0:3e0f52f529fc | 169 | |
takeuchi | 0:3e0f52f529fc | 170 | int i,j,k; |
takeuchi | 0:3e0f52f529fc | 171 | int code[8]; |
takeuchi | 0:3e0f52f529fc | 172 | int scount; |
takeuchi | 0:3e0f52f529fc | 173 | char mj[115],mjj[121],c1,c2; |
takeuchi | 0:3e0f52f529fc | 174 | int cw_sum,tan_sum,tanten,cpm; |
takeuchi | 0:3e0f52f529fc | 175 | char cw_class; |
takeuchi | 0:3e0f52f529fc | 176 | |
takeuchi | 0:3e0f52f529fc | 177 | // Alphabet |
takeuchi | 0:3e0f52f529fc | 178 | for(i=0;i<115;i++){ |
takeuchi | 0:3e0f52f529fc | 179 | mj[i]=' '; |
takeuchi | 0:3e0f52f529fc | 180 | } |
takeuchi | 0:3e0f52f529fc | 181 | mj[5]='A';mj[16]='B';mj[20]='C';mj[8]='D';mj[1]='E'; |
takeuchi | 0:3e0f52f529fc | 182 | mj[19]='F';mj[10]='G';mj[15]='H';mj[3]='I';mj[29]='J'; |
takeuchi | 0:3e0f52f529fc | 183 | mj[12]='K';mj[17]='L';mj[6]='M';mj[4]='N';mj[14]='O'; |
takeuchi | 0:3e0f52f529fc | 184 | mj[21]='P';mj[26]='Q';mj[9]='R';mj[7]='S';mj[2]='T'; |
takeuchi | 0:3e0f52f529fc | 185 | mj[11]='U';mj[23]='V';mj[13]='W';mj[24]='X';mj[28]='Y'; |
takeuchi | 0:3e0f52f529fc | 186 | mj[18]='Z'; |
takeuchi | 0:3e0f52f529fc | 187 | mj[61]='1';mj[59]='2';mj[55]='3';mj[47]='4';mj[31]='5'; |
takeuchi | 0:3e0f52f529fc | 188 | mj[32]='6';mj[34]='7';mj[38]='8';mj[46]='9';mj[62]='0'; |
takeuchi | 0:3e0f52f529fc | 189 | mj[105]='.';mj[114]=',';mj[75]='?';mj[48]='=';mj[96]='-'; |
takeuchi | 0:3e0f52f529fc | 190 | mj[70]=':';mj[93]='\'';mj[44]='(';mj[108]=')';mj[40]='/'; |
takeuchi | 0:3e0f52f529fc | 191 | mj[85]='@'; |
takeuchi | 0:3e0f52f529fc | 192 | //mj[41]='+'; |
takeuchi | 0:3e0f52f529fc | 193 | |
takeuchi | 0:3e0f52f529fc | 194 | // Kanamoji |
takeuchi | 0:3e0f52f529fc | 195 | for(i=0;i<121;i++){ |
takeuchi | 0:3e0f52f529fc | 196 | mjj[i]=' '; |
takeuchi | 0:3e0f52f529fc | 197 | } |
takeuchi | 0:3e0f52f529fc | 198 | mjj[58]=0xb1;mjj[5]=0xb2;mjj[11]=0xb3;mjj[60]=0xb4;mjj[33]=0xb5;//a |
takeuchi | 0:3e0f52f529fc | 199 | mjj[17]=0xb6;mjj[36]=0xb7;mjj[23]=0xb8;mjj[28]=0xb9;mjj[30]=0xba;//ka |
takeuchi | 0:3e0f52f529fc | 200 | mjj[52]=0xbb;mjj[42]=0xbc;mjj[54]=0xbd;mjj[45]=0xbe;mjj[22]=0xbf;//sa |
takeuchi | 0:3e0f52f529fc | 201 | mjj[4]=0xc0;mjj[19]=0xc1;mjj[21]=0xc2;mjj[57]=0xc3;mjj[35]=0xc4;//ta |
takeuchi | 0:3e0f52f529fc | 202 | mjj[9]=0xc5;mjj[20]=0xc6;mjj[15]=0xc7;mjj[26]=0xc8;mjj[27]=0xc9;//na |
takeuchi | 0:3e0f52f529fc | 203 | mjj[16]=0xca;mjj[50]=0xcb;mjj[18]=0xcc;mjj[1]=0xcd;mjj[8]=0xce;//ha |
takeuchi | 0:3e0f52f529fc | 204 | mjj[24]=0xcf;mjj[51]=0xd0;mjj[2]=0xd1;mjj[48]=0xd2;mjj[40]=0xd3;//ma |
takeuchi | 0:3e0f52f529fc | 205 | mjj[13]=0xd4;mjj[56]=0xd5;mjj[6]=0xd6;//ya |
takeuchi | 0:3e0f52f529fc | 206 | mjj[7]=0xd7;mjj[10]=0xd8;mjj[44]=0xd9;mjj[14]=0xda;mjj[25]=0xdb;//ra |
takeuchi | 0:3e0f52f529fc | 207 | mjj[12]=0xdc;mjj[49]=0xb2;mjj[37]=0xb4;mjj[29]=0xa6;mjj[41]=0xdd;//wa |
takeuchi | 0:3e0f52f529fc | 208 | mjj[53]=0xb0;mjj[43]=0xdf;mjj[105]=','; |
takeuchi | 0:3e0f52f529fc | 209 | mjj[3]=0xde;mjj[73]=0xa3; |
takeuchi | 0:3e0f52f529fc | 210 | mjj[108]='(';mjj[81]=')'; |
takeuchi | 0:3e0f52f529fc | 211 | mjj[61]='1';mjj[59]='2';mjj[55]='3';mjj[47]='4';mjj[31]='5'; |
takeuchi | 0:3e0f52f529fc | 212 | mjj[32]='6';mjj[34]='7';mjj[38]='8';mjj[46]='9';mjj[62]='0'; |
takeuchi | 0:3e0f52f529fc | 213 | |
takeuchi | 0:3e0f52f529fc | 214 | lcd.cls(); |
takeuchi | 0:3e0f52f529fc | 215 | lcd.printf("*CWd "); |
takeuchi | 0:3e0f52f529fc | 216 | |
takeuchi | 0:3e0f52f529fc | 217 | for(i=0;i<8;i++){ |
takeuchi | 0:3e0f52f529fc | 218 | code[i]=0; |
takeuchi | 0:3e0f52f529fc | 219 | } |
takeuchi | 0:3e0f52f529fc | 220 | |
takeuchi | 0:3e0f52f529fc | 221 | i=0; |
takeuchi | 0:3e0f52f529fc | 222 | tan_sum=0; |
takeuchi | 0:3e0f52f529fc | 223 | set_speed(); |
takeuchi | 0:3e0f52f529fc | 224 | c1=' ',c2=' '; |
takeuchi | 0:3e0f52f529fc | 225 | |
takeuchi | 0:3e0f52f529fc | 226 | set_gengo(); |
takeuchi | 0:3e0f52f529fc | 227 | |
takeuchi | 0:3e0f52f529fc | 228 | while( i<5 ){// System initialize |
takeuchi | 0:3e0f52f529fc | 229 | lcd.locate(8,0); |
takeuchi | 0:3e0f52f529fc | 230 | lcd.printf("%2d",5-i); |
takeuchi | 0:3e0f52f529fc | 231 | scount=0; |
takeuchi | 0:3e0f52f529fc | 232 | while(CW==XLOW){ |
takeuchi | 0:3e0f52f529fc | 233 | } |
takeuchi | 0:3e0f52f529fc | 234 | mled1=ON; |
takeuchi | 0:3e0f52f529fc | 235 | while(CW==XHI){ |
takeuchi | 0:3e0f52f529fc | 236 | scount++; |
takeuchi | 0:3e0f52f529fc | 237 | wait_ms(1); |
takeuchi | 0:3e0f52f529fc | 238 | } |
takeuchi | 0:3e0f52f529fc | 239 | mled1=OFF; |
takeuchi | 0:3e0f52f529fc | 240 | if(min_ms < scount && scount < max_ms){ |
takeuchi | 0:3e0f52f529fc | 241 | tan_sum=tan_sum+scount; |
takeuchi | 0:3e0f52f529fc | 242 | i++; |
takeuchi | 0:3e0f52f529fc | 243 | } |
takeuchi | 0:3e0f52f529fc | 244 | |
takeuchi | 0:3e0f52f529fc | 245 | }//while i |
takeuchi | 0:3e0f52f529fc | 246 | |
takeuchi | 0:3e0f52f529fc | 247 | tanten=tan_sum/5; |
takeuchi | 0:3e0f52f529fc | 248 | |
takeuchi | 0:3e0f52f529fc | 249 | j=0; |
takeuchi | 0:3e0f52f529fc | 250 | k=0; |
takeuchi | 0:3e0f52f529fc | 251 | tan_sum=0; |
takeuchi | 0:3e0f52f529fc | 252 | gyou=1,retu=0; |
takeuchi | 0:3e0f52f529fc | 253 | gengo=OUBUN; |
takeuchi | 0:3e0f52f529fc | 254 | wabun_temp=OUBUN; |
takeuchi | 0:3e0f52f529fc | 255 | while(1){ |
takeuchi | 0:3e0f52f529fc | 256 | set_speed();// speed Hi/LO |
takeuchi | 0:3e0f52f529fc | 257 | set_gengo(); |
takeuchi | 0:3e0f52f529fc | 258 | while(CW==XLOW){// signal Low wait |
takeuchi | 0:3e0f52f529fc | 259 | } |
takeuchi | 0:3e0f52f529fc | 260 | |
takeuchi | 0:3e0f52f529fc | 261 | scount=0; |
takeuchi | 0:3e0f52f529fc | 262 | mled1=ON; |
takeuchi | 0:3e0f52f529fc | 263 | while(CW==XHI){// ._ count |
takeuchi | 0:3e0f52f529fc | 264 | wait_ms(1); |
takeuchi | 0:3e0f52f529fc | 265 | scount++; |
takeuchi | 0:3e0f52f529fc | 266 | } |
takeuchi | 0:3e0f52f529fc | 267 | mled1=OFF; |
takeuchi | 0:3e0f52f529fc | 268 | |
takeuchi | 0:3e0f52f529fc | 269 | if(min_ms < scount && scount < max_ms){ |
takeuchi | 0:3e0f52f529fc | 270 | //lcd.printf("."); |
takeuchi | 0:3e0f52f529fc | 271 | code[k]=1; |
takeuchi | 0:3e0f52f529fc | 272 | k++; |
takeuchi | 0:3e0f52f529fc | 273 | tan_sum=tan_sum+scount; |
takeuchi | 0:3e0f52f529fc | 274 | j++; |
takeuchi | 0:3e0f52f529fc | 275 | } |
takeuchi | 0:3e0f52f529fc | 276 | |
takeuchi | 0:3e0f52f529fc | 277 | else if ( scount > tanten*2.0){ |
takeuchi | 0:3e0f52f529fc | 278 | //lcd.printf("_"); |
takeuchi | 0:3e0f52f529fc | 279 | code[k]=2; |
takeuchi | 0:3e0f52f529fc | 280 | k++; |
takeuchi | 0:3e0f52f529fc | 281 | tan_sum=tan_sum+scount/3; |
takeuchi | 0:3e0f52f529fc | 282 | j++; |
takeuchi | 0:3e0f52f529fc | 283 | } |
takeuchi | 0:3e0f52f529fc | 284 | |
takeuchi | 0:3e0f52f529fc | 285 | lcd.locate(8,0);// moji kousei status |
takeuchi | 0:3e0f52f529fc | 286 | lcd.printf("%2d",k); |
takeuchi | 0:3e0f52f529fc | 287 | |
takeuchi | 0:3e0f52f529fc | 288 | scount=0; |
takeuchi | 0:3e0f52f529fc | 289 | while(CW==XLOW){ |
takeuchi | 0:3e0f52f529fc | 290 | wait_ms(1); |
takeuchi | 0:3e0f52f529fc | 291 | scount++; |
takeuchi | 0:3e0f52f529fc | 292 | if(scount > tanten*10){ |
takeuchi | 0:3e0f52f529fc | 293 | break; |
takeuchi | 0:3e0f52f529fc | 294 | } |
takeuchi | 0:3e0f52f529fc | 295 | } |
takeuchi | 0:3e0f52f529fc | 296 | |
takeuchi | 0:3e0f52f529fc | 297 | if(k>8){// moji kousei over flow |
takeuchi | 0:3e0f52f529fc | 298 | k=0; |
takeuchi | 0:3e0f52f529fc | 299 | lcd_scprintf('*'); |
takeuchi | 0:3e0f52f529fc | 300 | for(i=0;i<=7;i++){ |
takeuchi | 0:3e0f52f529fc | 301 | code[i]=0; |
takeuchi | 0:3e0f52f529fc | 302 | } |
takeuchi | 0:3e0f52f529fc | 303 | } |
takeuchi | 0:3e0f52f529fc | 304 | |
takeuchi | 0:3e0f52f529fc | 305 | if(gengo==OUBUN && scount > tanten*2.0){// Oubun shori |
takeuchi | 0:3e0f52f529fc | 306 | lcd_alpha(); |
takeuchi | 0:3e0f52f529fc | 307 | cw_sum=0; |
takeuchi | 0:3e0f52f529fc | 308 | for(i=0;i<=7;i++){ |
takeuchi | 0:3e0f52f529fc | 309 | cw_sum=cw_sum+code[i]*int(pow(2.0,i)); |
takeuchi | 0:3e0f52f529fc | 310 | } |
takeuchi | 0:3e0f52f529fc | 311 | |
takeuchi | 0:3e0f52f529fc | 312 | if(GENGO_MODE==AUTO && (cw_sum==HORE || cw_sum==58 ||cw_sum==28 || cw_sum==33 || cw_sum==36 |
takeuchi | 0:3e0f52f529fc | 313 | || cw_sum==30 ||cw_sum==25) ){// hore a e o ki ko ro |
takeuchi | 0:3e0f52f529fc | 314 | lcd_scprintf('[');lcd_scprintf(0xce);lcd_scprintf( 0xda);lcd_scprintf(']');//ho re |
takeuchi | 0:3e0f52f529fc | 315 | if(c1=='C' && c2=='Q'){// CQ hore oubun keep |
takeuchi | 0:3e0f52f529fc | 316 | // |
takeuchi | 0:3e0f52f529fc | 317 | } |
takeuchi | 0:3e0f52f529fc | 318 | else{ |
takeuchi | 0:3e0f52f529fc | 319 | gengo=WABUN; |
takeuchi | 0:3e0f52f529fc | 320 | wabun_temp=WABUN; |
takeuchi | 0:3e0f52f529fc | 321 | cw_sum=0; |
takeuchi | 0:3e0f52f529fc | 322 | } |
takeuchi | 0:3e0f52f529fc | 323 | }// if gengo auto |
takeuchi | 0:3e0f52f529fc | 324 | else if(cw_sum==BT){ |
takeuchi | 0:3e0f52f529fc | 325 | lcd_scprintf('[');lcd_scprintf('B');lcd_scprintf('T');lcd_scprintf(']'); |
takeuchi | 0:3e0f52f529fc | 326 | } |
takeuchi | 0:3e0f52f529fc | 327 | else if(cw_sum==KN){ |
takeuchi | 0:3e0f52f529fc | 328 | lcd_scprintf('[');lcd_scprintf('K');lcd_scprintf('N');lcd_scprintf(']'); |
takeuchi | 0:3e0f52f529fc | 329 | } |
takeuchi | 0:3e0f52f529fc | 330 | else if(cw_sum==AR){ |
takeuchi | 0:3e0f52f529fc | 331 | lcd_scprintf('[');lcd_scprintf('A');lcd_scprintf('R');lcd_scprintf(']'); |
takeuchi | 0:3e0f52f529fc | 332 | } |
takeuchi | 0:3e0f52f529fc | 333 | else if(cw_sum==HH){ |
takeuchi | 0:3e0f52f529fc | 334 | lcd_scprintf('[');lcd_scprintf('H');lcd_scprintf('H');lcd_scprintf(']'); |
takeuchi | 0:3e0f52f529fc | 335 | } |
takeuchi | 0:3e0f52f529fc | 336 | else if(cw_sum==AS){ |
takeuchi | 0:3e0f52f529fc | 337 | lcd_scprintf('[');lcd_scprintf('A');lcd_scprintf('S');lcd_scprintf(']'); |
takeuchi | 0:3e0f52f529fc | 338 | } |
takeuchi | 0:3e0f52f529fc | 339 | else if(cw_sum==CT){ |
takeuchi | 0:3e0f52f529fc | 340 | lcd_scprintf('[');lcd_scprintf('C');lcd_scprintf('T');lcd_scprintf(']'); |
takeuchi | 0:3e0f52f529fc | 341 | } |
takeuchi | 0:3e0f52f529fc | 342 | else if(cw_sum==VA){ |
takeuchi | 0:3e0f52f529fc | 343 | lcd_scprintf('[');lcd_scprintf('V');lcd_scprintf('A');lcd_scprintf(']'); |
takeuchi | 0:3e0f52f529fc | 344 | } |
takeuchi | 0:3e0f52f529fc | 345 | else if(cw_sum > 115){ |
takeuchi | 0:3e0f52f529fc | 346 | lcd_scprintf('*'); |
takeuchi | 0:3e0f52f529fc | 347 | cw_sum=0; |
takeuchi | 0:3e0f52f529fc | 348 | } |
takeuchi | 0:3e0f52f529fc | 349 | else { |
takeuchi | 0:3e0f52f529fc | 350 | lcd_scprintf(mj[cw_sum]); |
takeuchi | 0:3e0f52f529fc | 351 | c1=c2;// CQ hore taiou |
takeuchi | 0:3e0f52f529fc | 352 | c2=mj[cw_sum]; |
takeuchi | 0:3e0f52f529fc | 353 | } |
takeuchi | 0:3e0f52f529fc | 354 | k=0; |
takeuchi | 0:3e0f52f529fc | 355 | for(i=0;i<=7;i++){ |
takeuchi | 0:3e0f52f529fc | 356 | code[i]=0; |
takeuchi | 0:3e0f52f529fc | 357 | } |
takeuchi | 0:3e0f52f529fc | 358 | }//if oubun |
takeuchi | 0:3e0f52f529fc | 359 | |
takeuchi | 0:3e0f52f529fc | 360 | if(gengo==WABUN && scount > tanten*2.0){// Wabun shori |
takeuchi | 0:3e0f52f529fc | 361 | lcd_kana(); |
takeuchi | 0:3e0f52f529fc | 362 | cw_sum=0; |
takeuchi | 0:3e0f52f529fc | 363 | for(i=0;i<=7;i++){ |
takeuchi | 0:3e0f52f529fc | 364 | cw_sum=cw_sum+code[i]*int(pow(2.0,i)); |
takeuchi | 0:3e0f52f529fc | 365 | } |
takeuchi | 0:3e0f52f529fc | 366 | |
takeuchi | 0:3e0f52f529fc | 367 | if(GENGO_MODE==AUTO && cw_sum==RATA){// ra ta |
takeuchi | 0:3e0f52f529fc | 368 | lcd_scprintf('[');lcd_scprintf(0xd7);lcd_scprintf(0xc0);lcd_scprintf(']');//ra ta |
takeuchi | 0:3e0f52f529fc | 369 | gengo=OUBUN; |
takeuchi | 0:3e0f52f529fc | 370 | wabun_temp=OUBUN; |
takeuchi | 0:3e0f52f529fc | 371 | } |
takeuchi | 0:3e0f52f529fc | 372 | if(cw_sum==81){// ) |
takeuchi | 0:3e0f52f529fc | 373 | wabun_temp=WABUN; |
takeuchi | 0:3e0f52f529fc | 374 | lcd_kana(); |
takeuchi | 0:3e0f52f529fc | 375 | } |
takeuchi | 0:3e0f52f529fc | 376 | else if(cw_sum > 121){ |
takeuchi | 0:3e0f52f529fc | 377 | cw_sum=0; |
takeuchi | 0:3e0f52f529fc | 378 | lcd_scprintf(' '); |
takeuchi | 0:3e0f52f529fc | 379 | } |
takeuchi | 0:3e0f52f529fc | 380 | |
takeuchi | 0:3e0f52f529fc | 381 | if(wabun_temp==WABUN){ |
takeuchi | 0:3e0f52f529fc | 382 | lcd_scprintf(mjj[cw_sum]); |
takeuchi | 0:3e0f52f529fc | 383 | c1=c2;//CQ hore taiou |
takeuchi | 0:3e0f52f529fc | 384 | c2=mjj[cw_sum]; |
takeuchi | 0:3e0f52f529fc | 385 | } |
takeuchi | 0:3e0f52f529fc | 386 | else if(wabun_temp==OUBUN){ |
takeuchi | 0:3e0f52f529fc | 387 | lcd_scprintf(mj[cw_sum]); |
takeuchi | 0:3e0f52f529fc | 388 | c1=c2;//CQ hore taiou |
takeuchi | 0:3e0f52f529fc | 389 | c2=mj[cw_sum]; |
takeuchi | 0:3e0f52f529fc | 390 | } |
takeuchi | 0:3e0f52f529fc | 391 | |
takeuchi | 0:3e0f52f529fc | 392 | if(cw_sum==108){// ( |
takeuchi | 0:3e0f52f529fc | 393 | wabun_temp=OUBUN; |
takeuchi | 0:3e0f52f529fc | 394 | lcd_alpha(); |
takeuchi | 0:3e0f52f529fc | 395 | } |
takeuchi | 0:3e0f52f529fc | 396 | |
takeuchi | 0:3e0f52f529fc | 397 | k=0; |
takeuchi | 0:3e0f52f529fc | 398 | for(i=0;i<=7;i++){ |
takeuchi | 0:3e0f52f529fc | 399 | code[i]=0; |
takeuchi | 0:3e0f52f529fc | 400 | } |
takeuchi | 0:3e0f52f529fc | 401 | }//if wabun |
takeuchi | 0:3e0f52f529fc | 402 | |
takeuchi | 0:3e0f52f529fc | 403 | if(scount > tanten*7){// tango kan space |
takeuchi | 0:3e0f52f529fc | 404 | lcd_scprintf(' '); |
takeuchi | 0:3e0f52f529fc | 405 | } |
takeuchi | 0:3e0f52f529fc | 406 | |
takeuchi | 0:3e0f52f529fc | 407 | if(j==10){// ._ nagasa heikin keisan |
takeuchi | 0:3e0f52f529fc | 408 | tanten=tan_sum/10; |
takeuchi | 0:3e0f52f529fc | 409 | cpm=60000/(tanten*57)*5; |
takeuchi | 0:3e0f52f529fc | 410 | tan_sum=0; |
takeuchi | 0:3e0f52f529fc | 411 | j=0; |
takeuchi | 0:3e0f52f529fc | 412 | if(cpm > 100){// Professional |
takeuchi | 0:3e0f52f529fc | 413 | cw_class='P'; |
takeuchi | 0:3e0f52f529fc | 414 | } |
takeuchi | 0:3e0f52f529fc | 415 | else if(cpm > 90){ // Special |
takeuchi | 0:3e0f52f529fc | 416 | cw_class='S'; |
takeuchi | 0:3e0f52f529fc | 417 | } |
takeuchi | 0:3e0f52f529fc | 418 | else if(cpm > 65){// 1ama |
takeuchi | 0:3e0f52f529fc | 419 | cw_class='1'; |
takeuchi | 0:3e0f52f529fc | 420 | } |
takeuchi | 0:3e0f52f529fc | 421 | else if(cpm > 40){// 2ama |
takeuchi | 0:3e0f52f529fc | 422 | cw_class='2'; |
takeuchi | 0:3e0f52f529fc | 423 | } |
takeuchi | 0:3e0f52f529fc | 424 | else if(cpm > 30){//3 ama |
takeuchi | 0:3e0f52f529fc | 425 | cw_class='3'; |
takeuchi | 0:3e0f52f529fc | 426 | } |
takeuchi | 0:3e0f52f529fc | 427 | lcd.locate(11,0); |
takeuchi | 0:3e0f52f529fc | 428 | lcd.printf("%3dc(%c)",cpm,cw_class);// cw class hantei |
takeuchi | 0:3e0f52f529fc | 429 | //lcd.printf("%3dc,%3dm",cpm,tanten); |
takeuchi | 0:3e0f52f529fc | 430 | } |
takeuchi | 0:3e0f52f529fc | 431 | }//while 1 |
takeuchi | 0:3e0f52f529fc | 432 | }//main |