1. 某寶上的四自由度機(jī)械臂拼裝板
2. 9克舵機(jī) x 3
3. Arduino UNO
4. 步進(jìn)電機(jī) x 1
5. 外電源 及 導(dǎo)線
拼裝后發(fā)現(xiàn)原來的底盤旋轉(zhuǎn)舵機(jī)出現(xiàn)頭重腳輕,搖搖欲墜的感覺. 決定改進(jìn),換裝一個(gè)步進(jìn)電機(jī)作為機(jī)械臂的底盤,果然效果外觀都很好.步進(jìn)電機(jī)最好接外部電源,5-9V 都可以.
//四自由度機(jī)械臂程序(三個(gè)9克舵機(jī),一個(gè)步進(jìn)電機(jī). Arduino程序控制.)
#include <Stepper.h>
#include <Servo.h>
//抓手,主臂,次臂三舵機(jī)
Servo myservo1; //抓手
Servo myservo2; //主臂
Servo myservo3; //次臂
int pos =0;
//底盤步進(jìn)電機(jī)
const int stepsPerRevolution=200;
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); //步進(jìn)電機(jī) Pin
int step=0;
void setup() {
//三舵機(jī)Pin
myservo1.attach(2); //Pin 2
myservo2.attach(3); //Pin 3
myservo3.attach(4); //Pin 4
//三舵機(jī)復(fù)位
myservo1.write(0);
delay(150);
myservo2.write(0);
delay(150);
myservo3.write(0);
delay(150);
myStepper.setSpeed(30);
}
void loop() {
//第一次順環(huán)動(dòng)作
s1open(20); //抓手開啟
delay(1000);
s2Forward(45); //主臂向前 45 度
delay(1000);
s1close(20); //抓手關(guān)閉
delay(1000);
s2Backward(45); //主臂向后 45 度
delay(1000);
s3Forward(45); //次臂抬升 45 度
Stepper(200); //步進(jìn)電機(jī)正轉(zhuǎn) 200 步
delay(500);
delay(1000);
//第二次順環(huán)動(dòng)作
s2Forward(45); //主臂向前 45 度
delay(1000);
s3Backward(45); //次臂下降 45 度
delay(1000);
s1open(20); //抓手開啟
delay(1000);
s1close(20); //抓手關(guān)閉
delay(1000);
s2Backward(45); //主臂向后 45 度
//s3Forward(45); //次臂抬升 45 度
Stepper(-200); //步進(jìn)電機(jī)反轉(zhuǎn) 200 步
delay(500);
delay(1000);
}
//抓手開啟
void s1open(int anlge) {
for (pos = 0; pos <= anlge; pos += 1) {
myservo1.write(pos);
delay(30);
}
}
//抓手關(guān)閉
void s1close(int anlge) {
for (pos = anlge; pos >= 0; pos -= 1) {
myservo1.write(pos);
delay(30);
}
}
//主臂向前
void s2Forward(int anlge) {
for (pos = 0; pos <= anlge; pos += 1) {
myservo2.write(pos);
delay(30);
}
}
//主臂向后
void s2Backward(int anlge) {
for (pos = anlge; pos >= 0; pos -= 1) {
myservo2.write(pos);
delay(30);
}
}
//次臂向前
void s3Forward(int anlge) {
for (pos = 0; pos <= anlge; pos += 1) {
myservo3.write(pos);
delay(30);
}
}
//次臂向后
void s3Backward(int anlge) {
for (pos = anlge; pos >= 0; pos -= 1) {
myservo3.write(pos);
delay(30);
}
}
//步進(jìn)電機(jī)
void Stepper(int stepsPerRevolution) {
myStepper.step(stepsPerRevolution);
delay(500);
}
效果視頻
鏈接:
https://pan.baidu.com/s/12Ih93Nk2UeFAssc5kYogpA 提取碼:vfqo 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦
很好玩的東東.各位朋友如果有更好的玩法請(qǐng)留言.