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