twe-liteを用いた実験用プログラム。回転数を回転数側から受信する目的で書いた。

Dependencies:   mbed

Fork of twe-lite_main by Atsumi Toda

Committer:
Joeatsumi
Date:
Sun Feb 25 05:33:25 2018 +0000
Revision:
1:107266d60757
Parent:
0:dd2e7831df58
2018/2/25

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 1:107266d60757 12 char rpm_array[5] = "0000";//実は末尾に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 void send(){
Joeatsumi 0:dd2e7831df58 18
Joeatsumi 0:dd2e7831df58 19 char DATA[DATA_SIZE] = {':', '0', '1', '0', '1', '3', '9', 'X', '\r', '\n'};
Joeatsumi 0:dd2e7831df58 20 //04
Joeatsumi 0:dd2e7831df58 21 /*:は送信時に必要なヘッダー。78は相手のID(0x78)。01は送信コマンドとして必要。
Joeatsumi 0:dd2e7831df58 22 39は任意の値。Xはチェックサムの省略形。 \r\nは改行コマンド*/
Joeatsumi 0:dd2e7831df58 23
Joeatsumi 0:dd2e7831df58 24 for (int i = 0 ; i < DATA_SIZE ; i++){
Joeatsumi 0:dd2e7831df58 25 twe.putc(DATA[i]);
Joeatsumi 0:dd2e7831df58 26 myled=1;
Joeatsumi 0:dd2e7831df58 27
Joeatsumi 0:dd2e7831df58 28 }
Joeatsumi 0:dd2e7831df58 29
Joeatsumi 1:107266d60757 30
Joeatsumi 1:107266d60757 31
Joeatsumi 0:dd2e7831df58 32 }
Joeatsumi 0:dd2e7831df58 33
Joeatsumi 0:dd2e7831df58 34
Joeatsumi 0:dd2e7831df58 35 int main() {
Joeatsumi 0:dd2e7831df58 36 pc.baud(115200);
Joeatsumi 0:dd2e7831df58 37 twe.baud(115200);
Joeatsumi 0:dd2e7831df58 38
Joeatsumi 0:dd2e7831df58 39 flipper.attach(&send, 0.05);
Joeatsumi 0:dd2e7831df58 40
Joeatsumi 0:dd2e7831df58 41
Joeatsumi 0:dd2e7831df58 42 while(1) {
Joeatsumi 0:dd2e7831df58 43 // pc.putc(twe.getc());
Joeatsumi 0:dd2e7831df58 44
Joeatsumi 0:dd2e7831df58 45
Joeatsumi 0:dd2e7831df58 46 if(twe.getc()==':'){
Joeatsumi 0:dd2e7831df58 47 if(twe.getc()=='0'){
Joeatsumi 0:dd2e7831df58 48 if(twe.getc()=='1'){
Joeatsumi 0:dd2e7831df58 49 dam=twe.getc();
Joeatsumi 0:dd2e7831df58 50 dam=twe.getc();
Joeatsumi 0:dd2e7831df58 51
Joeatsumi 1:107266d60757 52
Joeatsumi 1:107266d60757 53 for (int i = 0; i < 4; i++) {
Joeatsumi 0:dd2e7831df58 54 rpm_array[i] =twe.getc();//高度の受信rpm+1000の値を文字列として受け取る
Joeatsumi 0:dd2e7831df58 55 }
Joeatsumi 0:dd2e7831df58 56
Joeatsumi 0:dd2e7831df58 57 rpm = atoi(rpm_array);
Joeatsumi 0:dd2e7831df58 58
Joeatsumi 1:107266d60757 59 rpm-=1000;
Joeatsumi 0:dd2e7831df58 60 pc.printf("%d\r\n",rpm);
Joeatsumi 0:dd2e7831df58 61
Joeatsumi 0:dd2e7831df58 62 }//if(twe.getc()=='0')
Joeatsumi 0:dd2e7831df58 63 }//if(twe.getc()==':')
Joeatsumi 0:dd2e7831df58 64 }
Joeatsumi 0:dd2e7831df58 65
Joeatsumi 0:dd2e7831df58 66
Joeatsumi 0:dd2e7831df58 67 }//while
Joeatsumi 0:dd2e7831df58 68
Joeatsumi 0:dd2e7831df58 69
Joeatsumi 0:dd2e7831df58 70
Joeatsumi 0:dd2e7831df58 71 }//main