joystick遥杆(PS遥杆) 控制4轴机械臂

本文介绍了一种使用Arduino UNO和PS摇杆控制4轴机械臂的方法。通过读取摇杆的输入信号,Arduino能够精确地控制机械臂上每个舵机的位置,实现机械臂的多维度运动。代码详细展示了如何初始化舵机,设置引脚,以及根据摇杆输入调整舵机角度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

使用材料:

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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值