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 mbed rtos RangeFinder
Diff: main.cpp.orig
- Revision:
- 24:de4d6a06011b
- Parent:
- 16:af76305da577
--- a/main.cpp.orig Fri Apr 17 10:12:20 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-#include "mbed.h"
-#include "rtos.h"
-#include "Servo.h"
-#include "C12832.h"
-Servo sPan(p21);
-Servo sTilt(p22);
-Serial pc(USBTX, USBRX);
-Servo sVert(p23);
-Sonar distance(p24);
-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 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) {
- 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
- 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) {
- while (true) {
- mutexIn.lock();
- mutexOut.lock();
- // Display values on the LCD screen
- lcd.cls(); // clear the display
- lcd.locate(0,5); // the location where you want your charater to be displayed
- lcd.printf("Hor:%s",corHoriz);
- lcd.locate(0,20); // the location where you want your charater to be displayed
- lcd.printf("Ver%s", corVert);
- mutexIn.unlock();
- mutexOut.unlock();
- Thread::wait(25);
- }
-}
-
-/* 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) {
- 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);
- }
-}
-
-/* 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) {
- while (true) {
- mutexOut.lock();
- sTi1t = outTilt;
- sPan = outHoriz;
- sVert = outVert;
- mutexOut.unlock();
- Thread::wait(200);
- }
-}
-
-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
- Thread thread_4(servo_thread); // Start Servo Thread
- while(1) {
- Thread::wait(10);
- }
-}