Esempio n. 1
0
/* Warning, if you attach left servo & right servo without a movement, it might be caused a demage
*/
void uArmClass::attachAll()
{
    attachServo(SERVO_ROT_NUM);
    attachServo(SERVO_LEFT_NUM);
    attachServo(SERVO_RIGHT_NUM);
    attachServo(SERVO_HAND_ROT_NUM);
}
Esempio n. 2
0
/* Write the left Servo & Right Servo in the same time (Avoid demage the Servo)
* servo_left_angle - left servo target angle
* servo_right_angle  - right servo target angle
* writeWithoffset - True: with Offset, False: without Offset
*/
void uArmClass::writeLeftRightServoAngle(double servo_left_angle, double servo_right_angle, boolean writeWithoffset)
{
    servo_left_angle = constrain(servo_left_angle,0,150);
    servo_right_angle = constrain(servo_right_angle,0,120);
    servo_left_angle = writeWithoffset ? round(inputToReal(SERVO_LEFT_NUM,servo_left_angle)) : round(servo_left_angle);
    servo_right_angle = writeWithoffset ? round(inputToReal(SERVO_RIGHT_NUM,servo_right_angle)) : round(servo_right_angle);
    if(servo_left_angle + servo_right_angle > 180) // if left angle & right angle exceed 180 degree, it might be caused damage
    {
        alert(1, 10, 0);
        return;
    }
    attachServo(SERVO_LEFT_NUM);
    attachServo(SERVO_RIGHT_NUM);
    g_servo_left.write(servo_left_angle);
    g_servo_right.write(servo_right_angle);
}
int main(int argc, char **argv)
{
	setupUUGear();
	
	setShowLogs(0);
	
	/* replace the device id with yours (listed by lsuu) */
	UUGearDevice dev = attachUUGearDevice ("UUGear-Arduino-9886-9947");
	
	if (dev.fd != -1)
	{
		/* attach servo on pin 4 */
		attachServo(&dev, 4);
		
		/* move servo to 30 degrees */
		writeServo(&dev, 4, 30);
		
		/* give some time to move */
		sleep(1);
		
		/* move servo to 90 degrees */
		writeServo(&dev, 4, 90);
		
		/* give some time to move */
		sleep(1);
		
		/* detach servo */
		detachServo(&dev, 4);
		
		detachUUGearDevice (&dev);
	}
	else
	{
		printf("Can not open UUGear device.\n");	
	}

	cleanupUUGear();
		
    return 0;
}
Esempio n. 4
0
/* Write the angle to Servo
* servo_number - SERVO_ROT_NUM, SERVO_LEFT_NUM, SERVO_RIGHT_NUM, SERVO_HAND_ROT_NUM
* servo_angle  - Servo target angle
* writeWithoffset - True: with Offset, False: without Offset
*/
void uArmClass::writeServoAngle(byte servo_number, double servo_angle, boolean writeWithoffset)
{
    attachServo(servo_number);
    servo_angle = writeWithoffset ? round(inputToReal(servo_number,servo_angle)) : round(servo_angle);
    servo_angle = constrain(servo_angle,0,180);
    switch(servo_number)
    {
        case SERVO_ROT_NUM:       g_servo_rot.write(servo_angle);
        cur_rot = servo_angle;
        break;
        case SERVO_LEFT_NUM:      g_servo_left.write(servo_angle);
        cur_left = servo_angle;
        break;
        case SERVO_RIGHT_NUM:     g_servo_right.write(servo_angle);
        cur_right = servo_angle;
        break;
        case SERVO_HAND_ROT_NUM:  g_servo_hand_rot.write(servo_angle);
        cur_hand = servo_angle;
        break;
        default:                  break;
    }
}