Final Project files for mBed development.

Dependencies:   m3pi mbed

Committer:
lsaristo
Date:
Sat Dec 06 22:04:53 2014 +0000
Revision:
21:0c80a5d89ea3
Parent:
18:eab7b0e89398
Child:
22:46b9d9b2e35c
Worked on calibrating robot movements. Accurate enough for now

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lsaristo 8:12d780f7443e 1 /**
lsaristo 10:94b068b2ce1d 2 * @file main.h
lsaristo 8:12d780f7443e 3 * @brief Main header file for includes and whatnot
lsaristo 8:12d780f7443e 4 * for the other project files.
lsaristo 8:12d780f7443e 5 * @author John Wilkey
lsaristo 8:12d780f7443e 6 */
lsaristo 8:12d780f7443e 7
lsaristo 10:94b068b2ce1d 8 #ifndef _MAIN_H
lsaristo 10:94b068b2ce1d 9 #define _MAIN_H
lsaristo 8:12d780f7443e 10
lsaristo 8:12d780f7443e 11 #include "mbed.h"
lsaristo 8:12d780f7443e 12 #include "m3pi.h"
lsaristo 9:3a0433c391cb 13 #include <string.h>
lsaristo 9:3a0433c391cb 14 #include <stdarg.h>
lsaristo 9:3a0433c391cb 15 #include <stdio.h>
lsaristo 21:0c80a5d89ea3 16 #include <math.h>
lsaristo 21:0c80a5d89ea3 17 #define TURN_SPEED 0.15
lsaristo 21:0c80a5d89ea3 18 #define DRIVE_SPEED 0.2
lsaristo 8:12d780f7443e 19 #define ERR_SUCCESS 0
lsaristo 8:12d780f7443e 20 #define ERR_FAILURE 1
lsaristo 9:3a0433c391cb 21 #define DRIVE_RATE 1/50
lsaristo 21:0c80a5d89ea3 22 #define TIME_FACT 1820
lsaristo 21:0c80a5d89ea3 23 #define CAL_SPEED .1
lsaristo 21:0c80a5d89ea3 24 #define CLOSE_ENOUGH .02
lsaristo 8:12d780f7443e 25
alecguertin 18:eab7b0e89398 26
alecguertin 18:eab7b0e89398 27 /**
alecguertin 18:eab7b0e89398 28 * @brief move the robot from its current position to (x,y)
alecguertin 18:eab7b0e89398 29 *
alecguertin 18:eab7b0e89398 30 */
alecguertin 18:eab7b0e89398 31 void move(int x, int y, int draw);
alecguertin 18:eab7b0e89398 32
lsaristo 8:12d780f7443e 33 /**
alecguertin 17:c72c092fcdf7 34 * @brief get values of next PostScript instruction.
alecguertin 17:c72c092fcdf7 35 *
alecguertin 17:c72c092fcdf7 36 * @param buf Buffer with PS instructions.
alecguertin 17:c72c092fcdf7 37 * @param x Pointer to storage for x coordinate.
alecguertin 17:c72c092fcdf7 38 * @param y Pointer to storage for y coordinate.
alecguertin 17:c72c092fcdf7 39 * @param draw Pointer to storage for draw/move boolean.
alecguertin 17:c72c092fcdf7 40 *
alecguertin 17:c72c092fcdf7 41 * @return Success or failure code.
alecguertin 17:c72c092fcdf7 42 */
alecguertin 17:c72c092fcdf7 43 int retrieve_inst(char *buf, int *x, int *y, int *draw);
alecguertin 17:c72c092fcdf7 44
alecguertin 17:c72c092fcdf7 45 /**
lsaristo 8:12d780f7443e 46 * @brief Driver forward.
lsaristo 8:12d780f7443e 47 *
lsaristo 9:3a0433c391cb 48 * @param[in] amt Amount to drive forward. In centimeters.
lsaristo 8:12d780f7443e 49 * @return Success or failure.
lsaristo 8:12d780f7443e 50 */
lsaristo 9:3a0433c391cb 51 int forward(int amt);
lsaristo 8:12d780f7443e 52
lsaristo 8:12d780f7443e 53 /**
lsaristo 8:12d780f7443e 54 * @brief Drive backward.
lsaristo 8:12d780f7443e 55 *
lsaristo 9:3a0433c391cb 56 * @param[in] amt Amount to drive backward. In centimeters.
lsaristo 8:12d780f7443e 57 * @return Success or failure.
lsaristo 8:12d780f7443e 58 */
lsaristo 9:3a0433c391cb 59 int backward(int amt);
lsaristo 8:12d780f7443e 60
lsaristo 8:12d780f7443e 61 /**
lsaristo 8:12d780f7443e 62 * @brief Turn right.
lsaristo 8:12d780f7443e 63 *
lsaristo 8:12d780f7443e 64 * @param[in] deg Desired final turn angle from starting position.
lsaristo 8:12d780f7443e 65 * @param[in] spd Desired turning speed.
lsaristo 8:12d780f7443e 66 * @return Success or failure.
lsaristo 8:12d780f7443e 67 */
lsaristo 8:12d780f7443e 68 int right(float deg);
lsaristo 8:12d780f7443e 69
lsaristo 8:12d780f7443e 70 /**
lsaristo 8:12d780f7443e 71 * @brief Turn left.
lsaristo 8:12d780f7443e 72 *
lsaristo 8:12d780f7443e 73 * @param[in] deg Desired final turn angle from starting position.
lsaristo 8:12d780f7443e 74 * @param[in] spd Desired turning speed.
lsaristo 8:12d780f7443e 75 * @return Success or failure.
lsaristo 8:12d780f7443e 76 */
lsaristo 8:12d780f7443e 77 int left (float deg);
lsaristo 8:12d780f7443e 78
lsaristo 8:12d780f7443e 79 /**
lsaristo 10:94b068b2ce1d 80 * @brief Enable pen motion.
lsaristo 10:94b068b2ce1d 81 *
lsaristo 10:94b068b2ce1d 82 * Note that at the moment, for simplicity, this method just activates an LED
lsaristo 10:94b068b2ce1d 83 * on the expansion board to indicate that the pen should be in DOWN mode.
lsaristo 10:94b068b2ce1d 84 */
lsaristo 10:94b068b2ce1d 85 void pen_down();
lsaristo 10:94b068b2ce1d 86
lsaristo 10:94b068b2ce1d 87 /**
lsaristo 10:94b068b2ce1d 88 * @brief Raise pen
lsaristo 10:94b068b2ce1d 89 */
lsaristo 10:94b068b2ce1d 90 void pen_up();
lsaristo 10:94b068b2ce1d 91
lsaristo 10:94b068b2ce1d 92
lsaristo 10:94b068b2ce1d 93 /**
lsaristo 8:12d780f7443e 94 * @brief Controller decision logic.
lsaristo 8:12d780f7443e 95 *
lsaristo 8:12d780f7443e 96 * Decide what to do next based on the status of the drawing so far.
lsaristo 8:12d780f7443e 97 */
lsaristo 8:12d780f7443e 98 void next_action();
lsaristo 21:0c80a5d89ea3 99
lsaristo 21:0c80a5d89ea3 100 /**
lsaristo 21:0c80a5d89ea3 101 * @brief Wait for a number of seconds, possibly fractional.
lsaristo 21:0c80a5d89ea3 102 *
lsaristo 21:0c80a5d89ea3 103 * This is because mBed wait() function SUCKS
lsaristo 21:0c80a5d89ea3 104 */
lsaristo 21:0c80a5d89ea3 105 void timerWait(float);
lsaristo 21:0c80a5d89ea3 106
lsaristo 8:12d780f7443e 107 #endif