基于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 
#include 
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);
  }
}

你可能感兴趣的:(单片机,物联网,arduino,c语言)