Racing Robots Session

Dependencies:   MbedJSONValue m3pi

This is the library for the Racing Robots session. It supports the M3PI robot of Polulu.

It is based on the "Arduino" principle of the init and loop function.

Just add a main.cpp file which contains:

Racing Robots main file

#include "robot_logic.h"

void init()
{
   //put your initialization logic here
}

void loop()
{
    //put your robot control logic here    
}

Features include:

  1. Controlling the LEDS
  2. Move forward and backward
  3. Turn
  4. Read the sensor values
  5. Use a PID controller
Committer:
dwini
Date:
Mon Feb 23 12:24:31 2015 +0000
Revision:
0:c0ae66a0ec7a
Child:
2:356bb8d99326
Define interface of pololu for racing robots.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dwini 0:c0ae66a0ec7a 1 #include "mbed.h"
dwini 0:c0ae66a0ec7a 2 #include "m3pi.h"
dwini 0:c0ae66a0ec7a 3
dwini 0:c0ae66a0ec7a 4 #ifndef H_ROBOT_LOGIC
dwini 0:c0ae66a0ec7a 5 #define H_ROBOT_LOGIC
dwini 0:c0ae66a0ec7a 6
dwini 0:c0ae66a0ec7a 7 //typedef enum {
dwini 0:c0ae66a0ec7a 8 // LED_1 = 0,
dwini 0:c0ae66a0ec7a 9 // LED_2 = 1,
dwini 0:c0ae66a0ec7a 10 // LED_3 = 2,
dwini 0:c0ae66a0ec7a 11 // LED_4 = 3
dwini 0:c0ae66a0ec7a 12 // //.....
dwini 0:c0ae66a0ec7a 13 //} LedIndex;
dwini 0:c0ae66a0ec7a 14
dwini 0:c0ae66a0ec7a 15 typedef enum {
dwini 0:c0ae66a0ec7a 16 LED_ON = 0,
dwini 0:c0ae66a0ec7a 17 LED_OFF = 1,
dwini 0:c0ae66a0ec7a 18 LED_TOGGLE = 2
dwini 0:c0ae66a0ec7a 19 } LedState;
dwini 0:c0ae66a0ec7a 20
dwini 0:c0ae66a0ec7a 21
dwini 0:c0ae66a0ec7a 22 /*
dwini 0:c0ae66a0ec7a 23 * Drive the robot forward or backward.
dwini 0:c0ae66a0ec7a 24 *
dwini 0:c0ae66a0ec7a 25 * @speed The speed percentage with which to drive forward or backward [-100, +100].
dwini 0:c0ae66a0ec7a 26 */
dwini 0:c0ae66a0ec7a 27 void drive(int speed);
dwini 0:c0ae66a0ec7a 28
dwini 0:c0ae66a0ec7a 29 // speed between -100% en +100%
dwini 0:c0ae66a0ec7a 30 void turn(int turnspeed);
dwini 0:c0ae66a0ec7a 31
dwini 0:c0ae66a0ec7a 32 // Stop the robot
dwini 0:c0ae66a0ec7a 33 void stop();
dwini 0:c0ae66a0ec7a 34
dwini 0:c0ae66a0ec7a 35 void sensor_calibrate();
dwini 0:c0ae66a0ec7a 36
dwini 0:c0ae66a0ec7a 37 // Read the value from the line sensor
dwini 0:c0ae66a0ec7a 38 int line_sensor();
dwini 0:c0ae66a0ec7a 39
dwini 0:c0ae66a0ec7a 40 // PID drive control
dwini 0:c0ae66a0ec7a 41 void pid_init(int p, int i, int d);
dwini 0:c0ae66a0ec7a 42
dwini 0:c0ae66a0ec7a 43
dwini 0:c0ae66a0ec7a 44 // returns turnspeed
dwini 0:c0ae66a0ec7a 45 int pid_turn(int line_position);
dwini 0:c0ae66a0ec7a 46
dwini 0:c0ae66a0ec7a 47 // Show drive speed and sensor data
dwini 0:c0ae66a0ec7a 48 void showStats();
dwini 0:c0ae66a0ec7a 49
dwini 0:c0ae66a0ec7a 50 // Show text on display
dwini 0:c0ae66a0ec7a 51 void display(char* fmt, ...);
dwini 0:c0ae66a0ec7a 52
dwini 0:c0ae66a0ec7a 53 // Turn a led on or off
dwini 0:c0ae66a0ec7a 54 //void led(LedIndex i, LedState state);
dwini 0:c0ae66a0ec7a 55
dwini 0:c0ae66a0ec7a 56 // Wait for a number of milliseconds
dwini 0:c0ae66a0ec7a 57 void await(int milliseconds);
dwini 0:c0ae66a0ec7a 58
dwini 0:c0ae66a0ec7a 59 #endif