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@0:31704dbffee1, 2010-07-20 (annotated)
- Committer:
- aeris
- Date:
- Tue Jul 20 14:21:22 2010 +0000
- Revision:
- 0:31704dbffee1
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| aeris | 0:31704dbffee1 | 1 | #include "mbed.h" |
| aeris | 0:31704dbffee1 | 2 | |
| aeris | 0:31704dbffee1 | 3 | //motor spec |
| aeris | 0:31704dbffee1 | 4 | #define STEP_SIZE 1.8 |
| aeris | 0:31704dbffee1 | 5 | #define MAX_SPEED 50 |
| aeris | 0:31704dbffee1 | 6 | |
| aeris | 0:31704dbffee1 | 7 | //algo |
| aeris | 0:31704dbffee1 | 8 | #define SPEED_STEP 5 |
| aeris | 0:31704dbffee1 | 9 | |
| aeris | 0:31704dbffee1 | 10 | DigitalOut motor_a1(p30); |
| aeris | 0:31704dbffee1 | 11 | DigitalOut motor_a2(p29); |
| aeris | 0:31704dbffee1 | 12 | DigitalOut motor_b1(p28); |
| aeris | 0:31704dbffee1 | 13 | DigitalOut motor_b2(p27); |
| aeris | 0:31704dbffee1 | 14 | InterruptIn bp_up(p22); |
| aeris | 0:31704dbffee1 | 15 | InterruptIn bp_dw(p21); |
| aeris | 0:31704dbffee1 | 16 | |
| aeris | 0:31704dbffee1 | 17 | float speed = SPEED_STEP; |
| aeris | 0:31704dbffee1 | 18 | |
| aeris | 0:31704dbffee1 | 19 | void SpeedUp() { |
| aeris | 0:31704dbffee1 | 20 | if (speed < MAX_SPEED) |
| aeris | 0:31704dbffee1 | 21 | speed += SPEED_STEP; |
| aeris | 0:31704dbffee1 | 22 | } |
| aeris | 0:31704dbffee1 | 23 | |
| aeris | 0:31704dbffee1 | 24 | void SpeedDw() { |
| aeris | 0:31704dbffee1 | 25 | if (speed > (-1 * MAX_SPEED)) |
| aeris | 0:31704dbffee1 | 26 | speed -= SPEED_STEP; |
| aeris | 0:31704dbffee1 | 27 | } |
| aeris | 0:31704dbffee1 | 28 | |
| aeris | 0:31704dbffee1 | 29 | int main() { |
| aeris | 0:31704dbffee1 | 30 | unsigned char pos = 0; |
| aeris | 0:31704dbffee1 | 31 | unsigned char cycle[8][4] = { |
| aeris | 0:31704dbffee1 | 32 | {1, 0, 0, 0}, |
| aeris | 0:31704dbffee1 | 33 | {1, 0, 1, 0}, |
| aeris | 0:31704dbffee1 | 34 | {0, 0, 1, 0}, |
| aeris | 0:31704dbffee1 | 35 | {0, 1, 1, 0}, |
| aeris | 0:31704dbffee1 | 36 | {0, 1, 0, 0}, |
| aeris | 0:31704dbffee1 | 37 | {0, 1, 0, 1}, |
| aeris | 0:31704dbffee1 | 38 | {0, 0, 0, 1}, |
| aeris | 0:31704dbffee1 | 39 | {1, 0, 0, 1} |
| aeris | 0:31704dbffee1 | 40 | }; |
| aeris | 0:31704dbffee1 | 41 | |
| aeris | 0:31704dbffee1 | 42 | bp_up.rise(&SpeedUp); |
| aeris | 0:31704dbffee1 | 43 | bp_dw.rise(&SpeedDw); |
| aeris | 0:31704dbffee1 | 44 | |
| aeris | 0:31704dbffee1 | 45 | while (1) { |
| aeris | 0:31704dbffee1 | 46 | motor_a1 = cycle[pos][0]; |
| aeris | 0:31704dbffee1 | 47 | motor_a2 = cycle[pos][1]; |
| aeris | 0:31704dbffee1 | 48 | motor_b1 = cycle[pos][2]; |
| aeris | 0:31704dbffee1 | 49 | motor_b2 = cycle[pos][3]; |
| aeris | 0:31704dbffee1 | 50 | |
| aeris | 0:31704dbffee1 | 51 | if (speed != 0) { |
| aeris | 0:31704dbffee1 | 52 | if (speed > 0) { |
| aeris | 0:31704dbffee1 | 53 | if (pos == 7) |
| aeris | 0:31704dbffee1 | 54 | pos = 0; |
| aeris | 0:31704dbffee1 | 55 | else |
| aeris | 0:31704dbffee1 | 56 | pos++; |
| aeris | 0:31704dbffee1 | 57 | } |
| aeris | 0:31704dbffee1 | 58 | else { |
| aeris | 0:31704dbffee1 | 59 | if (pos == 0) |
| aeris | 0:31704dbffee1 | 60 | pos = 7; |
| aeris | 0:31704dbffee1 | 61 | else |
| aeris | 0:31704dbffee1 | 62 | pos--; |
| aeris | 0:31704dbffee1 | 63 | } |
| aeris | 0:31704dbffee1 | 64 | |
| aeris | 0:31704dbffee1 | 65 | wait((60.0 * STEP_SIZE) / (360.0 * 8.0 * abs(speed))); |
| aeris | 0:31704dbffee1 | 66 | } else { |
| aeris | 0:31704dbffee1 | 67 | |
| aeris | 0:31704dbffee1 | 68 | } |
| aeris | 0:31704dbffee1 | 69 | } |
| aeris | 0:31704dbffee1 | 70 | |
| aeris | 0:31704dbffee1 | 71 | return 1; |
| aeris | 0:31704dbffee1 | 72 | } |