This is the initial motor driver code

Dependencies:   DebounceIn mbed

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?

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