Sille Van Landschoot
/
RacingRobotsLib
Racing Robots Session
Fork of racing_robots by
robot_logic.h
- Committer:
- dwini
- Date:
- 2015-02-23
- Revision:
- 2:356bb8d99326
- Parent:
- 0:c0ae66a0ec7a
- Child:
- 4:3743cbfe031b
File content as of revision 2:356bb8d99326:
#include "mbed.h" #include "m3pi.h" #ifndef H_ROBOT_LOGIC #define H_ROBOT_LOGIC typedef enum { LED_1 = 0, LED_2 = 1, LED_3 = 2, LED_4 = 3, LED_5 = 4, LED_6 = 5, LED_7 = 6, LED_8 = 7 } LedIndex; typedef enum { LED_ON = 0, LED_OFF = 1, LED_TOGGLE = 2 } LedState; /* * Drive the robot forward or backward. * If the robot was turning it will stop turning and drive in a straight line. * * @speed The speed percentage with which to drive forward or backward. * Can range from -100 (full throttle backward) to +100 (full throttle forward). */ void drive(int speed); /* * Turn the robot left or right while driving. * * @turnspeed The percentage with which to turn the robot. * Can range from -100 (full throttle left) to +100 (full throttle right). */ void turn(int turnspeed); /* * Stop the robot. */ void stop(void); /* * Calibrate the line follow sensors. * Take note that the pololu should be placed over the line * before this function is called and that it will rotate to * both sides. */ void sensor_calibrate(void); /* * Read the value from the line sensor. The returned value indicates the * position of the line. The value ranges from -100 to +100 where -100 is * fully left, +100 is fully right and 0 means the line is detected in the middle. * * @return The position of the line with a range of -100 to +100. */ int line_sensor(void); /* * Initialize the PID drive control with * the P, I and T factors. * * @p The P factor * @i The I factor * @d The D factor */ void pid_init(int p, int i, int d); /* * Determine PID turnspeed with which the pololu should * turn to follow the line at the given position. * * @line_position The position of the line in a range of [-100, +100] * * @returns The turnspeed in a range of [-100, +100] */ int pid_turn(int line_position); // Show drive speed and sensor data void show_stats(); // Show the name of the robot on the display void show_name(char * name); // Turn a led on or off void led(LedIndex i, LedState state); // Wait for a number of milliseconds void await(int milliseconds); #endif