updated codes lads

Dependencies:   C12832 Servo mbed-rtos mbed

Fork of rtos_basic_updated by WIT_EmbOS_Gr1

Committer:
Ali_taher
Date:
Thu Jan 29 15:21:34 2015 +0000
Revision:
10:46b4c5e4888f
Parent:
9:f60eeadabcb0
Child:
11:784210223a9e
Child:
12:c037139a5bc0
updated with filter

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 1:491820ee784d 1 #include "mbed.h"
emilmont 1:491820ee784d 2 #include "rtos.h"
PaulF 7:c8e192e2c80c 3 #include "Servo.h"
Ali_taher 8:507111cc659c 4 #include "C12832.h"
PaulF 7:c8e192e2c80c 5 Servo s1(p21);
PaulF 7:c8e192e2c80c 6 Servo s2(p22);
emilmont 1:491820ee784d 7
PaulF 7:c8e192e2c80c 8 AnalogIn p1(p17);
Ali_taher 9:f60eeadabcb0 9 //AnalogIn p2(p20);
Ali_taher 10:46b4c5e4888f 10 Mutex input_data_mutex;
Ali_taher 10:46b4c5e4888f 11 Mutex output_data_mutex;
Ali_taher 9:f60eeadabcb0 12
Ali_taher 9:f60eeadabcb0 13 // Globel variables
Ali_taher 9:f60eeadabcb0 14 float input_data;
Ali_taher 9:f60eeadabcb0 15 float output_data;
Ali_taher 8:507111cc659c 16 C12832 lcd(p5, p7, p6, p8, p11);// lcd is an object from class c12832 initialised by p5,p7....
PaulF 7:c8e192e2c80c 17
Ali_taher 9:f60eeadabcb0 18 void sonar_thread(void const *args) {
Ali_taher 10:46b4c5e4888f 19 float anVolt;
Ali_taher 10:46b4c5e4888f 20 float sum=0;//Create sum variable so it can be averaged
Ali_taher 10:46b4c5e4888f 21 float avg=60.00;//Quantity of values to average (sample size)
Ali_taher 10:46b4c5e4888f 22
Ali_taher 9:f60eeadabcb0 23 while (true) {
Ali_taher 10:46b4c5e4888f 24
Ali_taher 10:46b4c5e4888f 25 input_data_mutex.lock();
Ali_taher 10:46b4c5e4888f 26 if (avg>=60)
Ali_taher 10:46b4c5e4888f 27 {
Ali_taher 10:46b4c5e4888f 28 sum=0;
Ali_taher 10:46b4c5e4888f 29 }
Ali_taher 10:46b4c5e4888f 30 for(int i = 0; i < avg ; i++)
Ali_taher 10:46b4c5e4888f 31 {
Ali_taher 10:46b4c5e4888f 32 anVolt = p1.read()*5;
Ali_taher 10:46b4c5e4888f 33 sum += anVolt;
Ali_taher 10:46b4c5e4888f 34 }
Ali_taher 10:46b4c5e4888f 35 output_data = sum/avg;
Ali_taher 9:f60eeadabcb0 36 lcd.cls(); // clear the display
Ali_taher 9:f60eeadabcb0 37 lcd.locate(0,3);// the location where you want your charater to be displayed
Ali_taher 10:46b4c5e4888f 38 lcd.printf("Thread one = %f\n", output_data);
Ali_taher 10:46b4c5e4888f 39
Ali_taher 10:46b4c5e4888f 40 input_data_mutex.unlock();
Ali_taher 9:f60eeadabcb0 41 Thread::wait(25);
Ali_taher 9:f60eeadabcb0 42 }
Ali_taher 9:f60eeadabcb0 43 }
Ali_taher 9:f60eeadabcb0 44
Ali_taher 9:f60eeadabcb0 45 void control_thread(void const *args) {
emilmont 1:491820ee784d 46 while (true) {
Ali_taher 10:46b4c5e4888f 47 input_data_mutex.lock();
Ali_taher 10:46b4c5e4888f 48 output_data_mutex.lock();
Ali_taher 10:46b4c5e4888f 49 if (output_data>0.8)
Ali_taher 10:46b4c5e4888f 50 {
Ali_taher 10:46b4c5e4888f 51 s2=output_data*0.2;
Ali_taher 9:f60eeadabcb0 52 }
Ali_taher 10:46b4c5e4888f 53 else if(output_data<0.8)
Ali_taher 10:46b4c5e4888f 54 {
Ali_taher 10:46b4c5e4888f 55 s2=-output_data*0.5;
Ali_taher 10:46b4c5e4888f 56 }
Ali_taher 9:f60eeadabcb0 57
Ali_taher 10:46b4c5e4888f 58 s1=input_data;
Ali_taher 10:46b4c5e4888f 59 input_data_mutex.unlock();
Ali_taher 10:46b4c5e4888f 60 output_data_mutex.unlock();
Ali_taher 9:f60eeadabcb0 61 Thread::wait(20);
emilmont 1:491820ee784d 62 }
emilmont 1:491820ee784d 63 }
emilmont 1:491820ee784d 64
emilmont 1:491820ee784d 65 int main() {
Ali_taher 9:f60eeadabcb0 66 Thread thread(sonar_thread);
Ali_taher 9:f60eeadabcb0 67 Thread thread_1(control_thread);
Ali_taher 9:f60eeadabcb0 68
emilmont 1:491820ee784d 69 while (true) {
Ali_taher 9:f60eeadabcb0 70
Ali_taher 9:f60eeadabcb0 71
Ali_taher 9:f60eeadabcb0 72 Thread::wait(10);
emilmont 1:491820ee784d 73 }
emilmont 1:491820ee784d 74 }