问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

用Arduino蓝牙模块控制LED的详细教程

创作时间:
作者:
@小白创作中心

用Arduino蓝牙模块控制LED的详细教程

引用
简书
1.
https://www.jianshu.com/p/fea4c20a4f2e

本文将详细介绍如何使用Arduino和蓝牙模块控制LED的亮灭和亮度调节。通过本教程,读者将学习到蓝牙模块的接线方法、代码编写以及与手机的通信方式。

工具准备

  • Arduino开发板一块
  • HC05或HC06蓝牙模块一个
  • 杜邦线若干根
  • USB通讯线一根
  • Android手机一个
  • 面包板一个

通信原理图

(此处省略具体原理图,实际应用中需要参考相关资料)

蓝牙模块引脚说明

(此处省略具体引脚说明,实际应用中需要参考模块说明书)

电路接线图

(此处省略具体接线图,实际应用中需要参考相关资料)

操作步骤

  1. 将Arduino控制板连接USB上电。
  2. 上传代码(代码见文末)
    注意:上传代码时保证Arduino控制板上数字输入输出端0和1接口不接任何外接设备,否则无法上传。即先将程序上传至Arduino控制板再将HC-06连接在控制板的串口引脚上。
  3. 按照电路接线图接线,正确检查无误后连接USB上电。会看到蓝牙模块有红色指示灯闪烁。这时,打开智能手机,以Android手机为例。打开蓝牙开关并搜索找到相应的模块后如果是HC-06那么点击后连接配对,一般会要输入配对密码,一般为1234 或0000,输入后配对成功。

  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!");  
  }  
}

蓝牙模块控制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

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


  1. 代码实现
#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  
  }  
}
  1. AT指令

(此处省略具体AT指令,实际应用中需要参考模块说明书)

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号