制作出来的实物图如下:
硬件: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
硬件: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