thread based dc motor direction
Dependencies: Motor mbed-rtos mbed
Fork of rtos_basic by
main.cpp@12:bbdc4c6d12d3, 2017-05-05 (annotated)
- Committer:
- tusharbhanarkar
- Date:
- Fri May 05 06:21:47 2017 +0000
- Revision:
- 12:bbdc4c6d12d3
- Parent:
- 11:0309bef74ba8
thread based dc motor direction
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emilmont | 1:491820ee784d | 1 | #include "mbed.h" |
tusharbhanarkar | 12:bbdc4c6d12d3 | 2 | #include "Motor.h" |
mbed_official | 11:0309bef74ba8 | 3 | #include "rtos.h" |
emilmont | 1:491820ee784d | 4 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 5 | AnalogIn inputx(p20); // input pins 20,19,18 for x,y,z axis respectively. |
tusharbhanarkar | 12:bbdc4c6d12d3 | 6 | AnalogIn inputy(p19); |
emilmont | 1:491820ee784d | 7 | DigitalOut led1(LED1); |
emilmont | 1:491820ee784d | 8 | DigitalOut led2(LED2); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 9 | DigitalOut led3(LED3); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 10 | Motor m1(p23,p5,p6); // pwm, fwd, rev |
tusharbhanarkar | 12:bbdc4c6d12d3 | 11 | //Motor m2(p22,p11,p12); // pwm,fwd,rev |
tusharbhanarkar | 12:bbdc4c6d12d3 | 12 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 13 | Serial pc(USBTX,USBRX); //Serial class for transmission of serial data |
tusharbhanarkar | 12:bbdc4c6d12d3 | 14 | Thread thread; |
tusharbhanarkar | 12:bbdc4c6d12d3 | 15 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 16 | void led2_thread() { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 17 | //while (true) { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 18 | |
emilmont | 1:491820ee784d | 19 | led2 = !led2; |
tusharbhanarkar | 12:bbdc4c6d12d3 | 20 | pc.printf("thread2 executed"); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 21 | Thread::wait(500); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 22 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 23 | //} |
tusharbhanarkar | 12:bbdc4c6d12d3 | 24 | |
emilmont | 1:491820ee784d | 25 | } |
emilmont | 1:491820ee784d | 26 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 27 | void led1_thread() { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 28 | // while(true) { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 29 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 30 | led1 = !led1; |
tusharbhanarkar | 12:bbdc4c6d12d3 | 31 | pc.printf("thread1 executed"); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 32 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 33 | Thread::wait(500); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 34 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 35 | // } |
tusharbhanarkar | 12:bbdc4c6d12d3 | 36 | } |
tusharbhanarkar | 12:bbdc4c6d12d3 | 37 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 38 | void led3_thread() { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 39 | //while (true) { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 40 | pc.printf("invalid"); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 41 | led3 = !led3; |
tusharbhanarkar | 12:bbdc4c6d12d3 | 42 | //m2.speed(0); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 43 | Thread::wait(500); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 44 | // } |
tusharbhanarkar | 12:bbdc4c6d12d3 | 45 | } |
tusharbhanarkar | 12:bbdc4c6d12d3 | 46 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 47 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 48 | int main() |
tusharbhanarkar | 12:bbdc4c6d12d3 | 49 | { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 50 | pc.baud(9600); // fixing a constant baud rate of 9600 bps at which mbed will interact with computer |
tusharbhanarkar | 12:bbdc4c6d12d3 | 51 | float cal_x,cal_y; //caliberation variables |
tusharbhanarkar | 12:bbdc4c6d12d3 | 52 | int x,y; // variables for x,y,z axes |
tusharbhanarkar | 12:bbdc4c6d12d3 | 53 | int i=100; |
tusharbhanarkar | 12:bbdc4c6d12d3 | 54 | while(i--) //small timed loop to caliberate the accelerometer with currentl position of the accelerometer |
tusharbhanarkar | 12:bbdc4c6d12d3 | 55 | { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 56 | cal_x=inputx*100; |
tusharbhanarkar | 12:bbdc4c6d12d3 | 57 | cal_y=inputy*100; |
tusharbhanarkar | 12:bbdc4c6d12d3 | 58 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 59 | } |
tusharbhanarkar | 12:bbdc4c6d12d3 | 60 | while(true) |
tusharbhanarkar | 12:bbdc4c6d12d3 | 61 | { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 62 | Thread::wait(500); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 63 | x=4*(cal_x - inputx*100); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 64 | y=4*(cal_y - inputy*100); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 65 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 66 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 67 | y=(y-30); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 68 | pc.printf("x=%d,y=%d *",x,y); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 69 | pc.printf("\n"); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 70 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 71 | if(x >= 0 && y >=0) |
tusharbhanarkar | 12:bbdc4c6d12d3 | 72 | { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 73 | pc.printf("\n Anticlockwise\n"); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 74 | for (float s= 1.0; s < 10.0 ; s += 0.01) |
tusharbhanarkar | 12:bbdc4c6d12d3 | 75 | m1.speed(s); // clockwise |
tusharbhanarkar | 12:bbdc4c6d12d3 | 76 | thread.start(led1_thread); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 77 | } |
tusharbhanarkar | 12:bbdc4c6d12d3 | 78 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 79 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 80 | else if (x <= 0 && y <=0) |
tusharbhanarkar | 12:bbdc4c6d12d3 | 81 | { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 82 | pc.printf("\n Clockwise \n"); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 83 | for(float s= -1.0; s > -10.0 ; s += -0.01) |
tusharbhanarkar | 12:bbdc4c6d12d3 | 84 | m1.speed(s); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 85 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 86 | // anticlockwise //Anticlockwise |
tusharbhanarkar | 12:bbdc4c6d12d3 | 87 | // led1_thread(); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 88 | thread.start(led2_thread); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 89 | } |
emilmont | 1:491820ee784d | 90 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 91 | else if((x<=0 && y>=0)|| (x>=0 && y<=0)) |
tusharbhanarkar | 12:bbdc4c6d12d3 | 92 | { |
tusharbhanarkar | 12:bbdc4c6d12d3 | 93 | pc.printf(""); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 94 | m1.speed(0); //stop |
tusharbhanarkar | 12:bbdc4c6d12d3 | 95 | thread.start(led3_thread); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 96 | } |
tusharbhanarkar | 12:bbdc4c6d12d3 | 97 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 98 | Thread::wait(500); |
tusharbhanarkar | 12:bbdc4c6d12d3 | 99 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 100 | //passing the caliberated x,y,z values to the computer. |
tusharbhanarkar | 12:bbdc4c6d12d3 | 101 | } |
tusharbhanarkar | 12:bbdc4c6d12d3 | 102 | |
tusharbhanarkar | 12:bbdc4c6d12d3 | 103 | } |