Završni rad NXP Cup
Dependencies: HBridgeDCMotor mbed FastPWM AutomationElements
main.cpp@4:d3c4924179f0, 2016-06-03 (annotated)
- Committer:
- btomic
- Date:
- Fri Jun 03 16:58:32 2016 +0000
- Revision:
- 4:d3c4924179f0
- Parent:
- 3:fc17c2ad6b81
- Child:
- 5:d3bdc0672891
testna verzija 5
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
btomic | 0:1b75c7a92a5e | 1 | #include "mbed.h" |
btomic | 0:1b75c7a92a5e | 2 | #include "HBridgeDCMotor.h" |
btomic | 4:d3c4924179f0 | 3 | #include "FastPWM.h" |
btomic | 0:1b75c7a92a5e | 4 | |
btomic | 0:1b75c7a92a5e | 5 | DigitalIn fault(PTE20); |
btomic | 4:d3c4924179f0 | 6 | DigitalIn sw1(PTC13); |
btomic | 4:d3c4924179f0 | 7 | DigitalIn sw2(PTC17); |
btomic | 1:50fc6689148e | 8 | AnalogIn a_feedback(PTE23); |
btomic | 1:50fc6689148e | 9 | AnalogIn b_feedback(PTE22); |
btomic | 4:d3c4924179f0 | 10 | AnalogIn pot1(PTB3); |
btomic | 4:d3c4924179f0 | 11 | AnalogIn pot2(PTB2); |
btomic | 4:d3c4924179f0 | 12 | |
btomic | 4:d3c4924179f0 | 13 | Serial pc(PTA2, PTA1); |
btomic | 4:d3c4924179f0 | 14 | |
btomic | 0:1b75c7a92a5e | 15 | |
btomic | 2:25b8be806708 | 16 | DigitalOut enable(PTE21); |
btomic | 2:25b8be806708 | 17 | DigitalOut d1(PTB8); |
btomic | 1:50fc6689148e | 18 | DigitalOut d2(PTB9); |
btomic | 1:50fc6689148e | 19 | DigitalOut d3(PTB10); |
btomic | 1:50fc6689148e | 20 | DigitalOut d4(PTB11); |
btomic | 1:50fc6689148e | 21 | //DigitalOut red(PTB18); |
btomic | 1:50fc6689148e | 22 | //DigitalOut green(PTB19); |
btomic | 1:50fc6689148e | 23 | //DigitalOut blue(PTD1); |
btomic | 1:50fc6689148e | 24 | |
btomic | 1:50fc6689148e | 25 | //HBridgeDCMotor motor_a(PTC3, PTC4); |
btomic | 1:50fc6689148e | 26 | //HBridgeDCMotor motor_b(PTC1, PTC2); |
btomic | 0:1b75c7a92a5e | 27 | |
btomic | 0:1b75c7a92a5e | 28 | PwmOut servo(PTB0); |
btomic | 2:25b8be806708 | 29 | |
btomic | 4:d3c4924179f0 | 30 | FastPWM motor1(PTC3); |
btomic | 2:25b8be806708 | 31 | DigitalOut mot(PTC4); |
btomic | 4:d3c4924179f0 | 32 | FastPWM motor2(PTC1); |
btomic | 2:25b8be806708 | 33 | DigitalOut mot22(PTC2); |
btomic | 2:25b8be806708 | 34 | |
btomic | 1:50fc6689148e | 35 | |
btomic | 1:50fc6689148e | 36 | |
btomic | 3:fc17c2ad6b81 | 37 | void steerServo(float angleDegrees){ |
btomic | 4:d3c4924179f0 | 38 | float minPw = 0.0005, maxPw = 0.0025, minAng = -90, maxAng = 90, pulse = 0; |
btomic | 3:fc17c2ad6b81 | 39 | pulse = minPw + ((maxPw - minPw)/(maxAng - minAng))*(angleDegrees - minAng); |
btomic | 3:fc17c2ad6b81 | 40 | servo.pulsewidth(pulse); |
btomic | 1:50fc6689148e | 41 | } |
btomic | 0:1b75c7a92a5e | 42 | |
btomic | 0:1b75c7a92a5e | 43 | int main() { |
btomic | 4:d3c4924179f0 | 44 | float x=0, pw =0, PWmin=-90, PWmax=90; |
btomic | 1:50fc6689148e | 45 | float angleDegrees = 0; |
btomic | 1:50fc6689148e | 46 | float sampleTime = 50e-3, switchingFrequency = 5000, rampTime = 3; |
btomic | 2:25b8be806708 | 47 | servo.period(1.0/50); |
btomic | 4:d3c4924179f0 | 48 | |
btomic | 4:d3c4924179f0 | 49 | steerServo(angleDegrees); |
btomic | 4:d3c4924179f0 | 50 | motor1.period_us(500); |
btomic | 4:d3c4924179f0 | 51 | motor2.period_us(500); |
btomic | 4:d3c4924179f0 | 52 | // motor_a.configure(sampleTime, switchingFrequency, rampTime, rampTime); |
btomic | 4:d3c4924179f0 | 53 | // motor_b.configure(sampleTime, switchingFrequency, rampTime, rampTime); |
btomic | 2:25b8be806708 | 54 | wait(5); |
btomic | 4:d3c4924179f0 | 55 | |
btomic | 0:1b75c7a92a5e | 56 | while(1){ |
btomic | 4:d3c4924179f0 | 57 | x = pot1; |
btomic | 4:d3c4924179f0 | 58 | angleDegrees = PWmin + (PWmax - PWmin) * pot1; |
btomic | 4:d3c4924179f0 | 59 | enable = 1; |
btomic | 4:d3c4924179f0 | 60 | // if(sw1==1 && sw2==0) enable = sw1; |
btomic | 4:d3c4924179f0 | 61 | // else enable = 0; |
btomic | 4:d3c4924179f0 | 62 | |
btomic | 2:25b8be806708 | 63 | mot = 0; |
btomic | 2:25b8be806708 | 64 | mot22 = 0; |
btomic | 4:d3c4924179f0 | 65 | motor1.pulsewidth_us(100); |
btomic | 1:50fc6689148e | 66 | |
btomic | 4:d3c4924179f0 | 67 | motor2.pulsewidth_us(100); |
btomic | 4:d3c4924179f0 | 68 | |
btomic | 4:d3c4924179f0 | 69 | |
btomic | 4:d3c4924179f0 | 70 | |
btomic | 4:d3c4924179f0 | 71 | steerServo(angleDegrees); |
btomic | 4:d3c4924179f0 | 72 | pc.printf("pot1: %f angleDegrees: %f\r", x, angleDegrees); |
btomic | 1:50fc6689148e | 73 | |
btomic | 4:d3c4924179f0 | 74 | // motor_a.setDutyCycle(0.2); |
btomic | 4:d3c4924179f0 | 75 | // motor_b.setDutyCycle(0.2); |
btomic | 1:50fc6689148e | 76 | |
btomic | 4:d3c4924179f0 | 77 | if(x<0.501 && x>0.499) {d1=1; d2=1; d3=1; d4=1;} |
btomic | 4:d3c4924179f0 | 78 | else {d1=1; d2=0; d3=0; d4=1;} |
btomic | 1:50fc6689148e | 79 | |
btomic | 0:1b75c7a92a5e | 80 | } |
btomic | 1:50fc6689148e | 81 | enable = 0; |
btomic | 1:50fc6689148e | 82 | // red = 1; |
btomic | 1:50fc6689148e | 83 | |
btomic | 0:1b75c7a92a5e | 84 | |
btomic | 0:1b75c7a92a5e | 85 | } |