ECE 4180 final project mbed motor controller
Dependencies: HC_SR04_Ultrasonic_Library Motor mbed-rtos mbed
main.cpp@0:164e6ba069a9, 2017-05-01 (annotated)
- Committer:
- juubs
- Date:
- Mon May 01 03:20:11 2017 +0000
- Revision:
- 0:164e6ba069a9
ECE 4180 final project mbed code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
juubs | 0:164e6ba069a9 | 1 | // Sweep the motor speed from full-speed reverse (-1.0) to full speed forwards (1.0) |
juubs | 0:164e6ba069a9 | 2 | #include "mbed.h" |
juubs | 0:164e6ba069a9 | 3 | #include "ultrasonic.h" |
juubs | 0:164e6ba069a9 | 4 | #include "Motor.h" |
juubs | 0:164e6ba069a9 | 5 | #include "rtos.h" |
juubs | 0:164e6ba069a9 | 6 | |
juubs | 0:164e6ba069a9 | 7 | Serial pc(USBTX, USBRX); |
juubs | 0:164e6ba069a9 | 8 | Motor leftWheel(p21, p20, p19); |
juubs | 0:164e6ba069a9 | 9 | Motor rightWheel(p22, p15, p14); // pwm, fwd, rev |
juubs | 0:164e6ba069a9 | 10 | float speed = 0.5; |
juubs | 0:164e6ba069a9 | 11 | char input; |
juubs | 0:164e6ba069a9 | 12 | |
juubs | 0:164e6ba069a9 | 13 | void dist(int distance) { |
juubs | 0:164e6ba069a9 | 14 | //pc.printf("Distance %d mm\r\n", distance); |
juubs | 0:164e6ba069a9 | 15 | if (distance < 200) { |
juubs | 0:164e6ba069a9 | 16 | leftWheel.speed(0); |
juubs | 0:164e6ba069a9 | 17 | rightWheel.speed(0); |
juubs | 0:164e6ba069a9 | 18 | } |
juubs | 0:164e6ba069a9 | 19 | } |
juubs | 0:164e6ba069a9 | 20 | |
juubs | 0:164e6ba069a9 | 21 | ultrasonic sonar(p6, p7, .1, 1, &dist); |
juubs | 0:164e6ba069a9 | 22 | |
juubs | 0:164e6ba069a9 | 23 | void motor_thread(void const *args) { |
juubs | 0:164e6ba069a9 | 24 | while(1) { |
juubs | 0:164e6ba069a9 | 25 | if (pc.readable()) { |
juubs | 0:164e6ba069a9 | 26 | input = pc.getc(); |
juubs | 0:164e6ba069a9 | 27 | |
juubs | 0:164e6ba069a9 | 28 | switch (input) { |
juubs | 0:164e6ba069a9 | 29 | case 'f': |
juubs | 0:164e6ba069a9 | 30 | leftWheel.speed(speed); |
juubs | 0:164e6ba069a9 | 31 | rightWheel.speed(speed); |
juubs | 0:164e6ba069a9 | 32 | break; |
juubs | 0:164e6ba069a9 | 33 | |
juubs | 0:164e6ba069a9 | 34 | case 'b': |
juubs | 0:164e6ba069a9 | 35 | leftWheel.speed(-1 * speed); |
juubs | 0:164e6ba069a9 | 36 | rightWheel.speed(-1 * speed); |
juubs | 0:164e6ba069a9 | 37 | break; |
juubs | 0:164e6ba069a9 | 38 | |
juubs | 0:164e6ba069a9 | 39 | case 'l': |
juubs | 0:164e6ba069a9 | 40 | leftWheel.speed(-.4); |
juubs | 0:164e6ba069a9 | 41 | rightWheel.speed( .4); |
juubs | 0:164e6ba069a9 | 42 | wait(1.1); //Turn left 90deg |
juubs | 0:164e6ba069a9 | 43 | leftWheel.speed(0); |
juubs | 0:164e6ba069a9 | 44 | rightWheel.speed(0); |
juubs | 0:164e6ba069a9 | 45 | break; |
juubs | 0:164e6ba069a9 | 46 | |
juubs | 0:164e6ba069a9 | 47 | case 'r': |
juubs | 0:164e6ba069a9 | 48 | leftWheel.speed(.4); |
juubs | 0:164e6ba069a9 | 49 | rightWheel.speed(-.4); |
juubs | 0:164e6ba069a9 | 50 | wait(1.1); //Turn right 90deg |
juubs | 0:164e6ba069a9 | 51 | leftWheel.speed(0); |
juubs | 0:164e6ba069a9 | 52 | rightWheel.speed(0); |
juubs | 0:164e6ba069a9 | 53 | break; |
juubs | 0:164e6ba069a9 | 54 | |
juubs | 0:164e6ba069a9 | 55 | case 's': |
juubs | 0:164e6ba069a9 | 56 | leftWheel.speed(0); |
juubs | 0:164e6ba069a9 | 57 | rightWheel.speed(0); |
juubs | 0:164e6ba069a9 | 58 | break; |
juubs | 0:164e6ba069a9 | 59 | |
juubs | 0:164e6ba069a9 | 60 | default: |
juubs | 0:164e6ba069a9 | 61 | break; |
juubs | 0:164e6ba069a9 | 62 | } |
juubs | 0:164e6ba069a9 | 63 | } |
juubs | 0:164e6ba069a9 | 64 | } |
juubs | 0:164e6ba069a9 | 65 | } |
juubs | 0:164e6ba069a9 | 66 | |
juubs | 0:164e6ba069a9 | 67 | int main() { |
juubs | 0:164e6ba069a9 | 68 | pc.baud(115200); |
juubs | 0:164e6ba069a9 | 69 | pc.printf("hello\n"); |
juubs | 0:164e6ba069a9 | 70 | Thread motor_t(motor_thread); |
juubs | 0:164e6ba069a9 | 71 | sonar.startUpdates(); |
juubs | 0:164e6ba069a9 | 72 | while(1) { |
juubs | 0:164e6ba069a9 | 73 | sonar.checkDistance(); |
juubs | 0:164e6ba069a9 | 74 | } |
juubs | 0:164e6ba069a9 | 75 | } |