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