一 . 器件
arduino uno
hc-08蓝牙模块
sg08舵机
公公,公母杜邦线
扎线,胶带
二 . 器件详解
- hc-08蓝牙模块
VCC 接电源的正极(最好接3.3V,我感觉5v要烧掉)
VDD 为外接供电电源输入端(不用接)
GND 接地线
TXD:模块串口发送引脚,可直接接单片机的RXD引脚
RXD:模块串口接收引脚,可直接接单片机的TXD引脚
KEY:用于进入AT状态(也不用接)
LED:这个引脚是用来检测蓝牙模块是否已经连接上了其他蓝牙设备 - sg90舵机
红-------------------------VCC
棕色----------------------GND
橙色----------------------arduino 9号引脚
三 . 思路
- 写舵机代码,控制舵机正反转180度
因为arduino有自带的servo库,所以代码写起来并不复杂,网上也有很多开源资料,具体代码最后展示。 - 测试蓝牙模块
因为买的是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 恢复出厂默认设置
- 用蓝牙模块控制舵机
这一步其实挺简单的,只要判断有没有发送数据,如果有,就进行正反转;如果没有,就继续循环。
四 . 完整代码
#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舵机
公公,公母杜邦线
扎线,胶带
二 . 器件详解
- hc-08蓝牙模块
VCC 接电源的正极(最好接3.3V,我感觉5v要烧掉)
VDD 为外接供电电源输入端(不用接)
GND 接地线
TXD:模块串口发送引脚,可直接接单片机的RXD引脚
RXD:模块串口接收引脚,可直接接单片机的TXD引脚
KEY:用于进入AT状态(也不用接)
LED:这个引脚是用来检测蓝牙模块是否已经连接上了其他蓝牙设备 - sg90舵机
红-------------------------VCC
棕色----------------------GND
橙色----------------------arduino 9号引脚
三 . 思路
- 写舵机代码,控制舵机正反转180度
因为arduino有自带的servo库,所以代码写起来并不复杂,网上也有很多开源资料,具体代码最后展示。 - 测试蓝牙模块
因为买的是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 恢复出厂默认设置
- 用蓝牙模块控制舵机
这一步其实挺简单的,只要判断有没有发送数据,如果有,就进行正反转;如果没有,就继续循环。
四 . 完整代码
#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
暂无评论