Main repository for dump truck API development in Spring 2017

Dependencies:   Tracker mbed MotorV2 SRF05 nRF24L01P

Fork of DUMP_TRUCK_TEST_V1 by Terrabots

Activities

This Week

If needed, please contact Milo Pan at mpan9@gatech.edu for rights and access to this repository.

Committer:
simplyellow
Date:
Tue Apr 25 05:24:47 2017 +0000
Revision:
14:fd6090cddc2e
Parent:
13:112b6543909a
Child:
15:a4bbdde8ed69
communications final implementation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pvela 6:5cc6a9b6f60e 1 /**
pvela 6:5cc6a9b6f60e 2 * @file DumpTruck.h
pvela 6:5cc6a9b6f60e 3 *
simplyellow 10:cf77da9be0b8 4 * @brief DumpTruck class integrates multiple sensors into one API.
pvela 6:5cc6a9b6f60e 5 *
pvela 6:5cc6a9b6f60e 6 * @author Terrabots Team
pvela 6:5cc6a9b6f60e 7 *
pvela 6:5cc6a9b6f60e 8 */
pvela 6:5cc6a9b6f60e 9
Josahty 0:6942f0e2198c 10 #ifndef MBED_DUMP_TRUCK_H
Josahty 0:6942f0e2198c 11 #define MBED_DUMP_TRUCK_H
simplyellow 10:cf77da9be0b8 12
Josahty 0:6942f0e2198c 13 #include "mbed.h"
simplyellow 10:cf77da9be0b8 14 #include "Tracker.h"
simplyellow 10:cf77da9be0b8 15 //#include "IMU.h"
simplyellow 10:cf77da9be0b8 16 #include "Motor.h"
simplyellow 12:502cf4fc6d98 17 #include "nRF24L01P.h" //Transceiver library
simplyellow 10:cf77da9be0b8 18 #include "SRF05.h"
simplyellow 14:fd6090cddc2e 19 #include "commands.h"
simplyellow 13:112b6543909a 20
simplyellow 12:502cf4fc6d98 21 #define TRANSFER_SIZE 8
simplyellow 12:502cf4fc6d98 22
simplyellow 14:fd6090cddc2e 23
simplyellow 10:cf77da9be0b8 24 // ADD SWITCHES & ULTRASONIC SENSOR implementation
Josahty 0:6942f0e2198c 25
pvela 7:dd3a7dcc5c84 26 /**
pvela 7:dd3a7dcc5c84 27 * @class DumpTruck
pvela 7:dd3a7dcc5c84 28 *
simplyellow 10:cf77da9be0b8 29 * @brief Interface for controlling a Dump truck.
pvela 7:dd3a7dcc5c84 30 */
simplyellow 10:cf77da9be0b8 31
Josahty 0:6942f0e2198c 32 class DumpTruck {
Josahty 0:6942f0e2198c 33 public:
pvela 6:5cc6a9b6f60e 34 /**
simplyellow 10:cf77da9be0b8 35 * Constructor for the Tracker object.
pvela 6:5cc6a9b6f60e 36 *
simplyellow 10:cf77da9be0b8 37 * @param[in] truckId The dump truck's identifier
pvela 6:5cc6a9b6f60e 38 */
Josahty 0:6942f0e2198c 39 DumpTruck(int truckId);
pvela 6:5cc6a9b6f60e 40
simplyellow 12:502cf4fc6d98 41 /*
simplyellow 13:112b6543909a 42 * Process command
simplyellow 13:112b6543909a 43 */
simplyellow 13:112b6543909a 44 void processCommand();
simplyellow 13:112b6543909a 45
simplyellow 13:112b6543909a 46 /*
simplyellow 13:112b6543909a 47 * Send not acknowledge
simplyellow 13:112b6543909a 48 */
simplyellow 13:112b6543909a 49
simplyellow 13:112b6543909a 50 void sendNack();
simplyellow 13:112b6543909a 51
simplyellow 13:112b6543909a 52 /*
simplyellow 13:112b6543909a 53 * Send acknowledge
simplyellow 13:112b6543909a 54 */
simplyellow 13:112b6543909a 55
simplyellow 13:112b6543909a 56 void sendAck();
simplyellow 13:112b6543909a 57
simplyellow 13:112b6543909a 58 /*
simplyellow 12:502cf4fc6d98 59 * Initialize transceiver.
simplyellow 12:502cf4fc6d98 60 */
simplyellow 12:502cf4fc6d98 61 void startComms();
simplyellow 12:502cf4fc6d98 62
simplyellow 12:502cf4fc6d98 63 /*
simplyellow 12:502cf4fc6d98 64 * Receive a command from base station.
simplyellow 12:502cf4fc6d98 65 */
simplyellow 12:502cf4fc6d98 66 void getCommand();
simplyellow 12:502cf4fc6d98 67
simplyellow 12:502cf4fc6d98 68 /*
simplyellow 12:502cf4fc6d98 69 * Send important data back to the base station.
simplyellow 12:502cf4fc6d98 70 */
simplyellow 12:502cf4fc6d98 71 void reportData();
simplyellow 12:502cf4fc6d98 72
simplyellow 10:cf77da9be0b8 73 // motor functions
simplyellow 10:cf77da9be0b8 74 /*
simplyellow 10:cf77da9be0b8 75 * Drive a certain distance at a desired speed.
simplyellow 10:cf77da9be0b8 76 */
simplyellow 14:fd6090cddc2e 77 void driveDistance();// frontMotor
simplyellow 10:cf77da9be0b8 78 /*
simplyellow 10:cf77da9be0b8 79 * Drive at a desired speed.
pvela 6:5cc6a9b6f60e 80 */
simplyellow 14:fd6090cddc2e 81 void drive();
simplyellow 10:cf77da9be0b8 82 /*
simplyellow 10:cf77da9be0b8 83 * Turn the rear wheels a certain angle.
pvela 6:5cc6a9b6f60e 84 */
simplyellow 14:fd6090cddc2e 85 void turn(); // turnMotor
simplyellow 10:cf77da9be0b8 86 /*
simplyellow 10:cf77da9be0b8 87 * Move the dump truck's bed up/down a certain angle.
pvela 6:5cc6a9b6f60e 88 */
simplyellow 14:fd6090cddc2e 89 void moveBed(); // bedMotor
simplyellow 10:cf77da9be0b8 90 /*
simplyellow 10:cf77da9be0b8 91 * Stop driving.
simplyellow 10:cf77da9be0b8 92 */
simplyellow 14:fd6090cddc2e 93 void stopDrive(); // all Motors
simplyellow 13:112b6543909a 94
simplyellow 13:112b6543909a 95 /*
simplyellow 13:112b6543909a 96 * Stop turning.
simplyellow 13:112b6543909a 97 */
simplyellow 14:fd6090cddc2e 98 void stopTurn(); // all Motors
simplyellow 13:112b6543909a 99
simplyellow 13:112b6543909a 100 /*
simplyellow 13:112b6543909a 101 * Stop bed.
simplyellow 13:112b6543909a 102 */
simplyellow 14:fd6090cddc2e 103 void stopBed(); // all Motors
pvela 6:5cc6a9b6f60e 104
simplyellow 10:cf77da9be0b8 105 // ultrasonic functions
simplyellow 10:cf77da9be0b8 106 /*
simplyellow 10:cf77da9be0b8 107 * Read from the ultrasonic sensor and determine the dump truck's
simplyellow 10:cf77da9be0b8 108 * proximity from objects.
pvela 6:5cc6a9b6f60e 109 */
simplyellow 10:cf77da9be0b8 110 bool detect(); // returns bool for object too close
simplyellow 13:112b6543909a 111
simplyellow 13:112b6543909a 112 int txDataCnt;
simplyellow 13:112b6543909a 113 int rxDataCnt;
simplyellow 13:112b6543909a 114 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
simplyellow 13:112b6543909a 115 char acked[TRANSFER_SIZE];
simplyellow 13:112b6543909a 116 char nacked[TRANSFER_SIZE];
simplyellow 13:112b6543909a 117 bool received;
simplyellow 14:fd6090cddc2e 118 int numCommands;
simplyellow 14:fd6090cddc2e 119 int commandValue;
simplyellow 14:fd6090cddc2e 120 typedef void (DumpTruck::*funcArray)(void);
simplyellow 14:fd6090cddc2e 121 funcArray commArr[sizeof(commands)/sizeof(*commands)];
simplyellow 14:fd6090cddc2e 122
simplyellow 14:fd6090cddc2e 123 protected:
simplyellow 10:cf77da9be0b8 124 Tracker *track;
simplyellow 10:cf77da9be0b8 125 //IMU *bed;
simplyellow 10:cf77da9be0b8 126 Motor *frontMotor;
simplyellow 10:cf77da9be0b8 127 Motor *turnMotor;
simplyellow 10:cf77da9be0b8 128 Motor *bedMotor;
simplyellow 12:502cf4fc6d98 129 nRF24L01P *nrf; //Transceiver *nrf;
simplyellow 10:cf77da9be0b8 130 SRF05 *srf;
simplyellow 10:cf77da9be0b8 131
simplyellow 10:cf77da9be0b8 132 // add direct control for motor, switch, and ultrasonic sensor.
simplyellow 10:cf77da9be0b8 133
Josahty 0:6942f0e2198c 134 int truckNumber;
simplyellow 10:cf77da9be0b8 135
simplyellow 10:cf77da9be0b8 136 // motor variables
simplyellow 10:cf77da9be0b8 137 float speed; // drive
simplyellow 10:cf77da9be0b8 138 float distance; // drive
simplyellow 10:cf77da9be0b8 139 float potAngle; // turn
simplyellow 10:cf77da9be0b8 140 float bedAngle; // bed
simplyellow 10:cf77da9be0b8 141
simplyellow 10:cf77da9be0b8 142 // bed-specific variables
simplyellow 10:cf77da9be0b8 143 bool switchState; // BusIn the two limit switches
simplyellow 10:cf77da9be0b8 144
simplyellow 10:cf77da9be0b8 145 // ultrasonic-specific variables
simplyellow 10:cf77da9be0b8 146 bool tooClose;
simplyellow 10:cf77da9be0b8 147 float proximity;
simplyellow 12:502cf4fc6d98 148
simplyellow 13:112b6543909a 149 /*int txDataCnt;
simplyellow 12:502cf4fc6d98 150 int rxDataCnt;
simplyellow 12:502cf4fc6d98 151 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
simplyellow 13:112b6543909a 152 bool received;*/
Josahty 0:6942f0e2198c 153 };
simplyellow 5:dc4cf6cc24b3 154 #endif