/* 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); }
/* 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; }
/* 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; } }