Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of hybrid_arm_main by
main.cpp@8:f756ddb8ff5b, 2016-05-13 (annotated)
- Committer:
- hare
- Date:
- Fri May 13 06:49:54 2016 +0000
- Revision:
- 8:f756ddb8ff5b
- Parent:
- 7:230f27866c1a
- Child:
- 9:57fb67f05375
2016/5/13
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hare | 6:8db4a07deff0 | 1 | #include "mbed.h" |
hare | 8:f756ddb8ff5b | 2 | #include "servo.h" |
hare | 8:f756ddb8ff5b | 3 | |
hare | 8:f756ddb8ff5b | 4 | DigitalIn start_sw(p25); |
hare | 5:08e214191e2a | 5 | |
hare | 5:08e214191e2a | 6 | PwmOut motor_up(p23); |
hare | 5:08e214191e2a | 7 | PwmOut motor_down(p22); |
hare | 5:08e214191e2a | 8 | |
hare | 5:08e214191e2a | 9 | DigitalIn encoder_A(p16); |
hare | 5:08e214191e2a | 10 | DigitalIn encoder_B(p17); |
hare | 0:6f7d125a0503 | 11 | |
hare | 5:08e214191e2a | 12 | AnalogIn sensor(p20); |
hare | 5:08e214191e2a | 13 | |
hare | 5:08e214191e2a | 14 | DigitalOut led1(LED1); |
hare | 5:08e214191e2a | 15 | DigitalOut led2(LED2); |
hare | 5:08e214191e2a | 16 | DigitalOut led3(LED3); |
hare | 5:08e214191e2a | 17 | DigitalOut led4(LED4); |
hare | 5:08e214191e2a | 18 | |
hare | 5:08e214191e2a | 19 | CAN can1(p30,p29); |
hare | 8:f756ddb8ff5b | 20 | PwmOut fan(p21); |
hare | 2:aa7e8b22b32c | 21 | |
hare | 6:8db4a07deff0 | 22 | Ticker can_sub; |
hare | 6:8db4a07deff0 | 23 | |
hare | 8:f756ddb8ff5b | 24 | char send_data[4]={}; |
hare | 8:f756ddb8ff5b | 25 | int pattern=1; |
hare | 8:f756ddb8ff5b | 26 | int degree=0; |
hare | 6:8db4a07deff0 | 27 | int river_eco_loca=0; |
hare | 6:8db4a07deff0 | 28 | void receive(){ |
hare | 6:8db4a07deff0 | 29 | CANMessage msg; |
hare | 6:8db4a07deff0 | 30 | if(can1.read(msg)){ |
hare | 7:230f27866c1a | 31 | if(msg.id==5){ |
hare | 8:f756ddb8ff5b | 32 | river_eco_loca=msg.data[1]; |
hare | 8:f756ddb8ff5b | 33 | //(short)((msg.data[2]<<8)|(msg.data[3])); |
hare | 8:f756ddb8ff5b | 34 | printf("%river=%d\n\r",river_eco_loca); |
hare | 7:230f27866c1a | 35 | led4=!led4; |
hare | 6:8db4a07deff0 | 36 | } |
hare | 8:f756ddb8ff5b | 37 | send_data[0] = degree >> 8; |
hare | 8:f756ddb8ff5b | 38 | send_data[1] = degree & 255; |
hare | 8:f756ddb8ff5b | 39 | send_data[2] = pattern; |
hare | 8:f756ddb8ff5b | 40 | can1.write(CANMessage(6, send_data, 3)); |
hare | 6:8db4a07deff0 | 41 | } |
hare | 8:f756ddb8ff5b | 42 | // printf("1\n\r"); |
hare | 6:8db4a07deff0 | 43 | } |
hare | 6:8db4a07deff0 | 44 | int fan_power=1100; |
hare | 6:8db4a07deff0 | 45 | |
hare | 0:6f7d125a0503 | 46 | int main(){ |
hare | 1:0f1e77683604 | 47 | motor_up.period_us(20); |
hare | 1:0f1e77683604 | 48 | motor_down.period_us(20); |
hare | 8:f756ddb8ff5b | 49 | master.baud(115200); |
hare | 8:f756ddb8ff5b | 50 | master.format(8,Serial::Even,1); |
hare | 8:f756ddb8ff5b | 51 | |
hare | 8:f756ddb8ff5b | 52 | can_sub.attach_us(&receive,20000); |
hare | 8:f756ddb8ff5b | 53 | can1.frequency(1000000); |
hare | 0:6f7d125a0503 | 54 | motor_up=0; |
hare | 0:6f7d125a0503 | 55 | motor_down=0; |
hare | 8:f756ddb8ff5b | 56 | degree=90; |
hare | 6:8db4a07deff0 | 57 | wait(0.3); |
hare | 1:0f1e77683604 | 58 | fan.period_ms(20); |
hare | 1:0f1e77683604 | 59 | fan.pulsewidth_us(1100); |
hare | 1:0f1e77683604 | 60 | printf("connect battery in 5sec please\n\r"); |
hare | 2:aa7e8b22b32c | 61 | for(int p=0;p<5;p++){ |
hare | 2:aa7e8b22b32c | 62 | led1=1; |
hare | 2:aa7e8b22b32c | 63 | wait(0.6); |
hare | 2:aa7e8b22b32c | 64 | led1=0; |
hare | 2:aa7e8b22b32c | 65 | wait(0.4);} // connect ripo in 5s; |
hare | 2:aa7e8b22b32c | 66 | |
hare | 2:aa7e8b22b32c | 67 | printf("4sec is count down\n\r"); |
hare | 2:aa7e8b22b32c | 68 | for(int p=0;p<4;p++){ |
hare | 1:0f1e77683604 | 69 | led1=1; |
hare | 2:aa7e8b22b32c | 70 | led2=1; |
hare | 2:aa7e8b22b32c | 71 | wait(0.6); |
hare | 2:aa7e8b22b32c | 72 | led2=0; |
hare | 2:aa7e8b22b32c | 73 | wait(0.4); } |
hare | 1:0f1e77683604 | 74 | printf("fan and is running\n\r"); |
hare | 2:aa7e8b22b32c | 75 | led1=1; |
hare | 2:aa7e8b22b32c | 76 | led2=1; |
hare | 2:aa7e8b22b32c | 77 | led3=1; |
hare | 6:8db4a07deff0 | 78 | |
hare | 0:6f7d125a0503 | 79 | while(1){ |
hare | 6:8db4a07deff0 | 80 | switch(river_eco_loca){ |
hare | 4:5a6706467b10 | 81 | case 0: |
hare | 4:5a6706467b10 | 82 | fan_power=1100; |
hare | 4:5a6706467b10 | 83 | break; |
hare | 4:5a6706467b10 | 84 | case 1: |
hare | 8:f756ddb8ff5b | 85 | fan_power=1500; //start |
hare | 4:5a6706467b10 | 86 | break; |
hare | 4:5a6706467b10 | 87 | case 2: |
hare | 8:f756ddb8ff5b | 88 | fan_power=1700;degree=70; |
hare | 6:8db4a07deff0 | 89 | break; |
hare | 6:8db4a07deff0 | 90 | case 3: |
hare | 6:8db4a07deff0 | 91 | fan_power=1100; |
hare | 6:8db4a07deff0 | 92 | led1=0;led2=0;led3=0; |
hare | 4:5a6706467b10 | 93 | break; |
hare | 6:8db4a07deff0 | 94 | default: |
hare | 6:8db4a07deff0 | 95 | fan_power=1100; |
hare | 6:8db4a07deff0 | 96 | break;} |
hare | 6:8db4a07deff0 | 97 | fan.pulsewidth_us(fan_power); |
hare | 6:8db4a07deff0 | 98 | } |
hare | 6:8db4a07deff0 | 99 | } |