Takeuchi Kouichi
/
2ck0622_mbed CW03
エレキジャックweb mbed入門 mbed CWデコーダ課題3です。短点長点の長さを計測して・-で表示すると共に、平均を求めてms単位で表示します。CWデコーダ基板が必要です。
main.cpp@0:f7ec9f29e766, 2012-07-12 (annotated)
- Committer:
- takeuchi
- Date:
- Thu Jul 12 02:15:31 2012 +0000
- Revision:
- 0:f7ec9f29e766
?
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
takeuchi | 0:f7ec9f29e766 | 1 | // CW03 |
takeuchi | 0:f7ec9f29e766 | 2 | // ._ moji hantei |
takeuchi | 0:f7ec9f29e766 | 3 | |
takeuchi | 0:f7ec9f29e766 | 4 | #include "mbed.h" |
takeuchi | 0:f7ec9f29e766 | 5 | #include "TextLCD0420.h" |
takeuchi | 0:f7ec9f29e766 | 6 | |
takeuchi | 0:f7ec9f29e766 | 7 | #define ON 1 |
takeuchi | 0:f7ec9f29e766 | 8 | #define OFF 0 |
takeuchi | 0:f7ec9f29e766 | 9 | #define XON 0 |
takeuchi | 0:f7ec9f29e766 | 10 | #define XOFF 1 |
takeuchi | 0:f7ec9f29e766 | 11 | #define XHI 0 |
takeuchi | 0:f7ec9f29e766 | 12 | #define XLOW 1 |
takeuchi | 0:f7ec9f29e766 | 13 | #define HI 1 |
takeuchi | 0:f7ec9f29e766 | 14 | #define LOW 0 |
takeuchi | 0:f7ec9f29e766 | 15 | |
takeuchi | 0:f7ec9f29e766 | 16 | DigitalOut mled1(LED1); |
takeuchi | 0:f7ec9f29e766 | 17 | DigitalOut mled2(LED2); |
takeuchi | 0:f7ec9f29e766 | 18 | DigitalOut mled3(LED3); |
takeuchi | 0:f7ec9f29e766 | 19 | DigitalOut mled4(LED4); |
takeuchi | 0:f7ec9f29e766 | 20 | DigitalIn CW(p5); |
takeuchi | 0:f7ec9f29e766 | 21 | DigitalIn SP_SELECT(p6); |
takeuchi | 0:f7ec9f29e766 | 22 | DigitalIn GENGO_MODE(p7); |
takeuchi | 0:f7ec9f29e766 | 23 | DigitalIn GENGO_SELECT(p8); |
takeuchi | 0:f7ec9f29e766 | 24 | |
takeuchi | 0:f7ec9f29e766 | 25 | TextLCD lcd(p24, p25, p26, p27, p28, p29, p30,20,4); // rs, rw, e, d0, d1, d2, d3 |
takeuchi | 0:f7ec9f29e766 | 26 | |
takeuchi | 0:f7ec9f29e766 | 27 | int min_ms,max_ms; |
takeuchi | 0:f7ec9f29e766 | 28 | |
takeuchi | 0:f7ec9f29e766 | 29 | |
takeuchi | 0:f7ec9f29e766 | 30 | void set_speed(){ |
takeuchi | 0:f7ec9f29e766 | 31 | if(SP_SELECT==HI){ |
takeuchi | 0:f7ec9f29e766 | 32 | min_ms=30; |
takeuchi | 0:f7ec9f29e766 | 33 | max_ms=90; |
takeuchi | 0:f7ec9f29e766 | 34 | lcd.locate(5,0); |
takeuchi | 0:f7ec9f29e766 | 35 | lcd.printf("H"); |
takeuchi | 0:f7ec9f29e766 | 36 | } |
takeuchi | 0:f7ec9f29e766 | 37 | else if(SP_SELECT==LOW){ |
takeuchi | 0:f7ec9f29e766 | 38 | min_ms=70; |
takeuchi | 0:f7ec9f29e766 | 39 | max_ms=210; |
takeuchi | 0:f7ec9f29e766 | 40 | lcd.locate(5,0); |
takeuchi | 0:f7ec9f29e766 | 41 | lcd.printf("L"); |
takeuchi | 0:f7ec9f29e766 | 42 | } |
takeuchi | 0:f7ec9f29e766 | 43 | } |
takeuchi | 0:f7ec9f29e766 | 44 | |
takeuchi | 0:f7ec9f29e766 | 45 | int main() { |
takeuchi | 0:f7ec9f29e766 | 46 | |
takeuchi | 0:f7ec9f29e766 | 47 | int i,j; |
takeuchi | 0:f7ec9f29e766 | 48 | int scount,tan_sum,tanten; |
takeuchi | 0:f7ec9f29e766 | 49 | |
takeuchi | 0:f7ec9f29e766 | 50 | i=0; |
takeuchi | 0:f7ec9f29e766 | 51 | j=0; |
takeuchi | 0:f7ec9f29e766 | 52 | tanten=80; |
takeuchi | 0:f7ec9f29e766 | 53 | tan_sum=0; |
takeuchi | 0:f7ec9f29e766 | 54 | |
takeuchi | 0:f7ec9f29e766 | 55 | lcd.cls(); |
takeuchi | 0:f7ec9f29e766 | 56 | lcd.printf("*CW03"); |
takeuchi | 0:f7ec9f29e766 | 57 | set_speed(); |
takeuchi | 0:f7ec9f29e766 | 58 | lcd.printf("\n"); |
takeuchi | 0:f7ec9f29e766 | 59 | |
takeuchi | 0:f7ec9f29e766 | 60 | while(1){ |
takeuchi | 0:f7ec9f29e766 | 61 | while(CW==XLOW){ |
takeuchi | 0:f7ec9f29e766 | 62 | } |
takeuchi | 0:f7ec9f29e766 | 63 | |
takeuchi | 0:f7ec9f29e766 | 64 | scount=0; |
takeuchi | 0:f7ec9f29e766 | 65 | mled1=ON; |
takeuchi | 0:f7ec9f29e766 | 66 | while(CW==XHI){ |
takeuchi | 0:f7ec9f29e766 | 67 | wait_ms(1); |
takeuchi | 0:f7ec9f29e766 | 68 | scount++; |
takeuchi | 0:f7ec9f29e766 | 69 | } |
takeuchi | 0:f7ec9f29e766 | 70 | mled1=OFF; |
takeuchi | 0:f7ec9f29e766 | 71 | |
takeuchi | 0:f7ec9f29e766 | 72 | if(min_ms < scount && scount < max_ms){ |
takeuchi | 0:f7ec9f29e766 | 73 | lcd.printf("."); |
takeuchi | 0:f7ec9f29e766 | 74 | tan_sum=tan_sum+scount; |
takeuchi | 0:f7ec9f29e766 | 75 | j++; |
takeuchi | 0:f7ec9f29e766 | 76 | } |
takeuchi | 0:f7ec9f29e766 | 77 | else if ( scount > tanten*2.0){ |
takeuchi | 0:f7ec9f29e766 | 78 | lcd.printf("_"); |
takeuchi | 0:f7ec9f29e766 | 79 | tan_sum=tan_sum+scount/3; |
takeuchi | 0:f7ec9f29e766 | 80 | j++; |
takeuchi | 0:f7ec9f29e766 | 81 | } |
takeuchi | 0:f7ec9f29e766 | 82 | |
takeuchi | 0:f7ec9f29e766 | 83 | scount=0; |
takeuchi | 0:f7ec9f29e766 | 84 | while(CW==XLOW){ |
takeuchi | 0:f7ec9f29e766 | 85 | wait_ms(1); |
takeuchi | 0:f7ec9f29e766 | 86 | scount++; |
takeuchi | 0:f7ec9f29e766 | 87 | if(scount > tanten*10){ |
takeuchi | 0:f7ec9f29e766 | 88 | break; |
takeuchi | 0:f7ec9f29e766 | 89 | } |
takeuchi | 0:f7ec9f29e766 | 90 | } |
takeuchi | 0:f7ec9f29e766 | 91 | |
takeuchi | 0:f7ec9f29e766 | 92 | if(scount > tanten*2){ |
takeuchi | 0:f7ec9f29e766 | 93 | lcd.printf(" "); |
takeuchi | 0:f7ec9f29e766 | 94 | } |
takeuchi | 0:f7ec9f29e766 | 95 | |
takeuchi | 0:f7ec9f29e766 | 96 | if(j==10){ |
takeuchi | 0:f7ec9f29e766 | 97 | tanten=tan_sum/10; |
takeuchi | 0:f7ec9f29e766 | 98 | lcd.printf(" %3d ",tanten); |
takeuchi | 0:f7ec9f29e766 | 99 | tan_sum=0; |
takeuchi | 0:f7ec9f29e766 | 100 | j=0; |
takeuchi | 0:f7ec9f29e766 | 101 | } |
takeuchi | 0:f7ec9f29e766 | 102 | }//while 1 |
takeuchi | 0:f7ec9f29e766 | 103 | }//main |