春ロボ1班(元F3RC4班+)
/
harurobo-Nucleo-sensor_2_6
harurobo_sensor
main.cpp@1:e208df501049, 2019-02-06 (annotated)
- Committer:
- yuki0701
- Date:
- Wed Feb 06 05:12:33 2019 +0000
- Revision:
- 1:e208df501049
- Parent:
- 0:0deb9ab4a262
a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yuki0701 | 0:0deb9ab4a262 | 1 | #include "mbed.h" |
yuki0701 | 0:0deb9ab4a262 | 2 | #include "uw.h" |
yuki0701 | 0:0deb9ab4a262 | 3 | |
yuki0701 | 0:0deb9ab4a262 | 4 | //CAN can1(p30,p29,1000000); |
yuki0701 | 0:0deb9ab4a262 | 5 | CAN can1(PA_11,PA_12,1000000); |
yuki0701 | 0:0deb9ab4a262 | 6 | DigitalOut led(LED1); |
yuki0701 | 0:0deb9ab4a262 | 7 | Ticker ticker; |
yuki0701 | 0:0deb9ab4a262 | 8 | Uw uw1(PF_1); //機体背面の超音波センサー(三宝アーム側) |
yuki0701 | 0:0deb9ab4a262 | 9 | Uw uw2(PF_0); //機体正面の超音波センサー(果物アーム側) |
yuki0701 | 0:0deb9ab4a262 | 10 | Uw uw3(PB_4); //機体左側の超音波センサー |
yuki0701 | 0:0deb9ab4a262 | 11 | Uw uw4(PA_0); //機体右側の超音波センサー |
yuki0701 | 0:0deb9ab4a262 | 12 | |
yuki0701 | 1:e208df501049 | 13 | char can_data1[2]={0,0}; |
yuki0701 | 0:0deb9ab4a262 | 14 | //char can_data2[2]={0,0}; |
yuki0701 | 1:e208df501049 | 15 | //char can_data3[2]={0,0}; |
yuki0701 | 0:0deb9ab4a262 | 16 | //char can_data4[2]={0,0}; |
yuki0701 | 0:0deb9ab4a262 | 17 | int x; |
yuki0701 | 0:0deb9ab4a262 | 18 | int data1, data2, data3, data4; |
yuki0701 | 0:0deb9ab4a262 | 19 | |
yuki0701 | 0:0deb9ab4a262 | 20 | void can_read(){ |
yuki0701 | 0:0deb9ab4a262 | 21 | |
yuki0701 | 0:0deb9ab4a262 | 22 | CANMessage msg; |
yuki0701 | 0:0deb9ab4a262 | 23 | |
yuki0701 | 0:0deb9ab4a262 | 24 | if(can1.read(msg)){ |
yuki0701 | 0:0deb9ab4a262 | 25 | |
yuki0701 | 0:0deb9ab4a262 | 26 | if(msg.id == 1){ |
yuki0701 | 0:0deb9ab4a262 | 27 | led = 1; |
yuki0701 | 0:0deb9ab4a262 | 28 | x = (short)((msg.data[0]<<8) | msg.data[1]); |
yuki0701 | 0:0deb9ab4a262 | 29 | printf("%d:%d,%d\n\r",msg.data[0],msg.data[1],x); |
yuki0701 | 0:0deb9ab4a262 | 30 | } |
yuki0701 | 0:0deb9ab4a262 | 31 | } |
yuki0701 | 0:0deb9ab4a262 | 32 | } |
yuki0701 | 0:0deb9ab4a262 | 33 | |
yuki0701 | 0:0deb9ab4a262 | 34 | void can_send(){ |
yuki0701 | 0:0deb9ab4a262 | 35 | |
yuki0701 | 0:0deb9ab4a262 | 36 | //printf("%f\n\r",uw1.get_dist()); |
yuki0701 | 0:0deb9ab4a262 | 37 | |
yuki0701 | 1:e208df501049 | 38 | data1 = (short)(100 * uw1.get_dist()); //超音波センサーの値を1000倍して送る(受信側で0.001倍して元に戻す) |
yuki0701 | 0:0deb9ab4a262 | 39 | //data2 = (short)1000 * uw2.get_dist(); |
yuki0701 | 1:e208df501049 | 40 | //data3 = 100 * uw3.get_dist(); |
yuki0701 | 1:e208df501049 | 41 | //data4 = 100 * uw4.get_dist(); |
yuki0701 | 0:0deb9ab4a262 | 42 | |
yuki0701 | 1:e208df501049 | 43 | can_data1[0] = data1 >> 8; |
yuki0701 | 1:e208df501049 | 44 | can_data1[1] = data1 &255; |
yuki0701 | 0:0deb9ab4a262 | 45 | |
yuki0701 | 0:0deb9ab4a262 | 46 | //can_data2[0] = data2 >> 8; |
yuki0701 | 0:0deb9ab4a262 | 47 | //can_data2[1] = data2 &255; |
yuki0701 | 0:0deb9ab4a262 | 48 | |
yuki0701 | 1:e208df501049 | 49 | //can_data3[0] = data3 >> 8; |
yuki0701 | 1:e208df501049 | 50 | //can_data3[1] = data3 &255; |
yuki0701 | 0:0deb9ab4a262 | 51 | |
yuki0701 | 1:e208df501049 | 52 | //can_data4[0] = data4 >> 8; |
yuki0701 | 1:e208df501049 | 53 | //can_data4[1] = data4 &255; |
yuki0701 | 0:0deb9ab4a262 | 54 | |
yuki0701 | 1:e208df501049 | 55 | if(can1.write(CANMessage(1,can_data1,2))){ |
yuki0701 | 0:0deb9ab4a262 | 56 | led = 1; |
yuki0701 | 1:e208df501049 | 57 | //printf("send-data1 = %f", uw1.get_dist()); |
yuki0701 | 1:e208df501049 | 58 | printf("send-data1 = %f\n\r", 0.1 * data1); |
yuki0701 | 1:e208df501049 | 59 | } |
yuki0701 | 0:0deb9ab4a262 | 60 | // if(can1.write(CANMessage(2,can_data2,2))){ |
yuki0701 | 0:0deb9ab4a262 | 61 | // led = 1; |
yuki0701 | 0:0deb9ab4a262 | 62 | //printf("send-data2\n\r"); |
yuki0701 | 0:0deb9ab4a262 | 63 | // } |
yuki0701 | 1:e208df501049 | 64 | /*if(can1.write(CANMessage(3,can_data3,8))){ |
yuki0701 | 0:0deb9ab4a262 | 65 | led = 1; |
yuki0701 | 1:e208df501049 | 66 | printf("send-data3 = %f\n\r", 0.1 * data3); |
yuki0701 | 1:e208df501049 | 67 | }*/ |
yuki0701 | 0:0deb9ab4a262 | 68 | /*if(can1.write(CANMessage(4,can_data4,2))){ |
yuki0701 | 1:e208df501049 | 69 | led = 1; |
yuki0701 | 1:e208df501049 | 70 | printf("send-data4 = %f\n\r", 0.1 * data4); |
yuki0701 | 0:0deb9ab4a262 | 71 | }*/ |
yuki0701 | 0:0deb9ab4a262 | 72 | led = 0; |
yuki0701 | 0:0deb9ab4a262 | 73 | //printf("send-data1 = %f, send-data2 = %f\n\r", 0.01 * data1, 0.01 * data2); |
yuki0701 | 0:0deb9ab4a262 | 74 | } |
yuki0701 | 0:0deb9ab4a262 | 75 | |
yuki0701 | 0:0deb9ab4a262 | 76 | |
yuki0701 | 0:0deb9ab4a262 | 77 | |
yuki0701 | 0:0deb9ab4a262 | 78 | int main() { |
yuki0701 | 0:0deb9ab4a262 | 79 | |
yuki0701 | 1:e208df501049 | 80 | // ticker.attach(&can_send,0.01); |
yuki0701 | 0:0deb9ab4a262 | 81 | //ticker.attach(&can_read,0.1); |
yuki0701 | 0:0deb9ab4a262 | 82 | |
yuki0701 | 1:e208df501049 | 83 | while(1){ |
yuki0701 | 1:e208df501049 | 84 | can_send(); |
yuki0701 | 0:0deb9ab4a262 | 85 | //printf("%f\n\r",uw3.get_dist()); |
yuki0701 | 1:e208df501049 | 86 | } |
yuki0701 | 0:0deb9ab4a262 | 87 | |
yuki0701 | 0:0deb9ab4a262 | 88 | } |