美文网首页
用arduino蓝牙模块控制led

用arduino蓝牙模块控制led

作者: 蓝胖子_8b69 | 来源:发表于2019-05-16 09:21 被阅读0次

一、工具

(1)arduino 开发板一块

(2)HC05或HC06蓝牙模块一个

(3)杜邦线若干根

(4)USB通讯线一根

(5)ANDROID手机一个

(6)面包板一个

二、 通信原理图

三、蓝牙模块引脚说明

四、电路接线图

五、操作步骤

1 将arduino控制板连接USB上电。

2 上传代码(代码见文末)

         一定要注意上传代码时保证arduino控制板上数字输入输出端0和1接口不接任何外接设备,否则无法上传,即先将程序上传至arduino控制板再将HC-06连接在控制板的串口引脚上。

3 按上图接线,正确检查无误后连接USB上电会看到蓝牙模块有红色指示灯闪烁。这时,打开智能手机,以ANDROID手机为例。打开蓝牙开关并搜索找到相应的模块后如果是HC-06那么点击后连接配对,一般会要输入配对密码,一般为1234 或0000,输入后配对成功。

4 在手机端的蓝牙应用中与蓝牙模块连接,连接成功后红色指示灯常亮。此时便可以操作了。

注:蓝牙应用可在网上下载

六 代码

1 蓝牙模块控制led的亮灭

char val;

int ledpin=11;

void setup()

{

  Serial.begin(9600);

  pinMode(ledpin,OUTPUT);

}

void loop()

{

  val=Serial.read();

  if(val=='0')

  {

    digitalWrite(ledpin,HIGH);

    Serial.println("LED ON!");

  }else if(val=='1'){

  digitalWrite(ledpin,LOW);

Serial.println("LED OFF!");

  }

}

2 蓝牙模块控制led的亮度(程序可能有问题)

int brightness; //LED亮度变量

int serialData;  //串口数据变量

void setup() {

  Serial.begin(9600);

  pinMode(LED_BUILTIN, OUTPUT);

  pinMode(11, OUTPUT);

}

void loop(){

  if( Serial.available()>0 ){            //如果串口缓存有数据

    serialData =  Serial.parseInt();      //将串口缓存数值存储到serialData变量

    Serial.print("serialData = "); Serial.println(serialData); 

    if (serialData >=0 && serialData <= 255) { 

      if (serialData >= brightness){      //逐渐调节LED亮度

        for (brightness; brightness <= serialData; brightness++){

          analogWrite(11, brightness);

          Serial.print("brightness = "); Serial.println(brightness); 

          delay(5);

        }     

      } else if (serialData < brightness){

        for (brightness; brightness >= serialData; brightness--){

          analogWrite(11, brightness);

          Serial.print("brightness = "); Serial.println(brightness);         

          delay(5);         

        }       

      } 

注:此代码以11号引脚为输出

七、补充(通过蓝牙模块实现arduino与手机的通信,数据传输)

1 线路连接图

TX接端口2,RX接端口3,电源接5v

2 连接成功后,在手机端输入数据即可在arduino IDE上接收到,或者在arduino IDE上输入数据即可在手机端接受到。

3 代码

#include <SoftwareSerial.h>

SoftwareSerial BTserial(2, 3); // 建立SoftwareSerial对象,RX引脚2, TX引脚3

void setup() {

  Serial.begin(9600);

  BTserial.begin(9600); // HC-06 默认波特率 9600

  Serial.print("HC-06 DEMO/TEST  ");

  BTserial.print("AT");  //可在此处输入设置HC-06蓝牙模块的AT指令。

                          //此AT指令须在HC-06未连接蓝牙状态输入。

  pinMode(11, OUTPUT);                       

}

void loop(){

    // 通过串口监视器显示HC-06发送的数据

    if( BTserial.available()>0 ){            //如果软件串口有HC-06发来的数据

      char BTserialData =  BTserial.read();  //将软件串口中的数据赋值给变量BTserialData

      Serial.print( BTserialData );        //通过硬件串口监视器显示HC-06发来的数据

      if (BTserialData == '1') {            //判断HC-06发来的数据是否是字符1

        digitalWrite(11, HIGH);              //如果是字符1,则点亮LED

      } else if (BTserialData == '0') {      //如果不是字符0

        digitalWrite(11, LOW);              //则熄灭LED

      }

    }

    // 将用户通过串口监视器输入的数据发送给HC-06

    if (Serial.available()>0) {            //如果硬件串口缓存中有等待传输的数据

      char serialData =  Serial.read();    //将硬件串口中的数据赋值给变量serialData

      BTserial.print( serialData );        //将硬件串口中的数据发送给HC-06

    }

}

4 AT指令

相关文章

网友评论

      本文标题:用arduino蓝牙模块控制led

      本文链接:https://www.haomeiwen.com/subject/trsmiqtx.html