RTOS

Dependencies:   Motor mbed-rtos mbed

Fork of rtos_basic by mbed official

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?

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