twe-liteでのmain側プログラム。要改良

Dependencies:   mbed

Committer:
Joeatsumi
Date:
Fri Feb 23 04:20:23 2018 +0000
Revision:
0:dd2e7831df58
2018/2/23

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Joeatsumi 0:dd2e7831df58 1 #include "mbed.h"
Joeatsumi 0:dd2e7831df58 2
Joeatsumi 0:dd2e7831df58 3 #define DATA_SIZE 10
Joeatsumi 0:dd2e7831df58 4
Joeatsumi 0:dd2e7831df58 5 DigitalOut myled(LED1);
Joeatsumi 0:dd2e7831df58 6
Joeatsumi 0:dd2e7831df58 7 Serial pc(USBTX,USBRX);
Joeatsumi 0:dd2e7831df58 8 Serial twe(p9,p10);
Joeatsumi 0:dd2e7831df58 9
Joeatsumi 0:dd2e7831df58 10 Ticker flipper;
Joeatsumi 0:dd2e7831df58 11
Joeatsumi 0:dd2e7831df58 12 char rpm_array[3] = "00";//実は末尾にnullがあるので、要素が4つでも配列では5つの箱を用意している
Joeatsumi 0:dd2e7831df58 13 char dam;
Joeatsumi 0:dd2e7831df58 14
Joeatsumi 0:dd2e7831df58 15 int rpm=0;
Joeatsumi 0:dd2e7831df58 16
Joeatsumi 0:dd2e7831df58 17
Joeatsumi 0:dd2e7831df58 18 void send(){
Joeatsumi 0:dd2e7831df58 19
Joeatsumi 0:dd2e7831df58 20 char DATA[DATA_SIZE] = {':', '0', '1', '0', '1', '3', '9', 'X', '\r', '\n'};
Joeatsumi 0:dd2e7831df58 21 //04
Joeatsumi 0:dd2e7831df58 22 /*:は送信時に必要なヘッダー。78は相手のID(0x78)。01は送信コマンドとして必要。
Joeatsumi 0:dd2e7831df58 23 39は任意の値。Xはチェックサムの省略形。 \r\nは改行コマンド*/
Joeatsumi 0:dd2e7831df58 24
Joeatsumi 0:dd2e7831df58 25 for (int i = 0 ; i < DATA_SIZE ; i++){
Joeatsumi 0:dd2e7831df58 26 twe.putc(DATA[i]);
Joeatsumi 0:dd2e7831df58 27 myled=1;
Joeatsumi 0:dd2e7831df58 28
Joeatsumi 0:dd2e7831df58 29 }
Joeatsumi 0:dd2e7831df58 30
Joeatsumi 0:dd2e7831df58 31 }
Joeatsumi 0:dd2e7831df58 32
Joeatsumi 0:dd2e7831df58 33
Joeatsumi 0:dd2e7831df58 34 int main() {
Joeatsumi 0:dd2e7831df58 35 pc.baud(115200);
Joeatsumi 0:dd2e7831df58 36 twe.baud(115200);
Joeatsumi 0:dd2e7831df58 37
Joeatsumi 0:dd2e7831df58 38 flipper.attach(&send, 0.05);
Joeatsumi 0:dd2e7831df58 39
Joeatsumi 0:dd2e7831df58 40
Joeatsumi 0:dd2e7831df58 41 while(1) {
Joeatsumi 0:dd2e7831df58 42 // pc.putc(twe.getc());
Joeatsumi 0:dd2e7831df58 43
Joeatsumi 0:dd2e7831df58 44
Joeatsumi 0:dd2e7831df58 45 if(twe.getc()==':'){
Joeatsumi 0:dd2e7831df58 46 if(twe.getc()=='0'){
Joeatsumi 0:dd2e7831df58 47 if(twe.getc()=='1'){
Joeatsumi 0:dd2e7831df58 48 dam=twe.getc();
Joeatsumi 0:dd2e7831df58 49 dam=twe.getc();
Joeatsumi 0:dd2e7831df58 50
Joeatsumi 0:dd2e7831df58 51 for (int i = 0; i <= 2; i++) {
Joeatsumi 0:dd2e7831df58 52 rpm_array[i] =twe.getc();//高度の受信rpm+1000の値を文字列として受け取る
Joeatsumi 0:dd2e7831df58 53 }
Joeatsumi 0:dd2e7831df58 54
Joeatsumi 0:dd2e7831df58 55 rpm = atoi(rpm_array);
Joeatsumi 0:dd2e7831df58 56
Joeatsumi 0:dd2e7831df58 57 pc.printf("%d\r\n",rpm);
Joeatsumi 0:dd2e7831df58 58
Joeatsumi 0:dd2e7831df58 59 }//if(twe.getc()=='0')
Joeatsumi 0:dd2e7831df58 60 }//if(twe.getc()==':')
Joeatsumi 0:dd2e7831df58 61 }
Joeatsumi 0:dd2e7831df58 62
Joeatsumi 0:dd2e7831df58 63
Joeatsumi 0:dd2e7831df58 64 }//while
Joeatsumi 0:dd2e7831df58 65
Joeatsumi 0:dd2e7831df58 66
Joeatsumi 0:dd2e7831df58 67
Joeatsumi 0:dd2e7831df58 68 }//main