Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@6:c23ecdd1a581, 2019-11-12 (annotated)
- 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?
User | Revision | Line number | New 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 | } |