morse keyboard

Dependencies:   mbed TextLCD

main.cpp

Committer:
771_8bit
Date:
2019-09-18
Revision:
0:b1cdb25efab3

File content as of revision 0:b1cdb25efab3:

#include "mbed.h"
#include "TextLCD.h"
#define chatter 100

TextLCD lcd(P0_22, P0_11, P0_10, P0_7, P0_9, P0_8); // rs, e, d4-d7
DigitalIn button_short(P0_12,PullUp);
DigitalIn button_long(P0_14,PullUp);
DigitalIn button_enter(P0_13,PullUp);
int button_short_count;
int button_long_count;
int button_enter_count;
int input;
int input_log;
char morse[16];
int cursor;
int input_cursor;

void init()
{
    button_short_count=0;
    button_long_count=0;
    input=0;
    input_log=0;
    morse[16];
    cursor=0;
    input_cursor=0;
    lcd.cls();
    lcd.locate(0, 0);
    lcd.printf("ニ\n");
    while(!(button_short && button_long && button_enter)){
    }
}

char morse_code(int morse){
    char moji;
    if (morse==0){moji=' ';
    }else if (morse==13){moji='A';
    }else if (morse==3111){moji='B';
    }else if (morse==3131){moji='C';
    }else if (morse==311){moji='D';
    }else if (morse==1){moji='E';
    }else if (morse==1131){moji='F';
    }else if (morse==331){moji='G';
    }else if (morse==1111){moji='H';
    }else if (morse==11){moji='I';
    }else if (morse==1333){moji='J';
    }else if (morse==313){moji='K';
    }else if (morse==1311){moji='L';
    }else if (morse==33){moji='M';
    }else if (morse==31){moji='N';
    }else if (morse==333){moji='O';
    }else if (morse==1331){moji='P';
    }else if (morse==3313){moji='Q';
    }else if (morse==131){moji='R';
    }else if (morse==111){moji='S';
    }else if (morse==3){moji='T';
    }else if (morse==113){moji='U';
    }else if (morse==1113){moji='V';
    }else if (morse==133){moji='W';
    }else if (morse==3113){moji='X';
    }else if (morse==3133){moji='Y';
    }else if (morse==3311){moji='Z';
    }else if (morse==13333){moji='1';
    }else if (morse==11333){moji='2';
    }else if (morse==11133){moji='3';
    }else if (morse==11113){moji='4';
    }else if (morse==11111){moji='5';
    }else if (morse==31111){moji='6';
    }else if (morse==33111){moji='7';
    }else if (morse==33311){moji='8';
    }else if (morse==33331){moji='9';
    }else if (morse==33333){moji='0';
    }else if (morse==131313){moji='.';
    }else if (morse==331133){moji=',';
    }else if (morse==333111){moji=':';
    }else if (morse==113311){moji='?';
    }else if (morse==311113){moji='-';
    }else if (morse==31331){moji='(';
    }else if (morse==313313){moji=')';
    }else if (morse==31131){moji='/';
    }else if (morse==31113){moji='=';
    }else if (morse==13131){moji='+';
    }else if (morse==131131){moji='"';
    }else if (morse==3113){moji='*';
    }else if (morse==133131){moji='@';
    }else{moji=' ';}
    return moji;
}



int main()
{
    //灰・1 黒ー2 赤enter
    init();

    for(;;) {
        if(input_log!=input) {
            lcd.locate(0, 1);
            //lcd.printf("%d\n",input);
            input_log=input;
        }
        
        if(button_short==0) {
            button_short_count+=1;
            if(button_short_count==chatter) {
                input = input*10 + 1;
                lcd.locate(input_cursor, 1);
                lcd.putc(0b10100101); 
                input_cursor++;
            }
        } else {
            button_short_count=0;
        }

        if(button_long==0) {
            button_long_count+=1;
            if(button_long_count==chatter) {
                input = input*10 + 3;
                lcd.locate(input_cursor, 1);
                lcd.putc('-'); 
                input_cursor++;
            }
        } else {
            button_long_count=0;
        }

        if(button_enter==0) {
            button_enter_count+=1;
            if(button_enter_count==chatter) {
                if(button_short_count>chatter && button_short_count>chatter) {
                    init();
                }else{       
                    //入力行     
                    lcd.locate(0, 1);
                    lcd.printf("               ");
                    //アルファベット表示行
                    lcd.locate(cursor, 0);
                    lcd.putc(morse_code(input));                                    
                    button_short_count=0;
                    button_long_count=0;
                    input=0;
                    input_log=0;
                    cursor++;
                    input_cursor=0;
                }
            }
        } else {
            button_enter_count=0;
        }
    }
}