KPC
/
morse
morse keyboard
main.cpp@0:b1cdb25efab3, 2019-09-18 (annotated)
- Committer:
- 771_8bit
- Date:
- Wed Sep 18 15:46:08 2019 +0000
- Revision:
- 0:b1cdb25efab3
morse
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
771_8bit | 0:b1cdb25efab3 | 1 | #include "mbed.h" |
771_8bit | 0:b1cdb25efab3 | 2 | #include "TextLCD.h" |
771_8bit | 0:b1cdb25efab3 | 3 | #define chatter 100 |
771_8bit | 0:b1cdb25efab3 | 4 | |
771_8bit | 0:b1cdb25efab3 | 5 | TextLCD lcd(P0_22, P0_11, P0_10, P0_7, P0_9, P0_8); // rs, e, d4-d7 |
771_8bit | 0:b1cdb25efab3 | 6 | DigitalIn button_short(P0_12,PullUp); |
771_8bit | 0:b1cdb25efab3 | 7 | DigitalIn button_long(P0_14,PullUp); |
771_8bit | 0:b1cdb25efab3 | 8 | DigitalIn button_enter(P0_13,PullUp); |
771_8bit | 0:b1cdb25efab3 | 9 | int button_short_count; |
771_8bit | 0:b1cdb25efab3 | 10 | int button_long_count; |
771_8bit | 0:b1cdb25efab3 | 11 | int button_enter_count; |
771_8bit | 0:b1cdb25efab3 | 12 | int input; |
771_8bit | 0:b1cdb25efab3 | 13 | int input_log; |
771_8bit | 0:b1cdb25efab3 | 14 | char morse[16]; |
771_8bit | 0:b1cdb25efab3 | 15 | int cursor; |
771_8bit | 0:b1cdb25efab3 | 16 | int input_cursor; |
771_8bit | 0:b1cdb25efab3 | 17 | |
771_8bit | 0:b1cdb25efab3 | 18 | void init() |
771_8bit | 0:b1cdb25efab3 | 19 | { |
771_8bit | 0:b1cdb25efab3 | 20 | button_short_count=0; |
771_8bit | 0:b1cdb25efab3 | 21 | button_long_count=0; |
771_8bit | 0:b1cdb25efab3 | 22 | input=0; |
771_8bit | 0:b1cdb25efab3 | 23 | input_log=0; |
771_8bit | 0:b1cdb25efab3 | 24 | morse[16]; |
771_8bit | 0:b1cdb25efab3 | 25 | cursor=0; |
771_8bit | 0:b1cdb25efab3 | 26 | input_cursor=0; |
771_8bit | 0:b1cdb25efab3 | 27 | lcd.cls(); |
771_8bit | 0:b1cdb25efab3 | 28 | lcd.locate(0, 0); |
771_8bit | 0:b1cdb25efab3 | 29 | lcd.printf("ニ\n"); |
771_8bit | 0:b1cdb25efab3 | 30 | while(!(button_short && button_long && button_enter)){ |
771_8bit | 0:b1cdb25efab3 | 31 | } |
771_8bit | 0:b1cdb25efab3 | 32 | } |
771_8bit | 0:b1cdb25efab3 | 33 | |
771_8bit | 0:b1cdb25efab3 | 34 | char morse_code(int morse){ |
771_8bit | 0:b1cdb25efab3 | 35 | char moji; |
771_8bit | 0:b1cdb25efab3 | 36 | if (morse==0){moji=' '; |
771_8bit | 0:b1cdb25efab3 | 37 | }else if (morse==13){moji='A'; |
771_8bit | 0:b1cdb25efab3 | 38 | }else if (morse==3111){moji='B'; |
771_8bit | 0:b1cdb25efab3 | 39 | }else if (morse==3131){moji='C'; |
771_8bit | 0:b1cdb25efab3 | 40 | }else if (morse==311){moji='D'; |
771_8bit | 0:b1cdb25efab3 | 41 | }else if (morse==1){moji='E'; |
771_8bit | 0:b1cdb25efab3 | 42 | }else if (morse==1131){moji='F'; |
771_8bit | 0:b1cdb25efab3 | 43 | }else if (morse==331){moji='G'; |
771_8bit | 0:b1cdb25efab3 | 44 | }else if (morse==1111){moji='H'; |
771_8bit | 0:b1cdb25efab3 | 45 | }else if (morse==11){moji='I'; |
771_8bit | 0:b1cdb25efab3 | 46 | }else if (morse==1333){moji='J'; |
771_8bit | 0:b1cdb25efab3 | 47 | }else if (morse==313){moji='K'; |
771_8bit | 0:b1cdb25efab3 | 48 | }else if (morse==1311){moji='L'; |
771_8bit | 0:b1cdb25efab3 | 49 | }else if (morse==33){moji='M'; |
771_8bit | 0:b1cdb25efab3 | 50 | }else if (morse==31){moji='N'; |
771_8bit | 0:b1cdb25efab3 | 51 | }else if (morse==333){moji='O'; |
771_8bit | 0:b1cdb25efab3 | 52 | }else if (morse==1331){moji='P'; |
771_8bit | 0:b1cdb25efab3 | 53 | }else if (morse==3313){moji='Q'; |
771_8bit | 0:b1cdb25efab3 | 54 | }else if (morse==131){moji='R'; |
771_8bit | 0:b1cdb25efab3 | 55 | }else if (morse==111){moji='S'; |
771_8bit | 0:b1cdb25efab3 | 56 | }else if (morse==3){moji='T'; |
771_8bit | 0:b1cdb25efab3 | 57 | }else if (morse==113){moji='U'; |
771_8bit | 0:b1cdb25efab3 | 58 | }else if (morse==1113){moji='V'; |
771_8bit | 0:b1cdb25efab3 | 59 | }else if (morse==133){moji='W'; |
771_8bit | 0:b1cdb25efab3 | 60 | }else if (morse==3113){moji='X'; |
771_8bit | 0:b1cdb25efab3 | 61 | }else if (morse==3133){moji='Y'; |
771_8bit | 0:b1cdb25efab3 | 62 | }else if (morse==3311){moji='Z'; |
771_8bit | 0:b1cdb25efab3 | 63 | }else if (morse==13333){moji='1'; |
771_8bit | 0:b1cdb25efab3 | 64 | }else if (morse==11333){moji='2'; |
771_8bit | 0:b1cdb25efab3 | 65 | }else if (morse==11133){moji='3'; |
771_8bit | 0:b1cdb25efab3 | 66 | }else if (morse==11113){moji='4'; |
771_8bit | 0:b1cdb25efab3 | 67 | }else if (morse==11111){moji='5'; |
771_8bit | 0:b1cdb25efab3 | 68 | }else if (morse==31111){moji='6'; |
771_8bit | 0:b1cdb25efab3 | 69 | }else if (morse==33111){moji='7'; |
771_8bit | 0:b1cdb25efab3 | 70 | }else if (morse==33311){moji='8'; |
771_8bit | 0:b1cdb25efab3 | 71 | }else if (morse==33331){moji='9'; |
771_8bit | 0:b1cdb25efab3 | 72 | }else if (morse==33333){moji='0'; |
771_8bit | 0:b1cdb25efab3 | 73 | }else if (morse==131313){moji='.'; |
771_8bit | 0:b1cdb25efab3 | 74 | }else if (morse==331133){moji=','; |
771_8bit | 0:b1cdb25efab3 | 75 | }else if (morse==333111){moji=':'; |
771_8bit | 0:b1cdb25efab3 | 76 | }else if (morse==113311){moji='?'; |
771_8bit | 0:b1cdb25efab3 | 77 | }else if (morse==311113){moji='-'; |
771_8bit | 0:b1cdb25efab3 | 78 | }else if (morse==31331){moji='('; |
771_8bit | 0:b1cdb25efab3 | 79 | }else if (morse==313313){moji=')'; |
771_8bit | 0:b1cdb25efab3 | 80 | }else if (morse==31131){moji='/'; |
771_8bit | 0:b1cdb25efab3 | 81 | }else if (morse==31113){moji='='; |
771_8bit | 0:b1cdb25efab3 | 82 | }else if (morse==13131){moji='+'; |
771_8bit | 0:b1cdb25efab3 | 83 | }else if (morse==131131){moji='"'; |
771_8bit | 0:b1cdb25efab3 | 84 | }else if (morse==3113){moji='*'; |
771_8bit | 0:b1cdb25efab3 | 85 | }else if (morse==133131){moji='@'; |
771_8bit | 0:b1cdb25efab3 | 86 | }else{moji=' ';} |
771_8bit | 0:b1cdb25efab3 | 87 | return moji; |
771_8bit | 0:b1cdb25efab3 | 88 | } |
771_8bit | 0:b1cdb25efab3 | 89 | |
771_8bit | 0:b1cdb25efab3 | 90 | |
771_8bit | 0:b1cdb25efab3 | 91 | |
771_8bit | 0:b1cdb25efab3 | 92 | int main() |
771_8bit | 0:b1cdb25efab3 | 93 | { |
771_8bit | 0:b1cdb25efab3 | 94 | //灰・1 黒ー2 赤enter |
771_8bit | 0:b1cdb25efab3 | 95 | init(); |
771_8bit | 0:b1cdb25efab3 | 96 | |
771_8bit | 0:b1cdb25efab3 | 97 | for(;;) { |
771_8bit | 0:b1cdb25efab3 | 98 | if(input_log!=input) { |
771_8bit | 0:b1cdb25efab3 | 99 | lcd.locate(0, 1); |
771_8bit | 0:b1cdb25efab3 | 100 | //lcd.printf("%d\n",input); |
771_8bit | 0:b1cdb25efab3 | 101 | input_log=input; |
771_8bit | 0:b1cdb25efab3 | 102 | } |
771_8bit | 0:b1cdb25efab3 | 103 | |
771_8bit | 0:b1cdb25efab3 | 104 | if(button_short==0) { |
771_8bit | 0:b1cdb25efab3 | 105 | button_short_count+=1; |
771_8bit | 0:b1cdb25efab3 | 106 | if(button_short_count==chatter) { |
771_8bit | 0:b1cdb25efab3 | 107 | input = input*10 + 1; |
771_8bit | 0:b1cdb25efab3 | 108 | lcd.locate(input_cursor, 1); |
771_8bit | 0:b1cdb25efab3 | 109 | lcd.putc(0b10100101); |
771_8bit | 0:b1cdb25efab3 | 110 | input_cursor++; |
771_8bit | 0:b1cdb25efab3 | 111 | } |
771_8bit | 0:b1cdb25efab3 | 112 | } else { |
771_8bit | 0:b1cdb25efab3 | 113 | button_short_count=0; |
771_8bit | 0:b1cdb25efab3 | 114 | } |
771_8bit | 0:b1cdb25efab3 | 115 | |
771_8bit | 0:b1cdb25efab3 | 116 | if(button_long==0) { |
771_8bit | 0:b1cdb25efab3 | 117 | button_long_count+=1; |
771_8bit | 0:b1cdb25efab3 | 118 | if(button_long_count==chatter) { |
771_8bit | 0:b1cdb25efab3 | 119 | input = input*10 + 3; |
771_8bit | 0:b1cdb25efab3 | 120 | lcd.locate(input_cursor, 1); |
771_8bit | 0:b1cdb25efab3 | 121 | lcd.putc('-'); |
771_8bit | 0:b1cdb25efab3 | 122 | input_cursor++; |
771_8bit | 0:b1cdb25efab3 | 123 | } |
771_8bit | 0:b1cdb25efab3 | 124 | } else { |
771_8bit | 0:b1cdb25efab3 | 125 | button_long_count=0; |
771_8bit | 0:b1cdb25efab3 | 126 | } |
771_8bit | 0:b1cdb25efab3 | 127 | |
771_8bit | 0:b1cdb25efab3 | 128 | if(button_enter==0) { |
771_8bit | 0:b1cdb25efab3 | 129 | button_enter_count+=1; |
771_8bit | 0:b1cdb25efab3 | 130 | if(button_enter_count==chatter) { |
771_8bit | 0:b1cdb25efab3 | 131 | if(button_short_count>chatter && button_short_count>chatter) { |
771_8bit | 0:b1cdb25efab3 | 132 | init(); |
771_8bit | 0:b1cdb25efab3 | 133 | }else{ |
771_8bit | 0:b1cdb25efab3 | 134 | //入力行 |
771_8bit | 0:b1cdb25efab3 | 135 | lcd.locate(0, 1); |
771_8bit | 0:b1cdb25efab3 | 136 | lcd.printf(" "); |
771_8bit | 0:b1cdb25efab3 | 137 | //アルファベット表示行 |
771_8bit | 0:b1cdb25efab3 | 138 | lcd.locate(cursor, 0); |
771_8bit | 0:b1cdb25efab3 | 139 | lcd.putc(morse_code(input)); |
771_8bit | 0:b1cdb25efab3 | 140 | button_short_count=0; |
771_8bit | 0:b1cdb25efab3 | 141 | button_long_count=0; |
771_8bit | 0:b1cdb25efab3 | 142 | input=0; |
771_8bit | 0:b1cdb25efab3 | 143 | input_log=0; |
771_8bit | 0:b1cdb25efab3 | 144 | cursor++; |
771_8bit | 0:b1cdb25efab3 | 145 | input_cursor=0; |
771_8bit | 0:b1cdb25efab3 | 146 | } |
771_8bit | 0:b1cdb25efab3 | 147 | } |
771_8bit | 0:b1cdb25efab3 | 148 | } else { |
771_8bit | 0:b1cdb25efab3 | 149 | button_enter_count=0; |
771_8bit | 0:b1cdb25efab3 | 150 | } |
771_8bit | 0:b1cdb25efab3 | 151 | } |
771_8bit | 0:b1cdb25efab3 | 152 | } |