エレキジャックweb mbed入門 mbed CWデコーダ課題3です。短点長点の長さを計測して・-で表示すると共に、平均を求めてms単位で表示します。CWデコーダ基板が必要です。

Dependencies:   mbed

Committer:
takeuchi
Date:
Thu Jul 12 02:15:31 2012 +0000
Revision:
0:f7ec9f29e766
?

Who changed what in which revision?

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