ECE 4180 final project mbed motor controller

Dependencies:   HC_SR04_Ultrasonic_Library Motor mbed-rtos mbed

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?

UserRevisionLine numberNew 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 }