基于arudino和HC08的舵机控制

一 . 器件

arduino uno
hc-08蓝牙模块
sg08舵机
公公,公母杜邦线
扎线,胶带

二 . 器件详解

  1. hc-08蓝牙模块
    VCC 接电源的正极(最好接3.3V,我感觉5v要烧掉)
    VDD 为外接供电电源输入端(不用接)
    GND 接地线
    TXD:模块串口发送引脚,可直接接单片机的RXD引脚
    RXD:模块串口接收引脚,可直接接单片机的TXD引脚
    KEY:用于进入AT状态(也不用接)
    LED:这个引脚是用来检测蓝牙模块是否已经连接上了其他蓝牙设备
  2. sg90舵机
    红-------------------------VCC
    棕色----------------------GND
    橙色----------------------arduino 9号引脚

三 . 思路

  1. 写舵机代码,控制舵机正反转180度
    因为arduino有自带的servo库,所以代码写起来并不复杂,网上也有很多开源资料,具体代码最后展示。
  2. 测试蓝牙模块
    因为买的是hc-08,这个蓝牙模块网上资料很少,所以直接进hc的官网(www.hc01.com)找资料。
    上电后,看见hc-08上蓝光闪烁,说明进入AT模式了。这时候打开arduino的串口监视器,输入“AT”(注意要大写), 返回“OK”即说明成功进入AT模式,可以设置相关的参数。
AT+VERSION?           返回HC-05的软件版本号
AT+NAME?          返回HC-05的名字
AT+UART?            返回蓝牙波特率
AT+UART=115200,0,0       设置串口波特率115200,1位停止位,无校验
AT+NAME=bluetooth         修改蓝牙模块的名字为bluetooth
AT+PSWD?           查询配对密码
AT+PSWD=1234”          设置密码1234
AT+ROLE?           查询主从状态,=1:设置成主,=0:设置成从,=2:设置成回环
AT+ROLE=0           设置成从
AT+ORGL            恢复出厂默认设置
  1. 用蓝牙模块控制舵机
    这一步其实挺简单的,只要判断有没有发送数据,如果有,就进行正反转;如果没有,就继续循环。

四 . 完整代码

#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial BT(8, 9);
Servo myservo;  // 定义Servo对象来控制
char val;
int pos = 0;    // 角度存储变量

void setup() {
  Serial.begin(9600);
  Serial.println("BT is ready!");
  BT.begin(9600);
  pinMode(13,OUTPUT);
  myservo.attach(10);  // 控制线连接数字10
}
void loop() {
  //如果串口接收到数据,就输出到蓝牙串口
  if (Serial.available()) {
    val = Serial.read();
    BT.print(val);
  }
  //如果接收到蓝牙模块的数据,输出到屏幕
  if (BT.available()) {
    val = BT.read();
    if(val == '1'){
      digitalWrite(13, HIGH);
      for (pos = 0; pos <= 180; pos ++) 
        { 
           myservo.write(pos);              // 0°到180°,舵机角度写入
           delay(2);                       // 等待转动到指定角度
        }
    }
    if(val == '2'){
      digitalWrite(13, LOW);
      for (pos = 180; pos >= 0; pos --) 
        { 
           myservo.write(pos);              // 180°到0°,舵机角度写入
           delay(2);                       // 等待转动到指定角度
        }
    }
    Serial.print(val);
  }
}

版权声明:本文为CSDN博主「WFForstar」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/skyllerone/article/details/122509406

一 . 器件

arduino uno
hc-08蓝牙模块
sg08舵机
公公,公母杜邦线
扎线,胶带

二 . 器件详解

  1. hc-08蓝牙模块
    VCC 接电源的正极(最好接3.3V,我感觉5v要烧掉)
    VDD 为外接供电电源输入端(不用接)
    GND 接地线
    TXD:模块串口发送引脚,可直接接单片机的RXD引脚
    RXD:模块串口接收引脚,可直接接单片机的TXD引脚
    KEY:用于进入AT状态(也不用接)
    LED:这个引脚是用来检测蓝牙模块是否已经连接上了其他蓝牙设备
  2. sg90舵机
    红-------------------------VCC
    棕色----------------------GND
    橙色----------------------arduino 9号引脚

三 . 思路

  1. 写舵机代码,控制舵机正反转180度
    因为arduino有自带的servo库,所以代码写起来并不复杂,网上也有很多开源资料,具体代码最后展示。
  2. 测试蓝牙模块
    因为买的是hc-08,这个蓝牙模块网上资料很少,所以直接进hc的官网(www.hc01.com)找资料。
    上电后,看见hc-08上蓝光闪烁,说明进入AT模式了。这时候打开arduino的串口监视器,输入“AT”(注意要大写), 返回“OK”即说明成功进入AT模式,可以设置相关的参数。
AT+VERSION?           返回HC-05的软件版本号
AT+NAME?          返回HC-05的名字
AT+UART?            返回蓝牙波特率
AT+UART=115200,0,0       设置串口波特率115200,1位停止位,无校验
AT+NAME=bluetooth         修改蓝牙模块的名字为bluetooth
AT+PSWD?           查询配对密码
AT+PSWD=1234”          设置密码1234
AT+ROLE?           查询主从状态,=1:设置成主,=0:设置成从,=2:设置成回环
AT+ROLE=0           设置成从
AT+ORGL            恢复出厂默认设置
  1. 用蓝牙模块控制舵机
    这一步其实挺简单的,只要判断有没有发送数据,如果有,就进行正反转;如果没有,就继续循环。

四 . 完整代码

#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial BT(8, 9);
Servo myservo;  // 定义Servo对象来控制
char val;
int pos = 0;    // 角度存储变量

void setup() {
  Serial.begin(9600);
  Serial.println("BT is ready!");
  BT.begin(9600);
  pinMode(13,OUTPUT);
  myservo.attach(10);  // 控制线连接数字10
}
void loop() {
  //如果串口接收到数据,就输出到蓝牙串口
  if (Serial.available()) {
    val = Serial.read();
    BT.print(val);
  }
  //如果接收到蓝牙模块的数据,输出到屏幕
  if (BT.available()) {
    val = BT.read();
    if(val == '1'){
      digitalWrite(13, HIGH);
      for (pos = 0; pos <= 180; pos ++) 
        { 
           myservo.write(pos);              // 0°到180°,舵机角度写入
           delay(2);                       // 等待转动到指定角度
        }
    }
    if(val == '2'){
      digitalWrite(13, LOW);
      for (pos = 180; pos >= 0; pos --) 
        { 
           myservo.write(pos);              // 180°到0°,舵机角度写入
           delay(2);                       // 等待转动到指定角度
        }
    }
    Serial.print(val);
  }
}

版权声明:本文为CSDN博主「WFForstar」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/skyllerone/article/details/122509406

生成海报
点赞 0

WFForstar

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

Arduino 水滴检测

实物连接图: 电路图: 代码: void setup() {pinMode(3, OUTPUT);pinMode(2, INPUT); }void loop() {bool va2 digitalR

【Arduino实验12 1602 LCD显示】

目录 一、实验目的 二、实验设备与环境 三、实验重点 四、实验难点 五、实验内容 5.1实验任务 5.2实验原理 5.3实验内容 5.4实验结果   5.5思考题 一、实验目的 (1)熟悉1602LCD液晶显示模块的功能 (

【Arduino实验16 步进电机的控制】

目录 一、实验目的 二、实验设备与环境 三、实验重点 四、实验难点 五、实验内容 5.1实验任务 5.2实验原理 5.3 实验内容 5.4实验结果 5.5思考题 一、实验目的 (1)掌握ULN2003AN驱动阵列的原理&#x

基于arudino和HC08的舵机控制

一 . 器件 arduino uno hc-08蓝牙模块 sg08舵机 公公,公母杜邦线 扎线,胶带 二 . 器件详解 hc-08蓝牙模块 VCC 接电源的正极(最好接3.3V,我感觉5v要烧掉)