Damn_intuition 发表于 2015-10-6 09:04 
其实是代码问题,电机的控制应考虑负载的状况,根据负载惯性算出合适的加减速曲线。
层主大神,你的建议是不是涉及到了机器人学的知识?
小弟arduino端的程序只是简单接送和改变舵机角度,没有考虑舵机的加速度{:3_60:}- /**
- *processing control a 4-DOF mechanical arm
- *by jorneryChen
- *
- *my emial address is [email protected]
- */
- #include<Servo.h>
- #include<LiquidCrystal.h>
- LiquidCrystal lcd(12,11,10,9,8,7);
- Servo myservo;
- Servo myservo1;
- Servo myservo2;
- Servo myservo3;
- int servo =3; //定义舵机信号线接口
- int servo1=4;//小臂
- int servo2=5;//大臂
- int servo3=6;
- int pos;
- int pos1;
- int pos2;
- int pos3;
- void setup()
- {
- lcd.begin(16,2);
- Serial.begin(9600);
- myservo.attach(servo);
- myservo1.attach(servo1);
- myservo2.attach(servo2);
- myservo3.attach(servo3);
- pos=72;
- pos1=60;
- pos2=60;
- pos3=90;
- updateServo();
- }
- void loop()
- {
- recv_data();
- updateServo();
- }
- void recv_data()
- {
- while(Serial.available()>=8)
- {
- char data=Serial.read();
- if(data=='%')
- {
- pos=Serial.read();
- pos1=Serial.read();
- pos2=Serial.read();
- pos3=Serial.read();
- show_data();
- }
- }
- }
- void show_data()
- {
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("pos=");
- lcd.print(pos);
- lcd.print(',');
- lcd.print("pos1=");
- lcd.print(pos1);
- lcd.setCursor(0,1);
- lcd.print("pos2=");
- lcd.print(pos2);
- lcd.print(',');
- lcd.print("pos3=");
- lcd.print(pos3);
- }
- void updateServo()
- {
- myservo.write(pos);
- myservo1.write(pos1);
- myservo2.write(pos2);
- myservo3.write(pos3);
- delay(8);
- }
复制代码 |