回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

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

头像 驴友花雕 2023.08.01 460 1

【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

 

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

评论

user-avatar
  • hacker_

    hacker_2023.08.02

    666

    0
    icon 他的勋章
      展开更多