This is the initial motor driver code
Dependencies: DebounceIn mbed
main.cpp@2:53177e0d0c43, 2015-07-28 (annotated)
- Committer:
- cadiamond1
- Date:
- Tue Jul 28 00:12:29 2015 +0000
- Revision:
- 2:53177e0d0c43
- Parent:
- 1:357e2c6d4e66
avec PWM
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
figlax | 0:f9546c3e2e72 | 1 | #include "mbed.h" |
figlax | 1:357e2c6d4e66 | 2 | #include "DebounceIn.h" |
figlax | 0:f9546c3e2e72 | 3 | |
figlax | 0:f9546c3e2e72 | 4 | DigitalOut myled(LED1); //Indicator light to indicate the program is running |
cadiamond1 | 2:53177e0d0c43 | 5 | PwmOut motor(D2); //To MOSFET |
cadiamond1 | 2:53177e0d0c43 | 6 | //DigitalOut motor(D2); //Direct Drive the motor |
cadiamond1 | 2:53177e0d0c43 | 7 | DigitalOut clutch(D3); //Clutch power |
figlax | 1:357e2c6d4e66 | 8 | DigitalOut indicRe(LED2); //Indicate Rear Switch State |
figlax | 1:357e2c6d4e66 | 9 | DigitalOut indicFr(LED3); //Indicate Front Switch State |
cadiamond1 | 2:53177e0d0c43 | 10 | DigitalOut indicHOLD(LED4); |
figlax | 1:357e2c6d4e66 | 11 | DebounceIn swiRe(D5); //Rear Limit Switch |
figlax | 1:357e2c6d4e66 | 12 | DebounceIn swiFr(D6); //Front Sensor Switch |
cadiamond1 | 2:53177e0d0c43 | 13 | DebounceIn swiONOFF(D15); // Reset program switch |
figlax | 1:357e2c6d4e66 | 14 | |
figlax | 1:357e2c6d4e66 | 15 | Timer t; //timer for last fr hit |
figlax | 1:357e2c6d4e66 | 16 | int cuttFr = 1000; //ms time front |
figlax | 1:357e2c6d4e66 | 17 | int cuttRe = 500; //ms time rear |
figlax | 1:357e2c6d4e66 | 18 | bool prevSwi = 0; //previously hit switch -- 0 Re, 1 Fr |
figlax | 1:357e2c6d4e66 | 19 | bool motorSo = 0; |
figlax | 1:357e2c6d4e66 | 20 | |
figlax | 1:357e2c6d4e66 | 21 | int count = 0; //count of cycles |
figlax | 1:357e2c6d4e66 | 22 | |
figlax | 0:f9546c3e2e72 | 23 | |
figlax | 0:f9546c3e2e72 | 24 | int main() { |
figlax | 0:f9546c3e2e72 | 25 | myled = 1; |
figlax | 1:357e2c6d4e66 | 26 | wait(0.2); |
figlax | 1:357e2c6d4e66 | 27 | myled = 0; |
figlax | 1:357e2c6d4e66 | 28 | wait(0.2); |
figlax | 1:357e2c6d4e66 | 29 | myled = 1; |
figlax | 1:357e2c6d4e66 | 30 | wait(0.2); |
figlax | 1:357e2c6d4e66 | 31 | myled = 0; |
figlax | 1:357e2c6d4e66 | 32 | wait(0.2); |
figlax | 1:357e2c6d4e66 | 33 | myled = 1; |
figlax | 1:357e2c6d4e66 | 34 | t.start(); |
figlax | 1:357e2c6d4e66 | 35 | printf("Start!\n"); |
figlax | 0:f9546c3e2e72 | 36 | while(1) { |
cadiamond1 | 2:53177e0d0c43 | 37 | if (swiONOFF) { |
cadiamond1 | 2:53177e0d0c43 | 38 | wait(.5); |
cadiamond1 | 2:53177e0d0c43 | 39 | while(~swiONOFF){ |
cadiamond1 | 2:53177e0d0c43 | 40 | indicHOLD = 0; |
cadiamond1 | 2:53177e0d0c43 | 41 | } |
cadiamond1 | 2:53177e0d0c43 | 42 | NVIC_SystemReset(); |
cadiamond1 | 2:53177e0d0c43 | 43 | } |
figlax | 1:357e2c6d4e66 | 44 | if (swiFr){ |
figlax | 1:357e2c6d4e66 | 45 | indicFr = 0; |
cadiamond1 | 2:53177e0d0c43 | 46 | wait(.2); |
figlax | 1:357e2c6d4e66 | 47 | if (swiRe==0){ |
figlax | 1:357e2c6d4e66 | 48 | indicFr = 0; |
figlax | 1:357e2c6d4e66 | 49 | indicRe = 1; |
cadiamond1 | 2:53177e0d0c43 | 50 | clutch = 1; |
cadiamond1 | 2:53177e0d0c43 | 51 | wait(.05); |
cadiamond1 | 2:53177e0d0c43 | 52 | motor.write(0.20f); |
cadiamond1 | 2:53177e0d0c43 | 53 | wait(.1); |
cadiamond1 | 2:53177e0d0c43 | 54 | motor.write(0.40f); |
figlax | 1:357e2c6d4e66 | 55 | wait(.1); |
cadiamond1 | 2:53177e0d0c43 | 56 | motor.write(0.60f); |
figlax | 1:357e2c6d4e66 | 57 | wait(.1); |
cadiamond1 | 2:53177e0d0c43 | 58 | motor.write(0.80f); |
figlax | 1:357e2c6d4e66 | 59 | wait(.1); |
cadiamond1 | 2:53177e0d0c43 | 60 | motor.write(1.00f); |
cadiamond1 | 2:53177e0d0c43 | 61 | } |
figlax | 1:357e2c6d4e66 | 62 | while (swiRe==0){ |
figlax | 1:357e2c6d4e66 | 63 | indicFr = 0; |
figlax | 1:357e2c6d4e66 | 64 | indicRe = 1; |
figlax | 1:357e2c6d4e66 | 65 | myled = 0; |
figlax | 1:357e2c6d4e66 | 66 | //motor.write(1.00f); |
figlax | 1:357e2c6d4e66 | 67 | } |
figlax | 1:357e2c6d4e66 | 68 | indicRe = 0; |
figlax | 1:357e2c6d4e66 | 69 | indicFr = 1; |
figlax | 1:357e2c6d4e66 | 70 | myled = 1; |
cadiamond1 | 2:53177e0d0c43 | 71 | clutch = 0; |
figlax | 1:357e2c6d4e66 | 72 | motor= 0; |
figlax | 1:357e2c6d4e66 | 73 | count++; |
figlax | 1:357e2c6d4e66 | 74 | printf("Motor State Switch!! %d cycles \n",count); |
figlax | 0:f9546c3e2e72 | 75 | } |
figlax | 1:357e2c6d4e66 | 76 | else { |
figlax | 1:357e2c6d4e66 | 77 | indicRe = 1; |
figlax | 1:357e2c6d4e66 | 78 | indicFr = 1; |
figlax | 0:f9546c3e2e72 | 79 | } |
figlax | 1:357e2c6d4e66 | 80 | |
figlax | 0:f9546c3e2e72 | 81 | } |
figlax | 0:f9546c3e2e72 | 82 | } |
figlax | 1:357e2c6d4e66 | 83 |