Arduino与蓝牙的串口通信
来源:互联网 发布:网络销售好做吗做金融 编辑:程序博客网 时间:2024/04/28 07:18
1:对于Arduino,print()和println()函数都是用ASCII字符的方式传送数据。
无论是int、float还是string,都自动转换成ASCII码传送。
其中println()函数在传送的数据后面加了回车和换行符(”\r”和”\n”)。换行符正好可以作为结束符来让手机端识别。
2:蓝牙串口是异步传输方式,每次Serial.read()只读一个字节,在一个loop()循环中可能收不全一条数据信息,必须要有一个全局变量来收集接收到的字符。如果要通讯可靠,使用结束符来确定收到了一条完整的信息,是非常必要的。手机端也是一样。
3:用的Serial.parseInt()函数,作用是在收到的字符流中,找到数字字符,并累积在一起,直到收到一个非数字字符时,将前面收到的数字字符转换成一个整数。如果要传送多个数值,中间用逗号等分隔符隔开即可。比如三个数值,”12,325,993“,后面加一个自定义的结束符,作为字符串发给Arduino。
(例程中用字符”X”作为结束符。)这样接收数据完整而可靠。接收float可以用Serial.parseFloat()函数,用法一样。
4:/* 本例程演示从手机蓝牙串口接收指令,点亮或熄灭11脚的LED,或者调整亮度。
* 接收指令格式:“101X”点亮,“102X”熄灭,”000X”调整亮度。(000为0-100的整数,表示亮度值,X是结束符。)
* 串口是异步接收的,用parseInt()查找第一个有效整数,检测到结束符后开始处理。
* 接收数据显示在1602LCD屏上。
* 点亮或熄灭LED后,将收到数据回传给手机。用pringln()函数,数据后面加了”\r”和”\n”两个字符,可以用作结束符。
* 串口传送的是ASCII字符,数据格式可以自动转换。
*/
/* 本例程演示从手机蓝牙串口接收指令,点亮或熄灭11脚的LED,或者调整亮度。 * 接收指令格式:“101X”点亮,“102X"熄灭,”000X"调整亮度。(000为0-100的整数,表示亮度值,X是结束符。) * 串口是异步接收的,用parseInt()查找第一个有效整数,检测到结束符后开始处理。 * 接收数据显示在1602LCD屏上。 * 点亮或熄灭LED后,将收到数据回传给手机。用pringln()函数,数据后面加了"\r"和"\n"两个字符,可以用作结束符。 * 串口传送的是ASCII字符,数据格式可以自动转换。 */#include <Wire.h> // 包含LCD库。#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27,16,2); // 初始化LCD对象,地址为0x27,每行16个字符,共两行。int p; // 定义整数型全局变量,保存接收的数据。void setup() { lcd.init(); // 初始化LCD。 lcd.backlight(); // 打开LCD背光。 Serial.begin(9600); // 打开串口(蓝牙) pinMode(11,OUTPUT); // 定义11脚为输出。(数字或PWM)}void loop() { while (Serial.available() > 0) { // 串口收到字符数大于零。 p = Serial.parseInt(); // 在串口数据流中查找一个有效整数。 if (Serial.read() == 'X') { // 收到结束符后开始处理数据。 lcd.clear(); // LCD清屏。 lcd.print(p); // LCD显示收到的数据(整数)。 switch (p) { // 判断数据内容。 case 101: digitalWrite(11,HIGH); // 点亮LED。 Serial.println(p); // 回传数据。 break; case 102: digitalWrite(11,LOW); // 熄灭LED。 Serial.println(p); // 回传数据。 break; default: p = map(p,0,100,0,255); // 转换数据范围到PWM输出值。 analogWrite(11,p); // 调整LED亮度。(PWM) } } }}
- Arduino与蓝牙的串口通信
- 手机通过蓝牙串口与arduino通信
- 树莓派与Arduino的串口通信
- Arduino 的串口通信
- Arduino的串口通信
- 树莓派与Arduino串口通信
- pcduino与Arduino串口通信
- Arduino与HC-05蓝牙模块的通信
- Arduino与PC串口通信程序中出现的问题
- Arduino蓝牙模块与Android实现通信
- Arduino与Android蓝牙通信笔记
- arduino与processing串口通信问题
- Arduino与Processing串口通信问题
- Arduino与LabVIEW交互---串口通信方式
- Arduino与ESP8266进行串口通信
- Arduino与ESP8266进行串口通信
- 树莓派与arduino串口通信实践
- 安卓手机与蓝牙串口模块的通信
- 关于路径的杂七杂八的东西理解
- SQL基础
- CSS3动画入门
- 友元详解
- 项目忽然报错 严重: Error configuring application listener of class 分析与解决
- Arduino与蓝牙的串口通信
- Android玩耍之路20161128
- 自制的简易版java计算器
- 优秀程序员十个习惯
- Dom4j-1.6.1.jar包下datatype包下的目录结构
- Vim配置(二)——安装NERDTree,在CentOS 6.4
- 基于51单片机的半导体制冷小冰箱
- 首记
- 最小乘积(基本型)