with PWM

Dependencies:   DebounceIn mbed

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?

UserRevisionLine numberNew 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 }