IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于app_inventor的手机aap与单片机蓝牙互联教程 -> 正文阅读

[嵌入式]基于app_inventor的手机aap与单片机蓝牙互联教程

需要的工具:单片机,蓝牙通讯模块

步骤一:打开app_inventor开发站点:https://www.wxbit.com/?ref 登录后新建一个项目,不做改动的话,项目名称默认为app名字

界面如下:

将组件BluetoothLE和其他可视组件(如下图)拖入手机屏幕中并设置好大小:

?接下来就是主要的逻辑设置部分了,接下来作详细介绍:

首先:蓝牙传输,必要的三的数据:蓝牙地址接收到的数据及要发送的数据,我们可以设置三个全局变量用于存储这线数据,如图

?

接下来,为程序高效运行,可在屏幕初始化的时候将一些按钮相应的使能与禁用,同时也起到防止误触效果,以免弹出不必要的错误,如图:

?运行完初始化后,便可以进行蓝牙搜索了,(要注意的是:蓝牙6.0以上需要先开启位置定位,否则找不到地址。)拖动相应按钮并设置逻辑,如下,

找到蓝牙地址后,要做的就是连接了:(由于下拉框中的元素列表不仅仅只包含地址,因此需要筛选,为什么是17个字符呢,蓝牙地址不是只有12个十六进制数?因为获取的地址包含了5个)要是你选的不是字符串列表,那就可能需要从第三位开始了,具体看搜索蓝牙时显示的蓝牙地址是否包含[“”]的符号了。

?

?当然,上述按钮点击完了也不知到底是否以及真的连接到了蓝牙还是断开了,于是需要用到主动执行的语句了。(一定要监听,否则接收不到数据,这里可以是其他类型数据,只要你喜欢,不过字符串数据可英可数,挺方便的)

接失败用红色字体,醒目。(合并文本模块的上方文本将被优先放在前头)

?连接好后就可以准备数据传输以及接收了,

?接收到数据后进行文本替换是为了消除传输时的符号,还原原始数据

?进行到这一步,已经可以生成app了,不过还可以更好看,读者可自行美化,此处不做详细介绍,毕竟萝卜青菜各有所好嘛!

接下来点击打包---下载到本机即可;

?

步骤二:

单片机程序,可存于其他c文件中,调用相应函数即可。

/****************************************************************************************??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 单片机串口通讯 ??????????????????????????

(调用时,receive[8]记得加关节字extern表示外部变量)

用到的串口函数:             void init_Uart(void);? //初始化

? ? ? ? ? ? ? ? ? ? ? ? ? ?void sendChar(unsigned char Value);//发送单个字符

? ? ? ? ? ? ? ? ? ? ? ? ? ?void sendAll(unsigned char *pValue);//发送数据

? ? ? ? ? ? ? ? ? ? ? ? ? ?receive[8]//接收数据的变量

****************************************************************************************/

unsigned char i=0,receive[8],sendFlag,receFlag;

void init_Uart(void)???????????? //初始化

{

?????? TMOD=TMOD|0x20; //工作方式2

?????? TH1=0Xfd;??? ? ?? ?// 256-(11059200/(32*12*9600))

?????? TL1=0xfd;

?????? SM0=0;??????????????? //属于SCON寄存器

?????? SM1=1;??????????????? //串口工作方式1,10位异步,波特率可改

?????? REN=1;??????????????? //允许串口接收

?????? ES=1;?????????????????? //开串口中断

? ? ? ?EA=1;?????????????????? //开总中断

?????? TR1=1;????????? //启动定时器

}

void ZD() interrupt 4 //中断函数

{

?????? if(RI)????????????????? //接收到数据硬件会自己置1

?????? {

????????????? RI = 0;

? ? ? ? ??? ? receive[i]=SBUF;????????? //用于存储长度在八个及以下的字符

????????????? receFlag=1;?? //修改接受标志

????????????? i++;

????????????? if(i==8)i=0;? ? ? ? ? ? ? ?//数据复位

?????? }

??????

?????? if(TI)

?????? {

????????????? TI = 0;???????? ?? ???//发送完一个数据

????????????? sendFlag = 0;??????? //清标志位

?????? }

}

void sendChar(unsigned char one_data)? //发送一个字节数据

{

?????? ?SBUF =one_data;????

?????? ?sendFlag = 1;?????? //设置发送标志位,发一字节就置位

?????? ?while(sendFlag);? //等待数据发送完成

}

void sendAll(unsigned char *data)???? //发送一组数据

{

?????? while((*data) != '\0')?? //如果没有发送完毕就继续发

?????? {

????????????? sendChar(*data);????? //发送1字节数据

????????????? data++;???????? ?????? ??//指向下1个字节

?????? }

}

步骤三:

蓝牙模块的RXD接单片机的TXD,

蓝牙模块的TXD接单片机的RXD,

供电接好,若单片机与蓝牙模块用的时不同的电源,记得共地。

以下是效果图:

?

?来CSDN的第一篇文章,支持一下,🤭。

?

?

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 12:17:17  更:2021-08-13 12:17:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:41:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码