Committer:
gtg795y
Date:
Sun Dec 12 22:12:13 2010 +0000
Revision:
4:959812c02a0c
Parent:
3:cc2952c60d85
raw

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gtg795y 2:0a3c369d0076 1 #ifndef SERIALIZER_H
gtg795y 2:0a3c369d0076 2 #define SERIALIZER_H
gtg795y 1:d0f6e726b244 3
gtg795y 4:959812c02a0c 4
gtg795y 4:959812c02a0c 5 #define BAUD 19200
gtg795y 4:959812c02a0c 6 #define MAX_SPEED 127
gtg795y 4:959812c02a0c 7
gtg795y 3:cc2952c60d85 8 #define WAIT .001
gtg795y 3:cc2952c60d85 9 #define PI 3.1415926
gtg795y 3:cc2952c60d85 10 #define PIVET_ADJUSTMENT 6
gtg795y 3:cc2952c60d85 11 #define PIVET_SPEED 25
gtg795y 4:959812c02a0c 12
gtg795y 3:cc2952c60d85 13 #define PULSES_PER_REVOLUTION 624
gtg795y 4:959812c02a0c 14 #define WHEEL_DIAMETER 2.25 //inches
gtg795y 3:cc2952c60d85 15 #define WHEEL_CIRCUMFERENCE PI*WHEEL_DIAMETER
gtg795y 3:cc2952c60d85 16 #define PULSE_DISTANCE WHEEL_CIRCUMFERENCE / 624
gtg795y 4:959812c02a0c 17 #define PULSES_PER_INCH int(PULSES_PER_REVOLUTION / WHEEL_CIRCUMFERENCE)
gtg795y 3:cc2952c60d85 18
gtg795y 1:d0f6e726b244 19
gtg795y 1:d0f6e726b244 20 #include "mbed.h"
gtg795y 1:d0f6e726b244 21
gtg795y 2:0a3c369d0076 22 /**
gtg795y 2:0a3c369d0076 23 * Serializer Class to communicate with Robotics
gtg795y 2:0a3c369d0076 24 * Connection Serializer(tm) board
gtg795y 2:0a3c369d0076 25 */
gtg795y 2:0a3c369d0076 26 class Serializer {
gtg795y 1:d0f6e726b244 27
gtg795y 1:d0f6e726b244 28 public:
gtg795y 2:0a3c369d0076 29 /**
gtg795y 2:0a3c369d0076 30 * Constructor.
gtg795y 2:0a3c369d0076 31 *
gtg795y 2:0a3c369d0076 32 */
gtg795y 2:0a3c369d0076 33 Serializer();
gtg795y 1:d0f6e726b244 34
gtg795y 2:0a3c369d0076 35 /**
gtg795y 2:0a3c369d0076 36 * Destructor.
gtg795y 2:0a3c369d0076 37 *
gtg795y 2:0a3c369d0076 38 */
gtg795y 2:0a3c369d0076 39 ~Serializer();
gtg795y 2:0a3c369d0076 40
gtg795y 1:d0f6e726b244 41 int GetCountLeft();
gtg795y 1:d0f6e726b244 42 int GetCountRight();
gtg795y 2:0a3c369d0076 43
gtg795y 2:0a3c369d0076 44 /**
gtg795y 2:0a3c369d0076 45 * Clears left motor encoder count
gtg795y 2:0a3c369d0076 46 *
gtg795y 2:0a3c369d0076 47 */
gtg795y 1:d0f6e726b244 48 void ClearCountLeft();
gtg795y 2:0a3c369d0076 49
gtg795y 2:0a3c369d0076 50 /**
gtg795y 2:0a3c369d0076 51 * Clears right motor encoder count
gtg795y 2:0a3c369d0076 52 *
gtg795y 2:0a3c369d0076 53 */
gtg795y 1:d0f6e726b244 54 void ClearCountRight();
gtg795y 2:0a3c369d0076 55
gtg795y 2:0a3c369d0076 56 /**
gtg795y 2:0a3c369d0076 57 * Clears motors encoder counts
gtg795y 2:0a3c369d0076 58 *
gtg795y 2:0a3c369d0076 59 */
gtg795y 1:d0f6e726b244 60 void ClearCount();
gtg795y 1:d0f6e726b244 61
gtg795y 2:0a3c369d0076 62 /**
gtg795y 2:0a3c369d0076 63 * Sets left motor speed
gtg795y 3:cc2952c60d85 64 * @param inPsec Motor Speed in inches per second
gtg795y 2:0a3c369d0076 65 */
gtg795y 3:cc2952c60d85 66 void SetSpeedLeft(int inPsec);
gtg795y 2:0a3c369d0076 67
gtg795y 2:0a3c369d0076 68 /**
gtg795y 2:0a3c369d0076 69 * Sets right motor speed
gtg795y 3:cc2952c60d85 70 * @param inPsec Motor Speed in inches per second
gtg795y 2:0a3c369d0076 71 */
gtg795y 3:cc2952c60d85 72 void SetSpeedRight(int inPsec);
gtg795y 2:0a3c369d0076 73
gtg795y 2:0a3c369d0076 74 /**
gtg795y 2:0a3c369d0076 75 * Sets speed for both motors
gtg795y 3:cc2952c60d85 76 * @param inPsec Motor Speed in inches per second
gtg795y 2:0a3c369d0076 77 */
gtg795y 3:cc2952c60d85 78 void SetSpeed(int inPsec);
gtg795y 2:0a3c369d0076 79
gtg795y 2:0a3c369d0076 80 /**
gtg795y 2:0a3c369d0076 81 * Sets VPID
gtg795y 2:0a3c369d0076 82 * @param p
gtg795y 2:0a3c369d0076 83 * @param i
gtg795y 2:0a3c369d0076 84 * @param d
gtg795y 2:0a3c369d0076 85 * @param l
gtg795y 2:0a3c369d0076 86 */
gtg795y 2:0a3c369d0076 87 void SetVPID(int,int,int,int);
gtg795y 1:d0f6e726b244 88
gtg795y 2:0a3c369d0076 89 /**
gtg795y 2:0a3c369d0076 90 * Sets DPID
gtg795y 2:0a3c369d0076 91 * @param p
gtg795y 2:0a3c369d0076 92 * @param i
gtg795y 2:0a3c369d0076 93 * @param d
gtg795y 2:0a3c369d0076 94 * @param a
gtg795y 2:0a3c369d0076 95 */
gtg795y 1:d0f6e726b244 96 void SetDPID(int,int,int,int);
gtg795y 1:d0f6e726b244 97
gtg795y 2:0a3c369d0076 98 /**
gtg795y 2:0a3c369d0076 99 * Sets left motor distance and speed
gtg795y 3:cc2952c60d85 100 * @param inches Distance in inches
gtg795y 3:cc2952c60d85 101 * @param inPsec Motor Speed
gtg795y 2:0a3c369d0076 102 */
gtg795y 3:cc2952c60d85 103 void DiGoLeft(int inches,int inPsec);
gtg795y 2:0a3c369d0076 104
gtg795y 2:0a3c369d0076 105 /**
gtg795y 2:0a3c369d0076 106 * Sets right motor distance and speed
gtg795y 3:cc2952c60d85 107 * @param inches Distance in inches
gtg795y 3:cc2952c60d85 108 * @param inPsec Motor Speed
gtg795y 2:0a3c369d0076 109 */
gtg795y 3:cc2952c60d85 110 void DiGoRight(int inches,int inPsec);
gtg795y 1:d0f6e726b244 111
gtg795y 2:0a3c369d0076 112 /**
gtg795y 2:0a3c369d0076 113 * Sets both motors distance and speed
gtg795y 3:cc2952c60d85 114 * @param inches Distance in inches
gtg795y 3:cc2952c60d85 115 * @param inPsec Motor Speed
gtg795y 2:0a3c369d0076 116 */
gtg795y 3:cc2952c60d85 117 void DiGo(int inches,int inPsec);
gtg795y 4:959812c02a0c 118
gtg795y 4:959812c02a0c 119 void SetLeftPWM(int pwm);
gtg795y 4:959812c02a0c 120 void SetRightPWM(int pwm);
gtg795y 2:0a3c369d0076 121
gtg795y 1:d0f6e726b244 122 int IsBusy();
gtg795y 2:0a3c369d0076 123
gtg795y 2:0a3c369d0076 124 /**
gtg795y 2:0a3c369d0076 125 * Stops both motors
gtg795y 2:0a3c369d0076 126 */
gtg795y 1:d0f6e726b244 127 void Stop();
gtg795y 3:cc2952c60d85 128
gtg795y 3:cc2952c60d85 129 void TurnLeft(int deg);
gtg795y 3:cc2952c60d85 130 void TurnRight(int deg);
gtg795y 3:cc2952c60d85 131 void PivetLeft(int deg);
gtg795y 3:cc2952c60d85 132 void PivetRight(int deg);
gtg795y 3:cc2952c60d85 133
gtg795y 3:cc2952c60d85 134
gtg795y 2:0a3c369d0076 135
gtg795y 2:0a3c369d0076 136
gtg795y 1:d0f6e726b244 137
gtg795y 3:cc2952c60d85 138 //protected:
gtg795y 2:0a3c369d0076 139 int GetReply();
gtg795y 3:cc2952c60d85 140 void InterruptHandler();
gtg795y 4:959812c02a0c 141 int Initialize();
gtg795y 3:cc2952c60d85 142 //private:
gtg795y 4:959812c02a0c 143 Serial *serial;
gtg795y 4:959812c02a0c 144 volatile int leftSpeed, rightSpeed;
gtg795y 4:959812c02a0c 145 volatile int _lPWM, _rPWM;
gtg795y 4:959812c02a0c 146 volatile char commandInProgress;
gtg795y 1:d0f6e726b244 147 };
gtg795y 0:a6113b3c872b 148 #endif