Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed QEI biquadFilter
controller.h
- Committer:
- ronvbree
- Date:
- 2016-11-02
- Revision:
- 7:a80cb6b06320
- Parent:
- 0:494acf21d3bc
- Child:
- 12:8295c02d740f
File content as of revision 7:a80cb6b06320:
#include "robot.h"
class RobotController {
    private:
        // Robot
        Robot robot;
        // Serial communication for debugging purposes
        Serial debug;
        // Ticker
        Ticker ticker;
        // Controllers
        PIDController upperArmController;
        PIDController lowerArmController;
        // Reference arm lengths
        volatile float upperArmLengthReference;
        volatile float lowerArmLengthReference;
        
        // Control state flags
        volatile bool MOVE_BY_REFERENCE;
        volatile bool PAINT_MOVE_UP;
        volatile bool PAINT_MOVE_DOWN;
        
        void doTick();
        
    public:
        // Constructor
        RobotController();
        // Move the roller to a x,y coordinate
        void moveTo(float x, float y);
        // Move the arms to the indicates arm lengths
        void setArmLengths(float upper, float lower);
        // Move to max y
        void goToTop();
        // Move to min y
        void goToBottom();
        // Make a straight painting movement upwards
        void paintUp();
        // Make a straight painting movement downwards
        void paintDown();
        
        // Robot queries
        bool isKilled();
        float getUpperArmLength();
        float getLowerArmLength();
        
        // Get the robot object
        Robot* getRobot();
    
};