morse keyboard

Dependencies:   mbed TextLCD

Committer:
771_8bit
Date:
Wed Sep 18 15:46:08 2019 +0000
Revision:
0:b1cdb25efab3
morse

Who changed what in which revision?

UserRevisionLine numberNew 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 }