The Dream Team
/
first_test
Pop lock n drop it
main.cpp
- Committer:
- vsal
- Date:
- 2014-05-21
- Revision:
- 4:14b00a82d206
- Parent:
- 3:6f773c2ba3a0
- Child:
- 5:f3805a1f9047
- Child:
- 7:d0c19729e7fd
File content as of revision 4:14b00a82d206:
#include "mbed.h" #include "m3pi_ng.h" #include "DigitalIn.h" DigitalOut myled(LED1); m3pi huey; DigitalIn m3pi_IN[]={(p12),(p21)}; // IR-Sensor void printBattery() { //prints battery voltage on led screen float bat = huey.battery(); huey.printf("Bat volt"); huey.locate(0,1); huey.printf("%f",bat); } float myLinePos(void) { int sensors[5]; huey.calibrated_sensor(sensors); float leftSen, rightSen, midSen; leftSen = sensors[1] / 1000; rightSen = sensors[3] / 1000; midSen = sensors[2] / 1000; return rightSen - leftSen; } void smoothFollow(float position, float speed) { float u = speed; u = u * position; if(speed+u > 1) { huey.stop(); huey.printf("Fast Er"); } else { huey.right_motor(speed-u); huey.left_motor(speed+u); } } void slowStop(float speed, float waitTime, int steps) { float i; for(i = speed; i > 0; i = i - (speed/steps)) { smoothFollow(huey.line_position(),i); wait(waitTime); } huey.stop(); } int pushToStart(void) { DigitalIn button(p21); int value = button.read(); return value; } ///////////////////////////////////////////////////////////////// int main() { m3pi_IN[0].mode(PullUp); m3pi_IN[1].mode(PullUp); int start; do { start = pushToStart(); }while(start == 1); wait(1); //calibrates sensors huey.sensor_auto_calibrate(); printBattery(); float speed = 0.25; float pos; int z=1; while(z==1) { //huey.right_motor(speed); pos = myLinePos();//huey.line_position(); smoothFollow(pos, speed); if(m3pi_IN[0]==0) { slowStop(speed, 0.05, 3); huey.stop(); while(m3pi_IN[0]==0) { huey.printf("Stuck"); } } } while(1) { myled = 1; wait(0.2); myled = 0; wait(0.2); } }