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.

DumpTruck.h

Committer:
simplyellow
Date:
2017-04-13
Revision:
13:112b6543909a
Parent:
12:502cf4fc6d98
Child:
14:fd6090cddc2e

File content as of revision 13:112b6543909a:

/**
*   @file   DumpTruck.h
*
*   @brief  DumpTruck class integrates multiple sensors into one API.
*
*   @author Terrabots Team
*
*/

#ifndef MBED_DUMP_TRUCK_H
#define MBED_DUMP_TRUCK_H

#include "mbed.h"
#include "Tracker.h"
//#include "IMU.h"
#include "Motor.h"
#include "nRF24L01P.h" //Transceiver library
#include "SRF05.h"

//using strings to process commands
#include <string> 
#include <stdio.h>
using namespace std;

#define TRANSFER_SIZE   8

// ADD SWITCHES & ULTRASONIC SENSOR implementation

/**
*   @class DumpTruck
*
*   @brief  Interface for controlling a Dump truck.
*/

class DumpTruck {
public:
    /**
    *   Constructor for the Tracker object.
    *
    *   @param[in]  truckId     The dump truck's identifier
    */
    DumpTruck(int truckId);

    /*
    *   Process command
    */
    void processCommand();

    /*
    *   Send not acknowledge
    */

    void sendNack();

    /*
    *   Send acknowledge
    */

    void sendAck();
    
    /*
    *   Initialize transceiver.
    */
    void startComms();
    
    /*
    *   Receive a command from base station.
    */
    void getCommand();
    
    /*
    *   Send important data back to the base station.
    */
    void reportData();

    // motor functions
    /*
    *   Drive a certain distance at a desired speed.
    */
    void driveDistance(float speed, float distance);// frontMotor
    /*
    *   Drive at a desired speed.
    */
    void drive(float speed);
    /*
    *   Turn the rear wheels a certain angle.
    */
    void turn(float angle);                 // turnMotor
    /*
    *   Move the dump truck's bed up/down a certain angle.
    */
    void moveBed(bool raise, float angle);  // bedMotor
    /*
    *   Stop driving.
    */
    int stopDrive();                            // all Motors
    
    /*
    *   Stop turning.
    */
    int stopTurn();                            // all Motors

    /*
    *   Stop bed.
    */
    int stopBed();                            // all Motors

    // ultrasonic functions
    /*
    *   Read from the ultrasonic sensor and determine the dump truck's
    *   proximity from objects.
    */
    bool detect();                          // returns bool for object too close
    
    int txDataCnt;
    int rxDataCnt;
    char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
    char acked[TRANSFER_SIZE];
    char nacked[TRANSFER_SIZE]; 
    bool received;


protected:
    Tracker *track;
    //IMU *bed;
    Motor *frontMotor;
    Motor *turnMotor;
    Motor *bedMotor;
    nRF24L01P *nrf; //Transceiver *nrf;
    SRF05 *srf;

    // add direct control for motor, switch, and ultrasonic sensor.

    int truckNumber;

    // motor variables
    float speed;                            // drive
    float distance;                         // drive
    float potAngle;                         // turn
    float bedAngle;                         // bed

    // bed-specific variables
    bool switchState;   // BusIn the two limit switches

    // ultrasonic-specific variables
    bool tooClose;
    float proximity;
    
    /*int txDataCnt;
    int rxDataCnt;
    char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
    bool received;*/
};
#endif