![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Pop lock n drop it
main.cpp
- Committer:
- vsal
- Date:
- 2014-05-21
- Revision:
- 3:6f773c2ba3a0
- Parent:
- 2:e513ada0ecf1
- Child:
- 4:14b00a82d206
File content as of revision 3:6f773c2ba3a0:
#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); } void smoothFollow(float position, float speed) { float u = speed/1.; 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(); huey.printf("%d", value); 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 = 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); } }