首先要进入AT模式:
#include <SoftwareSerial.h>
// Pin10为RX,接HC05的TXD
// Pin11为TX,接HC05的RXD
SoftwareSerial BT(10, 11);
char val;
void setup() {
Serial.begin(38400);
Serial.println("BT is ready!");
// HC-05默认,38400
BT.begin(38400);
}
void loop() {
if (Serial.available()) {
val = Serial.read();
BT.print(val);
}
if (BT.available()) {
val = BT.read();
Serial.print(val);
}
}
然后将arduino断电,按着蓝牙模块的黑色按钮然后给arduino通电(一定要把arduino一起断电,不要只断hc05),如果蓝牙按照两秒的频率闪烁指示灯们就说明进入了AT模式,输入AT如果返回OK则正常
AT代码:
AT+ORGL # 恢复出厂模式
AT+NAME=<Name> # 设置蓝牙名称
AT+ROLE=0 # 设置蓝牙为从模式
AT+CMODE=1 # 设置蓝牙为任意设备连接模式
AT+PSWD=<Pwd> # 设置蓝牙匹配密码
接下来利用hc05控制13引脚的led
void setup()
{
// 设置波特率为 38400
Serial.begin(38400);
pinMode(13, OUTPUT);
}
void loop()
{
while(Serial.available())
{
char c=Serial.read();
if(c=='1')
{
Serial.println("BT is ready!");
// 返回到手机调试程序上
Serial.write("Serial--13--high");
digitalWrite(13, HIGH);
}
if(c=='2')
{
Serial.write("Serial--13--low");
digitalWrite(13, LOW);
}
}
}
注意,如果是mega2560的板子他有4组tx和rx
Arduino MEGA的板子上共有4对Tx,Rx引线口.
分别是(RX1 19、TX1 18)、(RX2 17、TX2 16)、(RX3 15、TX3 14)
如果我们要使用手机通信的话最好不要使用0和1号脚位
代码例子:
void setup()
{
Serial.begin(19200); //串口0,就是PWM区域里的Pin0和Pin1脚
Serial1.begin(19200); //串口1,即Pin19及Pin18
Serial2.begin(19200); //串口2,即Pin17及Pin16
Serial3.begin(19200); //串口1,即Pin15及Pin14
}
void loop()
{
int val;
val=Serial.read();
Serial.print("Hello!"); //向串口0发送信息
Serial1.print("Hello!"); //向串口1发送信息
Serial2.print("Hello!"); //向串口2发送信息
Serial3.print("Hello!"); //向串口3发送信息
delay(500); //发送的间隔时间(1000=1秒)
}
这里我选择了第三组
void setup()
{
// 设置波特率为 38400
Serial3.begin(38400);
pinMode(13, OUTPUT);
}
void loop()
{
while(Serial3.available())
{
char c=Serial3.read();
if(c=='1')
{
Serial3.println("BT is ready!");
// 返回到手机调试程序上
Serial3.write("Serial--13--high");
digitalWrite(13, HIGH);
}
if(c=='2')
{
Serial3.write("Serial--13--low");
digitalWrite(13, LOW);
}
Serial3.println(c);
}
}