【雕爷学编程】Arduino动手做(173)---SG90舵机双轴云台模块2

2023-08-01798
AI 快速预览详细 收起
本项目介绍了如何使用Arduino控制SG90二自由度舵机云台。通过串口输入不同的指令代码(如‘u’、‘d’、‘r’、‘l’),可以实现云台的上下左右转动。项目提供了详细的代码示例和实验场景图,适合初学者快速上手。此外,还展示了如何利用Servo库和一个摇杆来控制两个小舵机的云台。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十三:SG90二自由度舵机云台塑料支架MG双轴机械手臂航模监控智能机器人

实验开源图形编程(Mind+、编玩边学)

 

10.jpg

11.jpg

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十三:SG90二自由度舵机云台塑料支架MG双轴机械手臂航模监控智能机器人
项目:在串口下通过输入不同的指令代码来调整上下舵机的角度
说明:当你在串口监视器上输入‘u’时,云台将向上转动5°。输入‘d’,‘r’,‘l’同理。
Arduino实验开源代码

代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十三:SG90二自由度舵机云台塑料支架MG双轴机械手臂航模监控智能机器人
项目:通过串口驱动二轴云台
说明:当你在串口监视器上输入‘u’时,云台将向上转动60°。输入‘d’,‘r’,‘l’同理。
*/

// 加载 舵机 库
#include <Servo.h>

Servo up, down;
int a = 60, b = 30;  //上下舵机初始角度


void setup()  //初始化
{
  up.attach(10, 1000, 2000);   //上面的舵机附加到引脚10
  down.attach(9, 1000, 2000);  //下面的舵机附加到引脚9
  up.write(a);                 //上面的舵机初始角度为60°
  down.write(b);               //下面的舵机初始角度为30°
  Serial.begin(9600);
}

void loop() {
  while (Serial.available() > 0)  //当Serial.available()>0时,说明串口接收到了数据,可以读取。
  {
    char flag = Serial.read();
    delay(2);
    if (flag == 'u')  //当串口输入‘u’时,上舵机向上转动60°
      a = a + 60;
    if (flag == 'd')  //当串口输入‘d’时,上舵机向下转动60°
      a = a - 60;
    if (flag == 'l')  //当串口输入‘l’时,下舵机向左转动60°
      b = b + 60;
    if (flag == 'r')  //当串口输入‘r’时,下舵机向右转动60°
      b = b - 60;
  }
  up.write(a);
  down.write(b);
}

Arduino实验场景,串口输入“d”

 

13.jpg

Arduino实验场景图

 

08-.jpg

 

Arduino动手做:SG90舵机双轴云台模块2 | DF创客社区_image_1.webp
Arduino动手做:SG90舵机双轴云台模块2 | DF创客社区_image_2.webp
Arduino动手做:SG90舵机双轴云台模块2 | DF创客社区_image_3.webp
Arduino动手做:SG90舵机双轴云台模块2 | DF创客社区_image_4.webp
Arduino动手做:SG90舵机双轴云台模块2 | DF创客社区_image_5.webp

12.gif

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十三:SG90二自由度舵机云台塑料支架MG双轴机械手臂航模监控智能机器人
项目:利用servo库和一个摇杆控制两个小舵机的云台
Arduino实验开源代码
 

代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百七十三:SG90二自由度舵机云台塑料支架MG双轴机械手臂航模监控智能机器人
项目:利用servo库和一个摇杆控制两个小舵机的云台
*/

// 加载舵机库
#include <Servo.h>
Servo a;
Servo b;
int i, p, j, k;

void setup() {
  a.attach(9);   //指定舵机a的OUT引脚为9号引脚
  b.attach(10);  //指定舵机b的OUT引脚为10号引脚
  Serial.begin(9600);
}

void loop() {
  i = analogRead(A0);  //获取A0引脚的输入值,即PS2摇杆X轴的数值
  j = analogRead(A1);  //获取A1引脚的输入值,即PS2摇杆Y轴的数值
  Serial.print("映射前x轴:");
  Serial.print(i);
  Serial.print(" ");
  Serial.print("映射前y轴:");
  Serial.print(j);
  Serial.print(" ");
  p = map(i, 0, 1023, 0, 180);  //将0到1023的值映射成0到180
  k = map(j, 0, 1023, 0, 180);
  Serial.print("映射后x轴:");
  Serial.print(p);
  Serial.print(" ");
  Serial.print("映射后y轴:");
  Serial.println(k);
  a.write(p);  //设置舵机a角度为p
  b.write(k);  //设置舵机b角度为k
}

实验串口返回情况

 

14.jpg

15.jpg

Arduino实验场景图

 

16.jpg

 

 

17.gif

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -