updated codes lads
Dependencies: C12832 Servo mbed-rtos mbed
Fork of rtos_basic_updated by
main.cpp@10:46b4c5e4888f, 2015-01-29 (annotated)
- 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?
User | Revision | Line number | New 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 | } |