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: mbed navigation R5_StepperDrive LongRangeSensor DistanceSensor scanner Gripper ColorSensor
r5driver.cpp
- Committer:
- j_j205
- Date:
- 2016-02-17
- Revision:
- 15:d8940756d5d5
- Parent:
- 12:e9f878ced6e7
- Child:
- 19:4abc62759078
- Child:
- 20:53ab414d7b33
File content as of revision 15:d8940756d5d5:
#include "navigation.h"
#include "scanner.h"
#include "StepperDrive.h"
#include "VL6180x.h"
#include "stdint.h"
#include "mbed.h"
Serial pc(USBTX, USBRX);
InterruptIn start(SW1);
DigitalOut led_red(LED_RED);
DigitalOut led_green(LED_GREEN);
bool active = false;
void activate();
int main()
{
pc.baud(115200);
start.mode(PullUp); /* Start/Stop button is active low needing PullUp */
start.fall(&activate);
led_red = 0;
led_green = 1;
Navigation r5nav(10);
pc.printf("Navigation Object Created\n\n");
wait(0.1);
r5nav.addGraphNode(0, 1, 9.875, 0);
r5nav.addGraphNode(1, 0, 9.875, 180);
r5nav.addGraphNode(1, 2, 9.875, 270);
r5nav.addGraphNode(2, 1, 9.875, 90);
r5nav.addGraphNode(2, 3, 9.875, 180);
r5nav.addGraphNode(3, 2, 9.875, 0);
r5nav.addGraphNode(3, 0, 9.875, 90);
r5nav.addGraphNode(0, 3, 9.875, 270);
/*
// loading map
r5nav.addGraphNode(0, 1, 18, 0);
r5nav.addGraphNode(1, 0, 18, 180);
r5nav.addGraphNode(1, 2, 72, 0);
r5nav.addGraphNode(1, 3, 13.5, 90);
r5nav.addGraphNode(2, 1, 72, 180);
r5nav.addGraphNode(3, 1, 13.5, 270);
r5nav.addGraphNode(3, 4, 12, 180);
r5nav.addGraphNode(3, 5, 23, 0);
r5nav.addGraphNode(4, 3, 12, 0);
r5nav.addGraphNode(5, 3, 23, 180);
r5nav.addGraphNode(5, 6, 37, 0);
r5nav.addGraphNode(5, 8, 12, 90);
r5nav.addGraphNode(6, 5, 37, 180);
r5nav.addGraphNode(6, 7, 12, 0);
r5nav.addGraphNode(7, 6, 12, 180);
r5nav.addGraphNode(8, 5, 12, 270);
r5nav.addGraphNode(8, 9, 35, 180);
r5nav.addGraphNode(9, 8, 35, 0);
const uint16_t YELLOW_VICTIM = 7;
const uint16_t RED_VICTIM = 9;
const uint16_t YELLOW_DROP_ZONE = 4;
const uint16_t RED_DROP_ZONE = 2;
*/
StepperDrive drive(pc, PTE19, PTE18, 0, PTE3, PTE2, 1, 9.875, 6.4375, 500);
//(serial &, stepPinLeft, dirPinLeft, invertLeft, stepPinRight, dirPinRight, invertRight, wheelCircum, wheelSepar, periodUs)
pc.printf("Size of graph is %i\n", r5nav.graphSize() );
wait(0.1);
pc.printf("\nWaiting for START BUTTON\n");
while(!active) // wait for start_button
{
wait(1e-6);
}
r5nav.getShortestPath(1);
pc.printf("\n\nDistance from 0 to 1: %i\n", r5nav.getMinDist(1) );
pc.printf("Route:\n");
r5nav.executeRoute(pc, drive);
wait(0.1);
r5nav.getShortestPath(2);
pc.printf("\n\nDistance from 1 to 2: %i\n", r5nav.getMinDist(2) );
pc.printf("Route:\n");
r5nav.executeRoute(pc, drive);
wait(0.1);
r5nav.getShortestPath(3);
pc.printf("\n\nDistance from 2 to 3: %i\n", r5nav.getMinDist(3) );
pc.printf("Route:\n");
r5nav.executeRoute(pc, drive);
wait(0.1);
r5nav.getShortestPath(0);
pc.printf("\n\nDistance from 3 to 0: %i\n", r5nav.getMinDist(0) );
pc.printf("Route:\n");
r5nav.executeRoute(pc, drive);
wait(0.1);
/*
r5nav.getShortestPath(YELLOW_VICTIM);
pc.printf("\n\nDistance from 0 to YELLOW_VICTIM: %i\n", r5nav.getMinDist(YELLOW_VICTIM) );
pc.printf("Route:\n");
//r5nav.printRoute(pc);
//r5nav.setVertex(YELLOW_VICTIM)
r5nav.executeRoute(pc, drive);
wait(0.1);
r5nav.getShortestPath(YELLOW_DROP_ZONE);
pc.printf("\n\nDistance from %i to YELLOW_DROP_ZONE: %i\n", r5nav.getVertex(), r5nav.getMinDist(YELLOW_DROP_ZONE) );
pc.printf("Route:\n");
//r5nav.printRoute(pc);
//r5nav.setVertex(YELLOW_DROP_ZONE);
r5nav.executeRoute(pc, drive);
wait(0.1);
r5nav.getShortestPath(RED_VICTIM);
pc.printf("\n\nDistance from %i to RED_VICTIM: %i\n", r5nav.getVertex(), r5nav.getMinDist(RED_VICTIM) );
pc.printf("Route:\n");
//r5nav.printRoute(pc);
//r5nav.setVertex(RED_VICTIM);
r5nav.executeRoute(pc, drive);
wait(0.1);
r5nav.getShortestPath(RED_DROP_ZONE);
pc.printf("\n\nDistance from %i to RED_DROP_ZONE: %i\n", r5nav.getVertex(), r5nav.getMinDist(RED_DROP_ZONE) );
pc.printf("Route:\n");
//r5nav.printRoute(pc);
//r5nav.setVertex(RED_DROP_ZONE);
r5nav.executeRoute(pc, drive);
wait(0.1);
*/
drive.move(0, ((90.0)*(3.14159 / 180.0))); // return to initial angle
// wait for move to complete
while(!drive.isMoveDone())
{
wait(1e-6);
}
pc.printf("\n\nExercise Complete");
return 0;
}
void activate()
{
led_red = 1;
led_green = 0;
active = true;
}

