使用材料:
PS摇杆
Arduino UNO
Arduino Sensor Shield
4轴机械臂
舵机
LM2596 降压模块
电池
#include <Servo.h> // 声明调用Servo.h库
Servo myservo1;// 创建一个舵机对象
Servo myservo2;
Servo myservo3;
Servo myservo4;
int sw = 2;
int pos1 = 95; // 变量pos用来存储舵机位置
int pos2 = 60;
int pos3 = 85;
int pos4 = 88;
void setup() {
myservo1.attach(3);
myservo2.attach(5);
myservo3.attach(6);
myservo4.attach(9);
myservo1.write(pos1); //30-95,30为开。
myservo2.write(pos2); //0-180,0为前
myservo3.write(pos3); //0-180,0为前
myservo4.write(pos4); //0-180,0为右
pinMode(sw, INPUT);
digitalWrite(sw, HIGH); //默认给2号引脚设置高电平,当按钮按下时,2号引脚度数变为0.
Serial.begin(9600);
Serial.println("aaaaaaaaaaaaaa");
}
void loop() {
int x = analogRead(A0);
int y = analogRead(A1);
int z = digitalRead(sw);
if (z == 1 && x < 500) {
myservo4.write(pos4);
pos4 = pos4 + 1;
if (pos4 > 180) {
pos4 = 180;
}
delay(20);
}
if (z == 1 && x > 600) {
myservo4.write(pos4);
pos4 = pos4 - 1;
if (pos4 < 0) {
pos4 = 0;
}
delay(20);
}
if (z == 1 && y < 500) {
myservo3.write(pos3);
pos3 = pos3 - 1;
if (pos3 < 0) {
pos3 = 0;
}
delay(20);
}
if (z == 1 && y > 600) {
myservo3.write(pos3);
pos3 = pos3 + 1;
if (pos3 > 180) {
pos3 = 180;
}
delay(20);
}
if (z == 0 && y < 500) {
myservo2.write(pos2);
pos2 = pos2 - 1;
if (pos2 < 0) {
pos2 = 0;
}
delay(20);
}
if (z == 0 && y > 600) {
myservo2.write(pos2);
pos2 = pos2 + 1;
if (pos2 > 180) {
pos2 = 180;
}
delay(20);
}
if (z == 0 && x < 500) {
myservo1.write(pos1);
pos1 = pos1 - 1;
if (pos1 < 30) {
pos1 = 30;
}
delay(20);
}
if (z == 0 && x > 600) {
myservo1.write(pos1);
pos1 = pos1 + 1;
if (pos1 > 95) {
pos1 = 95;
}
delay(20);
}
delay(30);
Serial.print(z);
Serial.print(",");
Serial.print(pos1);
Serial.print(",");
Serial.print(pos2);
Serial.print(",");
Serial.print(pos3);
Serial.print(",");
Serial.println(pos4);
}