手臂資料

總重量約為0.6kg

夾取重量約為0.15kg

控制手臂可從序列埠輸入數值控制,序列埠輸入數值 為(asin(列印件距離/100)+50)/0.09//10*10)。

最長夾取距離的序列埠輸入值為2060。

最終程式 #include

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Servo myservo;
Servo myservo2;
Servo myservo3;
Servo myservo4;
int Pin = 3;
int limt;   
void setup() 
{ 
  Serial.begin(9600);
  myservo.attach(9, 500, 2500); // 修正脈衝寬度範圍
  myservo2.attach(10, 500, 2500);// 修正脈衝寬度範圍
  myservo3.attach(10, 500, 2500);
  myservo4.attach(10, 500, 2500);
  pinMode(Pin,INPUT);
}

void loop() 
{ 
    limt = digitalRead(Pin);  
    myservo.write(0);
    myservo2.write(0); 
    myservo3.write(0);
    myservo4.write(0); 
    int d;
    int e;
    if(Serial.available()){
      d = Serial.parseInt();
      Serial.println(d);  
      if(0 <= d && d <= 2500){
      delay(3000);
      for(int i = 500; i <= d; i+=10){
        myservo.writeMicroseconds(i); // 直接以脈衝寬度控制
        myservo2.writeMicroseconds(i);
        myservo3.writeMicroseconds(1500);
        delay(10);
      }
      delay(3000);
      for(int i = 500; i <= 1350 ; i+=10){
      myservo4.writeMicroseconds(i);
      delay(10);
      delay(1000);
      for(int i = d; i >= 500; i-=10){
        myservo.writeMicroseconds(i);
        myservo2.writeMicroseconds(i);
        myservo3.writeMicroseconds(1500);
        delay(10);
      }
      delay(1000);
       for(int i = 1350 ; i >= 500; i-=10){
        myservo4.writeMicroseconds(i);
        delay(10);
      }
      }
    }
  }
}

Comments

comments powered by Disqus