Rachel Ireland-Jones / Mbed OS FinalYear0
Committer:
Mikebob
Date:
Tue Nov 12 12:40:11 2019 +0000
Revision:
6:c23ecdd1a581
Parent:
5:fdc550ee3b6e
Child:
7:9c77eca4158a
v7

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mikebob 0:81f6a19a5a44 1 /*
Mikebob 6:c23ecdd1a581 2 Version 7 – Mike edit
Mikebob 0:81f6a19a5a44 3 */
Mikebob 0:81f6a19a5a44 4
Mikebob 0:81f6a19a5a44 5 #include "mbed.h"
jaffacat 5:fdc550ee3b6e 6
Mikebob 0:81f6a19a5a44 7 //Motor PWM (speed)
Mikebob 0:81f6a19a5a44 8 PwmOut PWMA(PA_8);
Mikebob 0:81f6a19a5a44 9 PwmOut PWMB(PB_4);
jaffacat 5:fdc550ee3b6e 10
Mikebob 0:81f6a19a5a44 11 //Motor Direction
Mikebob 0:81f6a19a5a44 12 DigitalOut DIRA(PA_9);
Mikebob 0:81f6a19a5a44 13 DigitalOut DIRB(PB_10);
jaffacat 5:fdc550ee3b6e 14
Mikebob 0:81f6a19a5a44 15 //On board switch
Mikebob 0:81f6a19a5a44 16 DigitalIn SW1(USER_BUTTON);
jaffacat 5:fdc550ee3b6e 17
Mikebob 0:81f6a19a5a44 18 //Use the serial object so we can use higher speeds
Mikebob 0:81f6a19a5a44 19 Serial terminal(USBTX, USBRX);
jaffacat 5:fdc550ee3b6e 20
Mikebob 0:81f6a19a5a44 21 //Timer used for measuring speeds
jaffacat 5:fdc550ee3b6e 22 Timer timer;
jaffacat 5:fdc550ee3b6e 23
Mikebob 0:81f6a19a5a44 24 //Enumerated types
Mikebob 0:81f6a19a5a44 25 enum DIRECTION {FORWARD=0, REVERSE};
Mikebob 0:81f6a19a5a44 26 enum PULSE {NOPULSE=0, PULSE};
Mikebob 0:81f6a19a5a44 27 enum SWITCHSTATE {PRESSED=0, RELEASED};
jaffacat 5:fdc550ee3b6e 28
Mikebob 0:81f6a19a5a44 29 //Debug GPIO
Mikebob 0:81f6a19a5a44 30 DigitalOut probe(D10);
jaffacat 5:fdc550ee3b6e 31
Mikebob 0:81f6a19a5a44 32 //Duty cycles
Mikebob 0:81f6a19a5a44 33 float dutyA = 1.0f; //100%
Mikebob 4:4aa46b70064a 34 float dutyB = 1.0f; //100%
jaffacat 5:fdc550ee3b6e 35
Mikebob 0:81f6a19a5a44 36 int main()
Mikebob 0:81f6a19a5a44 37 {
jaffacat 5:fdc550ee3b6e 38 //Configure the terminal to high speed
Mikebob 0:81f6a19a5a44 39 terminal.baud(115200);
jaffacat 5:fdc550ee3b6e 40
Mikebob 0:81f6a19a5a44 41 //Set initial motor direction
Mikebob 0:81f6a19a5a44 42 DIRA = FORWARD;
Mikebob 0:81f6a19a5a44 43 DIRB = FORWARD;
jaffacat 5:fdc550ee3b6e 44
Mikebob 0:81f6a19a5a44 45 //Set motor period to 100Hz
Mikebob 0:81f6a19a5a44 46 PWMA.period_ms(10);
Mikebob 0:81f6a19a5a44 47 PWMB.period_ms(10);
jaffacat 5:fdc550ee3b6e 48
Mikebob 0:81f6a19a5a44 49 //Set initial motor speed to stop
Mikebob 0:81f6a19a5a44 50 PWMA.write(0.0f); //0% duty cycle
Mikebob 0:81f6a19a5a44 51 PWMB.write(0.0f); //0% duty cycle
jaffacat 5:fdc550ee3b6e 52
Mikebob 0:81f6a19a5a44 53 //Wait for USER button (blue pull-down switch) to start
Mikebob 0:81f6a19a5a44 54 terminal.puts("Press USER button to start");
jaffacat 5:fdc550ee3b6e 55 while (SW1 == RELEASED);
jaffacat 5:fdc550ee3b6e 56
Mikebob 0:81f6a19a5a44 57 //Set initial motor speed to stop {
jaffacat 5:fdc550ee3b6e 58 for(float ramp = 0.0f; ramp <= 1.0f ; ramp += 0.2)
Mikebob 0:81f6a19a5a44 59 {
Mikebob 0:81f6a19a5a44 60 PWMA.write(ramp); //Set duty cycle y
Mikebob 4:4aa46b70064a 61 PWMB.write(ramp); //Set duty cycle y
Mikebob 0:81f6a19a5a44 62 wait(1);
Mikebob 0:81f6a19a5a44 63 }
jaffacat 5:fdc550ee3b6e 64
jaffacat 5:fdc550ee3b6e 65 PWMA.write(dutyA); //Set duty cycle y
jaffacat 5:fdc550ee3b6e 66 PWMB.write(dutyB); //Set duty cycle y
Mikebob 6:c23ecdd1a581 67 wait(1.1);
Mikebob 0:81f6a19a5a44 68 PWMB.write(0.2f); //turn 31deg
Mikebob 6:c23ecdd1a581 69 wait(1.3);
Mikebob 0:81f6a19a5a44 70 PWMA.write(dutyA); //Set duty cycle hyp
Mikebob 0:81f6a19a5a44 71 PWMB.write(dutyB); //Set duty cycle hyp
Mikebob 0:81f6a19a5a44 72 wait(4.4);
Mikebob 0:81f6a19a5a44 73 PWMB.write(0.2f); //turn 59deg
Mikebob 0:81f6a19a5a44 74 wait(1.1);
Mikebob 0:81f6a19a5a44 75 PWMA.write(dutyA); //Set duty cycle x
Mikebob 0:81f6a19a5a44 76 PWMB.write(dutyB); //Set duty cycle x
Mikebob 6:c23ecdd1a581 77 wait(2.4);
jaffacat 5:fdc550ee3b6e 78 PWMB.write(0.2f); //turn 90deg
Mikebob 0:81f6a19a5a44 79 wait(0.7);
jaffacat 5:fdc550ee3b6e 80
Mikebob 0:81f6a19a5a44 81 PWMA.write(0.0f);
jaffacat 5:fdc550ee3b6e 82 PWMB.write(0.0f);
jaffacat 5:fdc550ee3b6e 83 }