用Arduino蓝牙模块控制LED的详细教程
创作时间:
作者:
@小白创作中心
用Arduino蓝牙模块控制LED的详细教程
引用
简书
1.
https://www.jianshu.com/p/fea4c20a4f2e
本文将详细介绍如何使用Arduino和蓝牙模块控制LED的亮灭和亮度调节。通过本教程,读者将学习到蓝牙模块的接线方法、代码编写以及与手机的通信方式。
工具准备
- Arduino开发板一块
- HC05或HC06蓝牙模块一个
- 杜邦线若干根
- USB通讯线一根
- Android手机一个
- 面包板一个
通信原理图
(此处省略具体原理图,实际应用中需要参考相关资料)
蓝牙模块引脚说明
(此处省略具体引脚说明,实际应用中需要参考模块说明书)
电路接线图
(此处省略具体接线图,实际应用中需要参考相关资料)
操作步骤
- 将Arduino控制板连接USB上电。
- 上传代码(代码见文末)
注意:上传代码时保证Arduino控制板上数字输入输出端0和1接口不接任何外接设备,否则无法上传。即先将程序上传至Arduino控制板再将HC-06连接在控制板的串口引脚上。 - 按照电路接线图接线,正确检查无误后连接USB上电。会看到蓝牙模块有红色指示灯闪烁。这时,打开智能手机,以Android手机为例。打开蓝牙开关并搜索找到相应的模块后如果是HC-06那么点击后连接配对,一般会要输入配对密码,一般为1234 或0000,输入后配对成功。
- 在手机端的蓝牙应用中与蓝牙模块连接,连接成功后红色指示灯常亮。此时便可以操作了。
注:蓝牙应用可在网上下载
代码实现
蓝牙模块控制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与手机的通信,数据传输
- 线路连接图
TX接端口2,RX接端口3,电源接5V
- 连接成功后,在手机端输入数据即可在Arduino IDE上接收到,或者在Arduino IDE上输入数据即可在手机端接受到。
- 代码实现
#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
}
}
- AT指令
(此处省略具体AT指令,实际应用中需要参考模块说明书)
热门推荐
国际法的六大挑战与应对之道
HXN给水沉淀池泵虹吸式刮泥机技术详解
遇突发紧急情况如何自救急救?专业人员进社区传授方法
什么是有机食品?这篇文章说清楚
烟酰胺口服美白:揭秘专业科学真相
鼻炎与环境因素的关系
倪光南谈开源技术:DeepSeek改变AI产业竞争格局
并非绝症:小细胞肺癌患者也能拥有超过5年,甚至10年的生存机会!
什么是电池级别
感冒后怎样保持充足睡眠 为何感冒会影响睡眠
AI与数字化在基础书法教育中的创新与应用研讨会成功举办
教研活动促进高校青年教师专业成长的实践探索
消化道出血补什么液体
庐山西海~令人心旷神怡的地方
聚焦315|“贷款买车”为何变成了“贷款租车” ?
如何全面解释融资租赁的概念?这种概念的理解有哪些要点?
“人才”“科技”“创新”,构建飞船总装新活力
碳酸锂价格深度分析:从60万元暴跌至7.8万元,储能产业迎来转折点
焦虑是一种正常但需要关注的情绪状态
债务重组:解决欠款问题的新途径
中国十大各类最贵古董,最高5.5亿!
探究古代玉镯的价值:影响因素与市场估价全解析
三亚中院举办破产管理人培训
一文掌握带状疱疹治疗药物(建议收藏)!
我国猪产业要素的重组调整及山东在生猪产业链融合方面的探索
干眼症在夏季易发,雾化熏蒸治疗了解一下→
为何《西游记》里有哪吒,《封神榜》里无孙悟空
野钓高手推荐:蚕豆粉钓鲫鱼饵料配方
农村宅基地确权是什么意思啊
Windows 10/11批处理运行时终端窗口中文显示乱码的解决方法