春ロボ1班(元F3RC4班+)
/
harurobo_sensor_3_8
3/8z
main.cpp@3:6ea13ffa4631, 2019-03-01 (annotated)
- Committer:
- la00noix
- Date:
- Fri Mar 01 08:03:02 2019 +0000
- Revision:
- 3:6ea13ffa4631
- Parent:
- 2:2d5326f8aa64
- Child:
- 4:04669be0ff12
a
Who changed what in which revision?
User | Revision | Line number | New 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 | 3:6ea13ffa4631 | 15 | char can_data1[2]= {0,0}; |
la00noix | 3:6ea13ffa4631 | 16 | char can_data2[2]= {0,0}; |
la00noix | 3:6ea13ffa4631 | 17 | char can_data3[2]= {0,0}; |
yuki0701 | 2:2d5326f8aa64 | 18 | char can_data4[2]= {0,0}; |
la00noix | 0:f31ecffcad13 | 19 | |
la00noix | 1:5a6c8683a7cf | 20 | int data1,data2; |
la00noix | 0:f31ecffcad13 | 21 | int dataA, dataB, dataC, dataD; |
la00noix | 0:f31ecffcad13 | 22 | |
la00noix | 0:f31ecffcad13 | 23 | void can_send() |
la00noix | 0:f31ecffcad13 | 24 | { |
la00noix | 3:6ea13ffa4631 | 25 | printf("start\n\r"); |
la00noix | 0:f31ecffcad13 | 26 | //printf("%fcm\r\n",uw1.get_dist()); |
la00noix | 0:f31ecffcad13 | 27 | |
la00noix | 3:6ea13ffa4631 | 28 | dataA = (short)(100 * uw1.get_dist()); //超音波センサーの値を1000倍して送る(受信側で0.001倍して元に戻す) |
la00noix | 3:6ea13ffa4631 | 29 | dataB = (short)(100 * uw2.get_dist()); |
la00noix | 3:6ea13ffa4631 | 30 | dataC = (short)(100 * uw3.get_dist()); |
yuki0701 | 2:2d5326f8aa64 | 31 | dataD = (short)(100 * uw4.get_dist()); |
la00noix | 0:f31ecffcad13 | 32 | |
la00noix | 3:6ea13ffa4631 | 33 | can_data1[0] = dataA >> 8; |
la00noix | 3:6ea13ffa4631 | 34 | can_data1[1] = dataA &255; |
la00noix | 0:f31ecffcad13 | 35 | |
la00noix | 3:6ea13ffa4631 | 36 | can_data2[0] = dataB >> 8; |
la00noix | 3:6ea13ffa4631 | 37 | can_data2[1] = dataB &255; |
la00noix | 0:f31ecffcad13 | 38 | |
la00noix | 3:6ea13ffa4631 | 39 | can_data3[0] = dataC >> 8; |
la00noix | 0:f31ecffcad13 | 40 | can_data3[1] = dataC &255; |
la00noix | 3:6ea13ffa4631 | 41 | |
yuki0701 | 2:2d5326f8aa64 | 42 | can_data4[0] = dataD >> 8; |
yuki0701 | 2:2d5326f8aa64 | 43 | can_data4[1] = dataD &255; |
la00noix | 0:f31ecffcad13 | 44 | |
la00noix | 3:6ea13ffa4631 | 45 | if(can1.write(CANMessage(3,can_data1,2))) { |
la00noix | 0:f31ecffcad13 | 46 | led = 1; |
la00noix | 3:6ea13ffa4631 | 47 | //printf("%fcm\r\n",uw1.get_dist()); |
la00noix | 0:f31ecffcad13 | 48 | //printf("send\n\r"); |
la00noix | 0:f31ecffcad13 | 49 | } else { |
la00noix | 3:6ea13ffa4631 | 50 | printf("uw1 not send\n\r"); |
la00noix | 3:6ea13ffa4631 | 51 | } |
la00noix | 0:f31ecffcad13 | 52 | |
la00noix | 3:6ea13ffa4631 | 53 | if(can1.write(CANMessage(4,can_data2,2))) { |
la00noix | 1:5a6c8683a7cf | 54 | led = 1; |
la00noix | 3:6ea13ffa4631 | 55 | //printf("%fcm\r\n",uw2.get_dist()); |
la00noix | 1:5a6c8683a7cf | 56 | //printf("send\n\r"); |
la00noix | 1:5a6c8683a7cf | 57 | } else { |
la00noix | 3:6ea13ffa4631 | 58 | printf("uw2 not send\n\r"); |
la00noix | 3:6ea13ffa4631 | 59 | } |
la00noix | 3:6ea13ffa4631 | 60 | |
la00noix | 1:5a6c8683a7cf | 61 | |
la00noix | 3:6ea13ffa4631 | 62 | |
la00noix | 3:6ea13ffa4631 | 63 | if(can1.write(CANMessage(6,can_data4,2))) { |
la00noix | 0:f31ecffcad13 | 64 | led = 1; |
la00noix | 3:6ea13ffa4631 | 65 | //printf("%fcm\r\n",uw4.get_dist()); |
la00noix | 0:f31ecffcad13 | 66 | //printf("send\n\r"); |
la00noix | 0:f31ecffcad13 | 67 | } else { |
la00noix | 3:6ea13ffa4631 | 68 | printf("uw4 not send\n\r"); |
la00noix | 3:6ea13ffa4631 | 69 | } |
la00noix | 0:f31ecffcad13 | 70 | |
la00noix | 3:6ea13ffa4631 | 71 | if(can1.write(CANMessage(5,can_data3,2))) { |
la00noix | 1:5a6c8683a7cf | 72 | led = 1; |
la00noix | 3:6ea13ffa4631 | 73 | //printf("%fcm\r\n",uw3.get_dist()); |
la00noix | 1:5a6c8683a7cf | 74 | //printf("send\n\r"); |
la00noix | 1:5a6c8683a7cf | 75 | } else { |
la00noix | 3:6ea13ffa4631 | 76 | printf("uw3 not send\n\r"); |
yuki0701 | 2:2d5326f8aa64 | 77 | } |
la00noix | 3:6ea13ffa4631 | 78 | 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 | 79 | |
la00noix | 1:5a6c8683a7cf | 80 | /*動確用プログラム |
la00noix | 3:6ea13ffa4631 | 81 | |
la00noix | 1:5a6c8683a7cf | 82 | data1 = 500; |
la00noix | 0:f31ecffcad13 | 83 | can_data[0] = data1>>8; |
la00noix | 0:f31ecffcad13 | 84 | can_data[1] = data1&255; |
la00noix | 0:f31ecffcad13 | 85 | |
la00noix | 0:f31ecffcad13 | 86 | if(can1.write(CANMessage(1,can_data,2))) { //IDを1にして送信 |
la00noix | 0:f31ecffcad13 | 87 | led = 1;//送信時にLED1を点灯 |
la00noix | 0:f31ecffcad13 | 88 | printf("send\n\r"); |
la00noix | 0:f31ecffcad13 | 89 | } else { |
la00noix | 0:f31ecffcad13 | 90 | printf("not send\n\r"); |
la00noix | 0:f31ecffcad13 | 91 | }*/ |
la00noix | 0:f31ecffcad13 | 92 | } |
la00noix | 1:5a6c8683a7cf | 93 | |
la00noix | 0:f31ecffcad13 | 94 | int main() |
la00noix | 0:f31ecffcad13 | 95 | { |
la00noix | 0:f31ecffcad13 | 96 | can1.frequency(1000000); |
la00noix | 0:f31ecffcad13 | 97 | //can1.frequency(10000); |
la00noix | 0:f31ecffcad13 | 98 | ticker.attach(&can_send,0.01); //can_send関数に0.001秒間隔で割り込み |
la00noix | 0:f31ecffcad13 | 99 | while(1); |
la00noix | 0:f31ecffcad13 | 100 | } |