V1 of the ParallaxRobotShield library

ParallaxRobotShield.h

Committer:
omarrasheedk
Date:
2015-08-20
Revision:
0:2ab9f4a3187a

File content as of revision 0:2ab9f4a3187a:

#include "mbed.h"
// us means microseconds

/** Parallax Robot Shield Control Class
 *
 */
class ParallaxRobotShield
{
    public:
    
        /** Create a new ParallaxRobotShield object on any mbed pin
        *
        * @param leftPin Left Servomotor Signal pin
        * @param rightPin Right Servomotor Signal pin
        */
        ParallaxRobotShield(PinName leftPin = D10, PinName rightPin = D11);
        
    
        /** Change the position of the servo. Position in us.
         *
         * @param NewPos The new value of the servos position (us)
         */
        //void SetPosition(int NewPos);
    
    
        /** Enable the servo. Without enabling, the servo won't be running. Startposition and period both in us.
         *
         * @param StartPos The position of the servo to start (us) 
         * @param Period The time between every pulse. 20000 us = 50 Hz(standard) (us)
         */
        //void Enable(int StartPos, int Period);
        
        
        /** Disable the servo. After disabling the servo won't get any signal anymore
         *
         */
        //void Disable();
        
        
        /** Create a robot shield object************************************************************************************************
         *
         * @param leftServo Left Servomotor Signal pin, default D13
         * @param rightServo RightServomotor Signal pin, default D14
         * @param whisker Whisker digital pin connection, default D7
         * @param lightSensor Sensor signal pin, default D6
         * @param bumpSensor Sensor signal pin, default D5
         * @param HCSR04sensor Sensor in-right pin, default D4 // For later - Need Trigger and RCC
         */
//------>ParallaxRobotShield(PinName leftServo, PinName rightServo , PinName whisker, PinName lightSensor, PinName bumpSensor);

        

        /** Switch on the left servo at the given speed. Can be used with loops to run the left servomotor.
         *  @param speed The speed, from 0 to 100 at which to spin the servomotor.
         */
        void left_servo(int speed);
        
        
        
        /** Switch on the right servo at the given speed. Can be used with loops to run the right servomotor.
         *  @param speed The speed, from 0 to 100 at which to spin the servomotor.
         */
        void right_servo(int speed);
        
        
        
        /** Switch on both servomotors, forwards at the given speed.
         *  @param speed The speed, from 0 to 100 at which to spin the servomotors.
         */
        void forward(int speed);
        
        
        
        /** Switch on both servomotors, backwards at the given speed.
         *  @param speed The speed, from 0 to 100 at which to spin the servomotors.
         */
        void backward(int speed);
        
        
        
        /** Switch on both servomotors at the given speed, in opposite directions so as to turn left.
         *  @param speed The speed, from 0 to 100 at which to spin the servomotors.
        */
        void left(int speed);
        
        
        
        /** Switch on both servomotors at the given speed, in opposite directions so as to turn right.
         *  @param speed The speed, from 0 to 100 at which to spin the servomotors.
         */
        void right(int speed);
        
        
        
        /** Turns left.
         *  @param speed The speed, from 0 to 100 at which to spin the servomotors.
         */
        void turn_left(int speed);
        
        
        
        /** Turns right.
         *  @param speed The speed, from 0 to 100 at which to spin the servomotors.
         */
        void turn_right(int speed);
        
        
        
        /** Disable the left motor
         */
        void disable_left_motor();  // Just for internal functions
        
        
        
        /** Disable the right servomotor
         */
        void disable_right_motor(); // Just for internal functions
        
        
        
        /** Enable the left servomotor
         */
        void enable_left_motor();
        
        
        
        /** Enable the left servomotor
         */
        void enable_right_motor();
        
        
        
        /** Stop a chosen motor.
         *  @param motor Number, either, 1 = Right or 2 = Left, choosing the motor.
         */
        void stop(int motor);
        
        
        
        /** Stop left servomotor.
         */
        void stopLeft();
        
        
        
        /** Stop right servomotor.
         */
        void stopRight();
        
        
        
        /** Stop both servomotors at the same time. Different from disable.
         */
        void stopAll();
        
        
        
        // Need to do something to do with detected line...
        
        /** Gives an indication of the data given by the reflectivity sensors.*************************************************************************************
         */
        float line_position();
        
        //DigitalIn lightSensor;
        //DigitalIn bumpSensor;
        //DigitalIn whisker;

        
    private: // Use whatever data type you need
    
        //void StartPulse();
        //void EndPulse();

        int leftPosition;
        int rightPosition;

        DigitalOut leftServo;
        DigitalOut rightServo;
        
        Ticker leftPulse;
        Ticker rightPulse;
        
        Timeout leftPulseStop;
        Timeout rightPulseStop;
        
        //PwmOut rightServo;
        //PwmOut leftServo;
        
};