3/8z

Dependencies:   uw_28015 mbed

Committer:
yuki0701
Date:
Fri Mar 08 07:07:37 2019 +0000
Revision:
6:e48b3555b062
Parent:
5:652583b7b136
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
la00noix 3:6ea13ffa4631 1 #include "mbed.h" #include "mbed.h"
la00noix 0:f31ecffcad13 2 #include "uw.h"
la00noix 0:f31ecffcad13 3
la00noix 0:f31ecffcad13 4 CAN can1(PA_11,PA_12,1000000);//ピン宣言
la00noix 0:f31ecffcad13 5 //CAN can1(p30,p29,1000000);
la00noix 0:f31ecffcad13 6 DigitalOut led(LED1);
la00noix 0:f31ecffcad13 7 Ticker ticker;//タイマー割り込み
la00noix 1:5a6c8683a7cf 8 char can_data[8] = {0}; //CAN送信用の配列
la00noix 0:f31ecffcad13 9
la00noix 3:6ea13ffa4631 10 Uw uw1(PF_0); //機体背面の超音波センサー(三宝アーム側)PF_1
la00noix 3:6ea13ffa4631 11 Uw uw2(PF_1); //機体正面の超音波センサー(果物アーム側)PF_0
la00noix 3:6ea13ffa4631 12 Uw uw3(PA_0); //機体左側の超音波センサーPB_4
la00noix 3:6ea13ffa4631 13 Uw uw4(PB_4); //機体右側の超音波センサーPA_0
la00noix 0:f31ecffcad13 14
la00noix 1:5a6c8683a7cf 15 int data1,data2;
la00noix 0:f31ecffcad13 16 int dataA, dataB, dataC, dataD;
la00noix 0:f31ecffcad13 17
la00noix 0:f31ecffcad13 18 void can_send()
la00noix 0:f31ecffcad13 19 {
yuki0701 6:e48b3555b062 20 // printf("start\n\r");
yuki0701 6:e48b3555b062 21 //printf("%fcm\r\n",uw4.get_dist());
la00noix 0:f31ecffcad13 22
la00noix 3:6ea13ffa4631 23 dataA = (short)(100 * uw1.get_dist()); //超音波センサーの値を1000倍して送る(受信側で0.001倍して元に戻す)
la00noix 3:6ea13ffa4631 24 dataB = (short)(100 * uw2.get_dist());
la00noix 3:6ea13ffa4631 25 dataC = (short)(100 * uw3.get_dist());
yuki0701 2:2d5326f8aa64 26 dataD = (short)(100 * uw4.get_dist());
la00noix 0:f31ecffcad13 27
yuki0701 4:04669be0ff12 28 can_data[0] = dataA >> 8;
yuki0701 4:04669be0ff12 29 can_data[1] = dataA &255;
la00noix 0:f31ecffcad13 30
yuki0701 4:04669be0ff12 31 can_data[2] = dataB >> 8;
yuki0701 4:04669be0ff12 32 can_data[3] = dataB &255;
la00noix 0:f31ecffcad13 33
yuki0701 4:04669be0ff12 34 can_data[4] = dataC >> 8;
yuki0701 4:04669be0ff12 35 can_data[5] = dataC &255;
la00noix 3:6ea13ffa4631 36
yuki0701 4:04669be0ff12 37 can_data[6] = dataD >> 8;
yuki0701 4:04669be0ff12 38 can_data[7] = dataD &255;
la00noix 0:f31ecffcad13 39
yuki0701 4:04669be0ff12 40 if(can1.write(CANMessage(3,can_data,8))) {
la00noix 0:f31ecffcad13 41 led = 1;
la00noix 3:6ea13ffa4631 42 //printf("%fcm\r\n",uw1.get_dist());
yuki0701 6:e48b3555b062 43 printf("send\n\r");
la00noix 0:f31ecffcad13 44 } else {
yuki0701 4:04669be0ff12 45 printf("uw not send\n\r");
la00noix 3:6ea13ffa4631 46 }
la00noix 3:6ea13ffa4631 47
la00noix 5:652583b7b136 48 //printf("uw1=%f uw2=%f uw3=%f uw4=%f\n\r",uw1.get_dist(),uw2.get_dist(),uw3.get_dist(),uw4.get_dist());
la00noix 1:5a6c8683a7cf 49
la00noix 1:5a6c8683a7cf 50 /*動確用プログラム
la00noix 3:6ea13ffa4631 51
la00noix 1:5a6c8683a7cf 52 data1 = 500;
la00noix 0:f31ecffcad13 53 can_data[0] = data1>>8;
la00noix 0:f31ecffcad13 54 can_data[1] = data1&255;
la00noix 0:f31ecffcad13 55
la00noix 0:f31ecffcad13 56 if(can1.write(CANMessage(1,can_data,2))) { //IDを1にして送信
la00noix 0:f31ecffcad13 57 led = 1;//送信時にLED1を点灯
la00noix 0:f31ecffcad13 58 printf("send\n\r");
la00noix 0:f31ecffcad13 59 } else {
la00noix 0:f31ecffcad13 60 printf("not send\n\r");
la00noix 0:f31ecffcad13 61 }*/
la00noix 0:f31ecffcad13 62 }
la00noix 1:5a6c8683a7cf 63
la00noix 0:f31ecffcad13 64 int main()
la00noix 0:f31ecffcad13 65 {
la00noix 0:f31ecffcad13 66 can1.frequency(1000000);
la00noix 0:f31ecffcad13 67 //can1.frequency(10000);
la00noix 0:f31ecffcad13 68 ticker.attach(&can_send,0.01); //can_send関数に0.001秒間隔で割り込み
la00noix 0:f31ecffcad13 69 while(1);
la00noix 0:f31ecffcad13 70 }