control for robotic arm that can play chess using a granular gripper

Dependencies:   Encoder mbed HIDScope Servo MODSERIAL

Fork of chessRobot by a steenbeek

actuators.cpp

Committer:
annesteenbeek
Date:
2015-10-01
Revision:
1:80f098c05d4b
Parent:
0:525558a26464
Child:
2:95ba9f6f0128

File content as of revision 1:80f098c05d4b:

// functions for controlling the motors

void motorInit(){
    PwmOut motor1(motorpin1);
    PwmOut motor2(motorpin2);

    // create PID instances for motors
    // PID pidname(input, output, setpoint, kp, ki, kd, direction)
    PID PIDmotor1(&motorSpeed1, &motorPWM1, &motorSetSpeed1, Kp1, Ki1, Kd1, DIRECT);
    PID PIDmotor2(&motorSpeed2, &motorPWM2, &motorSetSpeed2, Kp2, Ki2, Kd2, DIRECT);

    // set PID mode
    PIDmotor1.SetMode(AUTOMATIC);
    PIDmotor2.SetMode(AUTOMATIC);

    PIDmotor1.SetOutputLimits(-1f, 1f);
    PIDmotor2.SetOutputLimits(-1f, 1f);
    }


void motorControl(){
    if(motorEnable){  // only run motors if switch is enabled

    // get encoder positions
        // check if motor's are within rotational boundarys
    // calculate  encoder speeds
    // translate to x/y speed
        
    // compute new PID parameters using setpoint speeds and x/y speeds
        PIDmotor1.compute();
        PIDmotor2.compute();
    // write new values to motor's
        
    }else{
        // write 0 to motors
    }
}

void servoControl(){
    // use potMeter Value to set servo angle
    // (optionaly calculate xy position to keep balloon in position)
        // calculate z position using angle
        // calculate x y translation of endpoint
        // find new x and y speed.
    
    }
    
void pumpControl(){
    if (pumpButton == HIGH){
        // write pumpPin High
        }else{
        // write pumpPin Low    
        }
    }