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@5:fdc550ee3b6e, 2019-11-05 (annotated)
- Committer:
 - jaffacat
 - Date:
 - Tue Nov 05 14:59:44 2019 +0000
 - Revision:
 - 5:fdc550ee3b6e
 - Parent:
 - 4:4aa46b70064a
 - Child:
 - 6:c23ecdd1a581
 
v6
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| Mikebob | 0:81f6a19a5a44 | 1 | /* | 
| jaffacat | 5:fdc550ee3b6e | 2 | Version 6 – All 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 | 0:81f6a19a5a44 | 67 | wait(0.6); | 
| Mikebob | 0:81f6a19a5a44 | 68 | PWMB.write(0.2f); //turn 31deg | 
| Mikebob | 0:81f6a19a5a44 | 69 | wait(1.6); | 
| 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 | 0:81f6a19a5a44 | 77 | wait(2.3); | 
| 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 | } |