一、前言
此片文章主要介绍如果通过Arduino UNO开发板来读取TOF250(TTL接口)数据的教程
提示:以下的案例仅供参考学习使用
二、硬件准备
-
TOF250 :测距传感器
-
Arduino UNO:Arduino公司下的开发板
详细资料可以参考:Arduino 官网
- 电脑 :Windows 7/10/11
- USB线:USB-B接头连接线(一般UNO板带有)
- 杜邦线:一头公一头母(若干)
- TOF250尾线:购买时自带有一根尾线
二、软件准备
- Arduino IDE:参考官网下载安装教程
三、硬件接线图
提示:实际在测试过程中不建议接上图黄色的线
说明:
- UNO只有一个硬串口
- USB打印结果需要用到硬串口的TX
- 读取TOF250需要用到硬串口的RX
- 如果接上黄色的线,打印的使用会有数据往TOF250传输(可能造成干扰)
四、例程源码
/**************************************************************
//技术论坛:https://blog.csdn.net/HCJ_Application/article/details/124058266
//修改日期:2022/4/9
//版本:V1.0
//深圳市弘成基科技有限公司
**************************************************************/
unsigned int TOF250_Dist = 0;
bool Uart_RecieveComplete = false;
void setup() {
/**************************************************************
*TOF250串口通信协议:
*波特率 : 9600
*数据位 : 8
*校验 : 无
*停止位 : 1
****************************************************************/
Serial.begin(9600);
}
void loop()
{
if (Uart_RecieveComplete == true) {
Uart_RecieveComplete = false;
Serial.print("距离值:");
Serial.print(TOF250_Dist);
Serial.println(" CM");
TOF250_Dist = 0;
}
}
/**************************************************************
*TOF250串口输出格式:
*Ascii 输出
*单位为cm(默认)
*后跟转义字符\n
*例如:测距为 121cm,则输出字符串 121,
****************************************************************/
//此程序使用硬件串口调试
void StringSplitIntAndChar()
{
String intchars = "";
String chars = "";
while (Serial.available() > 0) {
char inchar = Serial.read();
if (isDigit(inchar)) //是数字就放在intchars数字字符串
{
intchars += inchar; //数字---字符串
} else {
chars += inchar; //非数字---字符串
}
delay(2); //等待延时,不同波特率延时时间不一样,需要细调
if (Serial.available() == 0) //等待一段时间后缓冲区仍然没有收到数据,认为一帧数据已经接收完成
{
Uart_RecieveComplete = true;
TOF250_Dist = intchars.toInt(); //将数字字符串转换成整数
}
}
}
//通过串口中断来实时获取雷达数据
void serialEvent()
{
StringSplitIntAndChar();
}
五、烧录说明
提示:烧录过程中请先断开TF250与UNO板的TX\RX接线,防止烧录失败
六、结果输出
通过Arduino IDE自带的串口软件打印结果
提示:注意选择对应的波特率,此次测试使用波特率为9600