arduino控制多个舵机

用arduino控制并行三个舵机,但每个舵机的转动角度不同,且有一个舵机不转动,怎么办

#include <Servo.h>            //加载文件库
int pos = 0;
Servo myservo;
 
void setup()
{
  myservo.attach(22);          //修正脉冲宽度
}
 
void loop()
{
  for (pos = 130; pos <=200 ; pos += 1) {       //pos+=1等价于pos=pos+1
    myservo.write(pos);
    delay(15);                    
  }

  for (pos = 200; pos >= 130; pos -= 1) {
    myservo.write(pos);
    delay(15);                     
  }

}

三个舵机的代码呢,这里只有一个呀
而且为什么要写for循环,直接write(130)不行吗
你的舵机只有输出信号,没有反馈信号吗,你怎么判断舵机转到位了没有呢

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7490854
  • 这篇博客你也可以参考下:Arduino入门小程序大合集(跑马灯,控制温湿度,定时器,控制数码管等)
  • 除此之外, 这篇博客: 通过串口传值给Arduino,再通过Arduino控制小车(直流电机)移动与二自由度云台转动角度中的 上诉代码后面都有详细的解释了,就不再重复解释了。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 然后,你可以通过串口监视器输入‘f’控制小车前进一段距离,同理输入‘b’控制小车后退一段距离。输入‘60,30’控制二自由度云台转动到(60°,30°)。注意‘,’为英文下的逗号。
    也可以使用各种串口通信的方式,通过其他东西(如:树莓派)传值给Arduino的串口来控制他的直流电机与云台。

  • 您还可以看一下 张三编程分享老师的交互设计之Arduino基础课程中的 Arduino开发环境搭建小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    首先,我们需要使用适配器将多个舵机连接到Arduino。适配器将用于提供舵机需要的电源和信号控制。可以选择使用PCA9685舵机驱动器适配器。

    接下来,我们需要编写Arduino代码来控制舵机运动。

    首先,我们需要包含所需的库文件,例如:"Wire.h"和 "Adafruit_PWMServoDriver.h"。

    然后,我们需要初始化适配器和设置舵机的相关参数。例如,引入所需的库文件并初始化适配器和舵机对象。

    接下来,我们可以设置舵机的角度。我们可以使用舵机对象的"setPWM"函数,该函数接受舵机通道(从0到15)和角度(0到180)作为参数。

    对于不需要转动的舵机,我们可以选择跳过设置角度的步骤。

    最后,我们可以使用延时函数来控制舵机的运动时间。您可以使用"delay"函数来设置延时时间。

    以下是伪代码示例:

    #include <Wire.h>
    #include <Adafruit_PWMServoDriver.h>
    
    // 设置舵机驱动器对象
    Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
    
    void setup() {
      // 初始化舵机驱动器
      pwm.begin();
    
      // 设置舵机驱动器的频率和电源电压
      pwm.setPWMFreq(50);  // 设置频率为50Hz
      pwm.setVoltage(5);   // 设置电源电压为5V
    
      // 设置舵机通道0的角度为90度
      pwm.setPWM(0, 0, map(90, 0, 180, 150, 600));
    
      // 设置舵机通道1的角度为30度
      pwm.setPWM(1, 0, map(30, 0, 180, 150, 600));
    
      // 不需要转动的舵机可以跳过设置角度的步骤
    }
    
    void loop() {
      // 控制舵机同时进行运动
    
      // 设置舵机通道2的角度为60度
      pwm.setPWM(2, 0, map(60, 0, 180, 150, 600));
    
      // 设置舵机通道3的角度为120度
      pwm.setPWM(3, 0, map(120, 0, 180, 150, 600));
    
      // 设置舵机通道4的角度为75度
      pwm.setPWM(4, 0, map(75, 0, 180, 150, 600));
    
      // 设置舵机通道5的角度为135度
      pwm.setPWM(5, 0, map(135, 0, 180, 150, 600));
    
      // 设置舵机通道6的角度为0度(不需要转动)
      // 不需要转动的舵机可以跳过设置角度的步骤
    
      // 延时一段时间
      delay(1000);
    }
    

    请注意,上述代码中将的角度参数进行了映射。因为舵机需要接收特定范围的PWM信号来控制其角度,而舵机驱动器的PWM范围可能与舵机不同。因此,我们需要通过映射函数将角度转换为舵机驱动器所需的PWM值。

    这是使用Arduino控制多个舵机并行运动的一个基本解决方案。然而,具体实现可能会因舵机类型、适配器和Arduino型号的不同而有所不同。因此,在实际操作中,您可能需要参考具体的舵机和适配器的文档以及Arduino的库文件和示例代码来进行更详细和准确的设置和控制。