with PWM
Dependencies: DebounceIn mbed
main.cpp@1:c4f9f35f4a49, 2015-07-13 (annotated)
- Committer:
- figlax
- Date:
- Mon Jul 13 23:18:00 2015 +0000
- Revision:
- 1:c4f9f35f4a49
- Parent:
- 0:fd99ff1f3a8b
Should be PWM. Not sure how recent.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cadiamond1 | 0:fd99ff1f3a8b | 1 | #include "mbed.h" |
cadiamond1 | 0:fd99ff1f3a8b | 2 | #include "DebounceIn.h" |
cadiamond1 | 0:fd99ff1f3a8b | 3 | |
cadiamond1 | 0:fd99ff1f3a8b | 4 | DigitalOut myled(LED1); //Indicator light to indicate the program is running |
cadiamond1 | 0:fd99ff1f3a8b | 5 | PwmOut motor(D2); //To MOSFET |
cadiamond1 | 0:fd99ff1f3a8b | 6 | DigitalOut indicRe(LED2); //Indicate Rear Switch State |
cadiamond1 | 0:fd99ff1f3a8b | 7 | DigitalOut indicFr(LED3); //Indicate Front Switch State |
cadiamond1 | 0:fd99ff1f3a8b | 8 | //DigitalOut indicHa(LED4); //Indicate Hall Switch State |
cadiamond1 | 0:fd99ff1f3a8b | 9 | DebounceIn swiRe(D5); //Rear Limit Switch |
cadiamond1 | 0:fd99ff1f3a8b | 10 | DebounceIn swiFr(D3); //Front Limit Switch |
cadiamond1 | 0:fd99ff1f3a8b | 11 | DebounceIn swiHa(D4); //HE Sensor Switch |
cadiamond1 | 0:fd99ff1f3a8b | 12 | |
cadiamond1 | 0:fd99ff1f3a8b | 13 | Timer t; //timer for last fr hit |
cadiamond1 | 0:fd99ff1f3a8b | 14 | int cuttFr = 1000; //ms time front |
cadiamond1 | 0:fd99ff1f3a8b | 15 | int cuttRe = 500; //ms time rear |
cadiamond1 | 0:fd99ff1f3a8b | 16 | bool prevSwi = 0; //previously hit switch -- 0 Re, 1 Fr |
cadiamond1 | 0:fd99ff1f3a8b | 17 | bool motorSo = 0; |
cadiamond1 | 0:fd99ff1f3a8b | 18 | |
cadiamond1 | 0:fd99ff1f3a8b | 19 | int count = 0; //count of cycles |
cadiamond1 | 0:fd99ff1f3a8b | 20 | |
cadiamond1 | 0:fd99ff1f3a8b | 21 | |
cadiamond1 | 0:fd99ff1f3a8b | 22 | int main() { |
cadiamond1 | 0:fd99ff1f3a8b | 23 | myled = 1; |
cadiamond1 | 0:fd99ff1f3a8b | 24 | wait(0.2); |
cadiamond1 | 0:fd99ff1f3a8b | 25 | myled = 0; |
cadiamond1 | 0:fd99ff1f3a8b | 26 | wait(0.2); |
cadiamond1 | 0:fd99ff1f3a8b | 27 | myled = 1; |
cadiamond1 | 0:fd99ff1f3a8b | 28 | wait(0.2); |
cadiamond1 | 0:fd99ff1f3a8b | 29 | myled = 0; |
cadiamond1 | 0:fd99ff1f3a8b | 30 | wait(0.2); |
cadiamond1 | 0:fd99ff1f3a8b | 31 | myled = 1; |
cadiamond1 | 0:fd99ff1f3a8b | 32 | t.start(); |
cadiamond1 | 0:fd99ff1f3a8b | 33 | printf("Start!\n"); |
cadiamond1 | 0:fd99ff1f3a8b | 34 | while(1) { |
cadiamond1 | 0:fd99ff1f3a8b | 35 | if (swiHa){ |
cadiamond1 | 0:fd99ff1f3a8b | 36 | indicFr = 0; |
cadiamond1 | 0:fd99ff1f3a8b | 37 | wait(.75); |
cadiamond1 | 0:fd99ff1f3a8b | 38 | if (swiRe==0){ |
cadiamond1 | 0:fd99ff1f3a8b | 39 | indicFr = 0; |
cadiamond1 | 0:fd99ff1f3a8b | 40 | indicRe = 1; |
figlax | 1:c4f9f35f4a49 | 41 | |
cadiamond1 | 0:fd99ff1f3a8b | 42 | myled = 0; |
cadiamond1 | 0:fd99ff1f3a8b | 43 | motor.write(0.25f); |
figlax | 1:c4f9f35f4a49 | 44 | wait(.2); |
cadiamond1 | 0:fd99ff1f3a8b | 45 | motor.write(0.35f); |
figlax | 1:c4f9f35f4a49 | 46 | wait(.2); |
cadiamond1 | 0:fd99ff1f3a8b | 47 | motor.write(0.45f); |
figlax | 1:c4f9f35f4a49 | 48 | wait(.2); |
cadiamond1 | 0:fd99ff1f3a8b | 49 | motor.write(0.55f); |
cadiamond1 | 0:fd99ff1f3a8b | 50 | wait(.1); |
cadiamond1 | 0:fd99ff1f3a8b | 51 | motor.write(0.65f); |
cadiamond1 | 0:fd99ff1f3a8b | 52 | wait(.1); |
cadiamond1 | 0:fd99ff1f3a8b | 53 | motor.write(0.75f); |
cadiamond1 | 0:fd99ff1f3a8b | 54 | wait(.1); |
cadiamond1 | 0:fd99ff1f3a8b | 55 | motor.write(0.85f); |
cadiamond1 | 0:fd99ff1f3a8b | 56 | wait(.1); |
cadiamond1 | 0:fd99ff1f3a8b | 57 | motor.write(0.95f); |
cadiamond1 | 0:fd99ff1f3a8b | 58 | wait(.1); |
cadiamond1 | 0:fd99ff1f3a8b | 59 | motor.write(1.00f); |
figlax | 1:c4f9f35f4a49 | 60 | } |
figlax | 1:c4f9f35f4a49 | 61 | |
cadiamond1 | 0:fd99ff1f3a8b | 62 | while (swiRe==0){ |
cadiamond1 | 0:fd99ff1f3a8b | 63 | indicFr = 0; |
cadiamond1 | 0:fd99ff1f3a8b | 64 | indicRe = 1; |
cadiamond1 | 0:fd99ff1f3a8b | 65 | myled = 0; |
cadiamond1 | 0:fd99ff1f3a8b | 66 | //motor.write(1.00f); |
cadiamond1 | 0:fd99ff1f3a8b | 67 | } |
cadiamond1 | 0:fd99ff1f3a8b | 68 | indicRe = 0; |
cadiamond1 | 0:fd99ff1f3a8b | 69 | indicFr = 1; |
cadiamond1 | 0:fd99ff1f3a8b | 70 | myled = 1; |
cadiamond1 | 0:fd99ff1f3a8b | 71 | //wait(1); |
cadiamond1 | 0:fd99ff1f3a8b | 72 | motor.write(0.0f); |
cadiamond1 | 0:fd99ff1f3a8b | 73 | count++; |
cadiamond1 | 0:fd99ff1f3a8b | 74 | printf("Motor State Switch!! %d cycles \n",count); |
cadiamond1 | 0:fd99ff1f3a8b | 75 | } |
cadiamond1 | 0:fd99ff1f3a8b | 76 | else { |
cadiamond1 | 0:fd99ff1f3a8b | 77 | indicRe = 1; |
cadiamond1 | 0:fd99ff1f3a8b | 78 | indicFr = 1; |
cadiamond1 | 0:fd99ff1f3a8b | 79 | } |
cadiamond1 | 0:fd99ff1f3a8b | 80 | |
cadiamond1 | 0:fd99ff1f3a8b | 81 | } |
cadiamond1 | 0:fd99ff1f3a8b | 82 | } |