nav fixed
Dependencies: Adafruit-16-Ch-PWM-Servo-Driver HCSR04 PID PololuQik2 QEI Sharp mbed-rtos
Fork of theRobot by
Diff: ShapeDetect.cpp
- Revision:
- 3:b7b4780a7f6e
- Parent:
- 0:1b64a0cedc5d
- Child:
- 6:75259c3306dd
diff -r 4e082e4c255d -r b7b4780a7f6e ShapeDetect.cpp --- a/ShapeDetect.cpp Mon Mar 03 22:30:34 2014 +0000 +++ b/ShapeDetect.cpp Thu Mar 13 17:06:34 2014 +0000 @@ -2,8 +2,7 @@ #include "ShapeDetect.h" LocalFileSystem local("local"); -DigitalOut myled(LED1); -Serial lrf(p9,p10); +Serial lrf(p13,p14); extern Serial pc; @@ -32,7 +31,7 @@ void lrf_baudCalibration(void){ wait(2.5); - lrf.baud(115200); + //lrf.baud(115200); do { lrf.putc('U'); pc.putc('.'); @@ -273,23 +272,27 @@ //clear bounds of detected blacks } -int shapeDetection_mass(void){ - + +int shapeDetection_mass(void) +{ + centerMass(&xcoord_val, &ycoord_val, &s_area_val); - if(s_area_val > 2800){ + pc.printf("\ncentriod calculated\n\r"); + pc.printf("\nCenter of Mass is at X: %d Y: %d\n\r", xcoord_val, ycoord_val, s_area_val); + pc.printf("\nThe area of the Mass is: %d\n\r", s_area_val); + if(s_area_val > SQUARE_AREA_TRESHOLD) { pc.printf("\nSQUARE DETECTECD\n\r"); return 3; - } else if (s_area_val < 2200){ - pc.printf("\nTRIANGLE DETECTECD\n\r"); - return 1; - }else{ - pc.printf("\nCIRCLE DETECTECD\n\r"); - return 2; - } - + } else if (s_area_val < TRIANGE_AREA_TRESHOLD) { + pc.printf("\nTRIANGLE DETECTECD\n\r"); + return 1; + } else { + pc.printf("\nCIRCLE DETECTECD\n\r"); + return 2; } -int laserDistance(void){ - myled=1; +} + +int getDistance(void){ lrf.putc('B'); //Take Binary range reading // read in the four bytes for the range in mm (MSB first) mm_range=0; @@ -297,12 +300,11 @@ mm_range=(mm_range<<8)|lrf.getc(); mm_range=(mm_range<<8)|lrf.getc(); mm_range=(mm_range<<8)|lrf.getc(); - myled=0; //eat CR & ":" command prompt do { lrfchar=lrf.getc(); } while (lrfchar != ':'); - return 1; + return mm_range; } + -