回転数計のデータをトワイライトから受け取って回転数を計算して表示します。

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 Serial pc(USBTX,USBRX);
00004 Serial twe(p13,p14);
00005 char data[74];
00006 int data_count;
00007 int data_num;
00008 int z_int;
00009 double z_double;
00010 int offset = (int)'0';
00011 float cadence;
00012 bool datas_title_flag=false;
00013 
00014 int main() {
00015     twe.baud(115200);
00016     pc.baud(115200);
00017     data_num=0;
00018     data_count=0;
00019     while(1) {
00020         if(twe.readable()){
00021             data[data_count]=twe.getc();
00022             
00023             if(data[data_count]=='\r'){
00024                 for(int i=0;i<73;i++) data[i]= NULL;
00025                 data_num=0;
00026                 pc.putc('!');
00027                 data_count=0;
00028             }else{
00029                 if(data[data_count]==';'){
00030                     data_num++;
00031                     datas_title_flag=true;
00032                 }
00033                 if(data_num==1){
00034                     if(datas_title_flag){
00035                         pc.printf("\n\r time:");
00036                         datas_title_flag=false;
00037                     }else{
00038                         pc.putc(data[data_count]);
00039                     }
00040                 }else if(data_num==6){
00041                     if(datas_title_flag){
00042                         pc.printf("\n\r voltage:");
00043                         datas_title_flag=false;
00044                     }else{
00045                         pc.putc(data[data_count]);
00046                     }
00047                 }else if(data_num==14){
00048                     if(datas_title_flag){
00049                         pc.printf("\n\r Z:");
00050                         datas_title_flag=false;                        
00051                     }else{
00052                         pc.putc(data[data_count]);
00053                     }
00054                 }else if(data_num==15){
00055                     z_int = (int)data[data_count-1] + (int)data[data_count-2]*10 + (int)data[data_count-3]*100 - offset*111;
00056                     if(data[data_count-4]!='0') z_int *= -1;
00057                     z_double = (double)z_int/6; //角度補正前ふつうに
00058                     pc.printf("\n%f",z_double);
00059                     //pc.putc('\n');
00060 //                    pc.putc(data[data_count]);
00061                 }
00062                 data_count++; 
00063             }//else
00064             
00065         } //readable
00066     }//while
00067 } //main
00068 //一行72文字