Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: C12832 Pulse RangeFinder Servo mbed rtos
Fork of Team_Sprint2 by
Diff: main.cpp
- Revision:
- 14:f6d4980c48d6
- Parent:
- 8:fe434a018d96
- Child:
- 15:4ef3d9835b13
--- a/main.cpp Mon Apr 13 12:43:43 2015 +0000
+++ b/main.cpp Mon Apr 13 13:03:16 2015 +0000
@@ -6,38 +6,37 @@
Servo sTilt(p22);
Serial pc(USBTX, USBRX);
Servo sVert(p23);
-Sonar distance(p24);
+AnalogIn distance(p19);
Mutex mutexIn;
Mutex mutexOut;
-
-AnalogIn p1(p19);
-AnalogIn p2(p20);
// Global variables
float corHoriz; // horizontal variable arrives from OpenCV
float corVert; // vertical variable arrives from OpenCV
float distance; // distance measured by the sonar
-float outVert; // rr
+float outVert; //
float outTilt;
float outHoriz;
C12832 lcd(p5, p7, p6, p8, p11);// lcd is an object from class c12832 initialised by p5,p7....
/* Thread Serial 1 - handles the output data from the control thread, and pass to the servo.
@update s1, s2 */
-void serial_thread(void const *args) {
+void serial_thread(void const *args)
+{
while (true) {
mutexIn.lock();
- // pc.gets(cordinates,4);
- // cordinates = pc.putc(pc.getc());
- pc.scanf("%s \n %s \n ",corHoriz,corVert);// read from serial port the data
+ // pc.gets(cordinates,4);
+ // cordinates = pc.putc(pc.getc());
+ pc.scanf("%s \n %s \n ",corHoriz,corVert);// read from serial port the data
mutexIn.unlock();
Thread::wait(200);
}
}
-
+
/* Thread LCD 2 - handles the input data from the sonar sensor, and display on the LCD screen.
@update inData */
-void lcd_thread(void const *args) {
+void lcd_thread(void const *args)
+{
while (true) {
mutexIn.lock();
mutexOut.lock();
@@ -55,22 +54,34 @@
/* Thread Control 3 - handles the input data from the sonar sensor, and display on the LCD screen.
@update inData */
-void control_thread(void const *args) {
+void control_thread(void const *args)
+{
while (true) {
mutexIn.lock();
float differ;
differ = exp(corVert + sonar * outTilt) / (1 + exp(corVert + sonar * outTilt));
- if (corVert > .5) { // check if face is below the half of the camera view
- if (outTilt > .5) { // check if lamp head is facing down
- // moves lamp down by the fraction of the difference from the middle
- mutexIn.unlock();
- Thread::wait(25);
+ if (corVert > .45) { // check if face is below the half of the camera view
+ if (outTilt > .45) { // check if lamp head is facing down
+ // moves lamp down by the fraction of the difference from the middle
+ outVert = outVert +
+ outTilt = outTilt +
+ } else if (outTilt < .55) { // check if lamp head is facing up
+ //
+ }
+
+ } else if (corVert < .55) {
+ // moves lamp up by the fraction of the difference from the middle
+ }
}
+ mutexIn.unlock();
+ Thread::wait(25);
+}
}
/* Thread Servo 4 - handles the output data from the control thread, and pass to the servo.
@update s1, s2 */
-void servo_thread(void const *args) {
+void servo_thread(void const *args)
+{
while (true) {
mutexOut.lock();
sTi1t = outTilt;
@@ -81,7 +92,8 @@
}
}
-int main() {
+int main()
+{
Thread thread_1(serial_thread); // Start Serial Thread
Thread thread_2(lcd_thread); // Start LCD Thread
Thread thread_3(control_thread); // Start Control Thread
