制作出來的實物圖如下:
IMG_20181205_180500.jpg (169.9 KB, 下載次數: 56)
下載附件
2018-12-5 18:23 上傳
IMG_20181205_180500_1.jpg (151.11 KB, 下載次數: 49)
下載附件
2018-12-5 18:23 上傳
IMG_20181205_180509_1.jpg (127.88 KB, 下載次數: 51)
下載附件
2018-12-5 18:23 上傳
硬件:Arduino UNO 三個舵機 一個步進電機 閃色LED
代碼:
//3自由度機械臂
#include <Stepper.h>
#include <Servo.h>
#define LED 5
Servo myservo1; //第一個舵機
Servo myservo2; //第二個舵機
Servo myservo3; //第二個舵機
int pos1 = 0; // 該變量用與存儲舵機1角度位置
int pos2 = 0; // 該變量用與存儲舵機2角度位置
const int stepsPerRevolution = 500; //步進電機旋轉范圍
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);// 步進電機pin腳:
void setup() {
myservo1.attach(2); // 該舵機由arduino第2腳控制
myservo2.attach(3); // 該舵機由arduino第3腳控制
myservo3.attach(4); // 該舵機由arduino第4腳控制
myservo1.write(0); // 指定舵機1轉向的角度0
delay(50);
myservo2.write(0); // 指定舵機2轉向的角度0
delay(50);
myservo3.write(0); // 指定舵機2轉向的角度0
delay(50);
// set the speed at 60 rpm:
myStepper.setSpeed(60); //步進電機轉速
Serial.begin(9600);
}
void loop() {
//Serial.println("clockwise");
myStepper.step(stepsPerRevolution); //步進電機順時鐘轉
delay(1000);
//舵機12
for(pos1 = 0; pos1 <40; pos1 += 2) {
myservo1.write(pos1); // 指定舵機1轉向的角度
myservo2.write(40-pos1); // 指定舵機2轉向的角度
delay(60); // 等待0.8ms讓舵機到達指定位置
}
bright();
delay(1000);
//舵機3
for(pos2 = 0; pos2 < 80; pos2 += 2) {
myservo3.write(pos2); // 指定舵機1轉向的角度
delay(60); // 等待0.8ms讓舵機到達指定位置
}
bright();
delay(1000);
//Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);//步進電機順時鐘轉
delay(1000);
//舵機12
for(pos1 = 40; pos1 >0; pos1 -= 2){
myservo1.write(pos1); // 指定舵機1轉向的角度
myservo2.write(40-pos1); // 指定舵機1轉向的角度
delay(60); // 等待0.8ms讓舵機到達指定位置
}
bright();
delay(1000);
//舵機3
for(pos2 = 80; pos2 >0; pos2 -= 2) {
myservo3.write(pos2); // 指定舵機1轉向的角度
delay(60); // 等待0.8ms讓舵機到達指定位置
}
bright();
delay(1000);
}
void bright() //設置舵機角度為angle
{
digitalWrite(LED,HIGH); //點亮LED
delay(800); //延時200ms
digitalWrite(LED,LOW); //關閉LED delay(200); //延時200ms
}
視頻:
https://pan.baidu.com/s/1BLlM21NCnPNQMG9yK2mVAQ
|