2-5、6 控制伺服电机(meArm机械臂)

2-5 控制伺服电机1

在这里插入图片描述

学习如何用arduino控制伺服电机
以及如何用arduino进行串口通讯

此节如何通过串口通信利用arduino控制伺服电机

效果演示

在这里插入图片描述

使用arduino串口接收器,输入一个数值,点击发送,
Arduino收到信号后会根据数值,用来控制伺服电机转动角度

注意首先打开面包板的电源模块

当led灯亮的时候就给面包板供电了
在这里插入图片描述

点击发送180,那么伺服电机就会转动到180度的位置

在这里插入图片描述
在这里插入图片描述

点击发送0,就会转到0的位置
在这里插入图片描述

面包板电源模块

在这里插入图片描述

有两个输入端,都可以接入电源
在这里插入图片描述

USB口公对公的,另一端可以插入电脑、充电器、充电宝等

在这里插入图片描述

开关可以控制面包板电源模块的供电(常用电源口(USB))

在这里插入图片描述

反面有4个插针,进行供电,配合插在面包板上
在这里插入图片描述

注意正负极与面包板对应

在这里插入图片描述

边缘输出旁边有两个黄色跳线,用来控制两端输出电源高度的

电压模块有两种一种正5V,一种3.3v

如何设置输出是+5v

将跳线插在5V的那个位置即可
在这里插入图片描述

若插在面包板电源模块的3.3V的位置,电压输出就是3.3v

在这里插入图片描述

我们的MeArm机械臂就是5v的,要设置成5V

还有额外的插针可以进行3.3v及5v的输出
在这里插入图片描述

电路

在这里插入图片描述

电路连接如上,正负极如上,注意电源模块、电机、arduino都是共地的

注意面包板电源的正极与负极千万不要连接在一起,会烧毁电路

搭建电路时不要带电作业,最后检查正负极是否误接

都是弱电装置,危险系数较低

充电宝供电及其小心,充电宝的电池短接会极度危险

示例程序

在这里插入图片描述

作用简单,只是一部分内容

Arduino在接收到串口数据时,是把字符的ASCII码进行处理的
在这里插入图片描述

使用Serial.parseint() 进行分析串口数据里面,看里面有没有整数信息,若有自动将整数信息提取出来赋值给 int变量pos

在这里插入图片描述

测试,输入的字符中一部分是数字,一部分是其余字符
在这里插入图片描述

可以自动将整数信息提取出来

在这里插入图片描述

实际演示程序

接下来实验演示代码程序
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

/*
Serial-Servo-1
by太极创客(2016-06-2)
www.taichi-maker.com
 
本示例程序为配合太极创客制作的《零基础入门学用Arduino教程-MeArm篇使用》
本示例程序旨在演示如何通过串口监视器控制1个伺服电机(舵机)。
 
有关电路连接以及其他相关内容,请参见太极创客网站关于本示例程序的相关页面。
This example code is in the public domain.
*/
 
#include <Servo.h>
 
Servo myServo;         //创建Servo对象myServo
 
int dataIndex = 0;     //创建整数型变量,存储输入数据序列号
void setup() {
  myServo.attach(6);
  Serial.begin(9600); //启动串口通讯,传输波特率9600
  Serial.println("Please input serial data.");
}
 
void loop() {          // 检查串口缓存是否有数据等待传输 
  if ( Serial.available()>0 ) {  
    dataIndex++;       // 处理数据序列号并通过串口监视器显示
    Serial.print("dataIndex = ");
    Serial.print(dataIndex);
    Serial.print(" , ");      
    
    int pos = Serial.parseInt();   // 解析串口数据中的整数信息并赋值给变量pos
    Serial.print("Set servo position: ");
    Serial.println(pos);           // 通过串口监视器显示变量pos数值
    myServo.write(pos);             // 使用pos变量数值设置伺服电机
    delay(15);
  }
}

下节课将使用串口通讯控制4个伺服电机

2-6 控制伺服电机2

在这里插入图片描述

四个电机就可以控制Mearm机械臂动起来了
在这里插入图片描述

四个电机共地,VCC接在+5v电源(面包板电源上的)
信号控制线,分别连接在了arduino的6、9、10、11号引脚
在这里插入图片描述

给电机分别编号

C控制钳子
F控制前臂
R控制后臂
B控制底盘

在这里插入图片描述

效果演示

下面如何通过arduino的串口通信控制4个电机

通过arduino的串口监视器,给arduino发送一条指令
Arduino接收到指令后,会根据指令对电机进行相应的调整
在这里插入图片描述

B字母电机转动到180度
在这里插入图片描述

给R电机转动到0度
在这里插入图片描述

给R电机转动到0度

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

我们可以控制哪个电机

示例程序

/*
Serial-Servo-2
by太极创客(2016-06-03)
www.taichi-maker.com
本示例程序为配合太极创客制作的《零基础入门学用Arduino教程-MeArm篇》使用
本示例程序旨在演示如何通过串口监视器控制4个伺服电机(舵机)。
有关电路连接以及其他相关内容,请参见太极创客网站关于本示例程序的相关页面。
This example code is in the public domain.
*/
#include <Servo.h>
 
Servo base, fArm, rArm, claw;  //建立4个电机对象
 
int dataIndex = 0;
void setup() {
  base.attach(11);     // base 伺服电机连接引脚11 电机代号'b'
  rArm.attach(10);     // rArm 伺服电机连接引脚10 电机代号'r'
  fArm.attach(9);      // fArm 伺服电机连接引脚9  电机代号'f'
  claw.attach(6);      // claw 伺服电机连接引脚6  电机代号'c'
  Serial.begin(9600);
  Serial.println("Please input serial data.");
}
 
void loop() {
  if (Serial.available()) {  // 检查串口缓存是否有数据等待传输 (b180)
    char servoName = Serial.read();   //获取电机指令中电机编号信息(Serial.read()返回的是接收的第一个字节的信息,就是b字符)
 
    Serial.print("servoName = ");
    Serial.print(servoName);    		//b
    Serial.print(" , ");      
    
    int data = Serial.parseInt();   //获取电机指令中电机角度信息(就是数字180)
 
    switch(servoName){ //根据电机指令中电机信息决定对哪一个电机进行角度设置
      case 'b':   // 电机指令b,设置base电机角度
        base.write(data);
        Serial.print("Set base servo value: ");
        Serial.println(data);
        break;
      case 'r':  // 电机指令r,设置rArm电机角度  
        rArm.write(data);
        Serial.print("Set rArm servo value: ");
        Serial.println(data);
        break;
      case 'f':   // 电机指令f,设置fArm电机角度  
        fArm.write(data);
        Serial.print("Set fArm servo value: ");
        Serial.println(data);
        break;
      case 'c':   // 电机指令c,设置claw电机角度  
        claw.write(data);  
        Serial.print("Set claw servo value: ");
        Serial.println(data);
        break;
    }
  }
}

Char

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

不能存储字符串的

多个字符串是使用双引号进行的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾名招财

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值