Surertech(抒微)VB50A雷达IIC模式下在arduino nano上的例程
背景抒微 VB50A 激光雷达以 DTOF 技术实现 50 米量程、IIC输出版及抗 100KLux 强光本文为arduino UNO R3通讯例程。代码surertech/code (github.com)软件arduino IDE硬件arduino UNO R3通信默认烧录串口与电脑通信IIC1与模组通讯SDA,SCL需接上拉电阻到VCC硬件连接IIC寄存器各地址的含义使用系统烧录串口打印解析到的IIC各寄存器的数据#include Wire.h // Configuration Parameters / 配置参数 #define DEVICE_ADDR 0x52 // IIC device 7-bit address / IIC设备7位地址 #define START_REG 0x00 // Start register address for reading / 数据起始寄存器地址 #define BYTE_COUNT 15 // Total bytes to read (Reg 0x00 to 0x0E) / 需要读取的总字节数 void setup() { // 1. Initialize Serial Port / 初始化串口 Serial.begin(9600); // Standard baud rate for Uno / Uno常用波特率 // 2. Initialize IIC Bus / 初始化 IIC 总线 Wire.begin(); // On Uno: SDAA4, SCLA5. No pins needed. / Uno默认引脚无需传参 Wire.setClock(400000); // Set IIC clock to 400kHz (Fast Mode) / 设置IIC时钟为400kHz delay(100); // Wait for hardware stabilization / 等待硬件稳定 // 3. Initialize Sensor: Enable Laser / 初始化传感器开启激光 // According to datasheet, write 1 to Reg 0x02 to enable laser / 根据手册向寄存器0x02写入1以开启激光 Wire.beginTransmission(DEVICE_ADDR); // Start transmission / 开始传输 Wire.write((uint8_t)0x02); // Target register address / 目标寄存器地址 Wire.write((uint8_t)0x01); // Data value 1 (Enable Laser) / 数据值1 (开启) // endTransmission returns error code (0 success) / endTransmission返回错误码 (0成功) uint8_t init_err Wire.endTransmission(); if (init_err 0) { Serial.println(Sensor Init Success: Laser ON); } else { Serial.print(Sensor Init Failed (Error: ); Serial.print(init_err); Serial.println()); } Serial.println(Arduino Uno Ready. Reading data...); Serial.println(--------------------------------); } void loop() { uint8_t reg_data[BYTE_COUNT]; // Buffer for raw byte data / 用于存储原始数据的字节数组 // IIC Read Sequence / IIC 读取流程 // Step 1: Send Write operation to specify start register / 第一步发送“写”操作指定起始寄存器 Wire.beginTransmission(DEVICE_ADDR); Wire.write((uint8_t)START_REG); // Tell slave: start reading from Reg 0x00 / 告诉从机从0x00开始读 // false means send Repeated Start condition (keep bus connected) / false表示发送重复起始条件保持总线连接 uint8_t err Wire.endTransmission(false); if (err ! 0) { Serial.print(IIC Write Error: ); Serial.println(err); delay(1000); return; // Skip this cycle if write fails / 如果写入失败则跳过本次循环 } // Step 2: Send Read operation to request bytes / 第二步发送“读”操作请求数据 // Explicit cast to uint8_t to avoid compiler ambiguity warnings on AVR / 显式转换类型以避免AVR编译器警告 Wire.requestFrom((uint8_t)DEVICE_ADDR, (uint8_t)BYTE_COUNT); // Check if enough data is available / 检查是否有足够的数据 if (Wire.available() BYTE_COUNT) { Serial.println(IIC Read Error: Data incomplete); while(Wire.available()) Wire.read(); // Clear buffer / 清空缓冲区 delay(500); return; } // Step 3: Read all bytes into array / 第三步将所有字节读入数组 for (int i 0; i BYTE_COUNT; i) { reg_data[i] Wire.read(); } // Data Parsing (Big-Endian) / 数据解析 (大端模式) // Note: Big-Endian means High Byte first (lower address), Low Byte last (higher address) // 注意大端模式意味着高字节在前低地址低字节在后高地址 // 1. Distance Data (Reg 0x00, 0x01) / 距离数据 // reg_data[0] is High Byte, reg_data[1] is Low Byte / [0]是高字节[1]是低字节 uint16_t distance ((uint16_t)reg_data[0] 8) | reg_data[1]; // 2. Laser ID / Status (Reg 0x03) / 激光ID/状态 uint8_t laser_id reg_data[3]; // 3. Software Version (Reg 0x06, 0x07) / 软件版本号 uint8_t ver_major reg_data[6]; // Major version / 主版本 uint8_t ver_minor reg_data[7]; // Minor version / 次版本 // 4. Serial Number (Reg 0x08 - 0x0B, 4 bytes) / 序列号 // Concatenate in Big-Endian order / 按大端顺序拼接 uint32_t serial_num ((uint32_t)reg_data[8] 24) | ((uint32_t)reg_data[9] 16) | ((uint32_t)reg_data[10] 8) | reg_data[11]; // 5. Slave Address (Reg 0x0C) / 从机地址 uint8_t slave_addr reg_data[12]; // Print Results / 打印结果 Serial.println(--- Sensor Data Report ---); Serial.print(Distance : ); Serial.print(distance); Serial.println( mm); Serial.print(Laser ID : 0x); if (laser_id 0x10) Serial.print(0); // Format hex with leading zero / 格式化16进制前导零 Serial.println(laser_id, HEX); Serial.print(Soft Version : v); Serial.print(ver_major); Serial.print(.); Serial.println(ver_minor); Serial.print(Serial Number : ); Serial.println(serial_num); Serial.print(Slave Address : 0x); if (slave_addr 0x10) Serial.print(0); Serial.println(slave_addr, HEX); Serial.println(--------------------------\n); delay(500); // Delay 500ms for ~2Hz refresh rate / 延时500ms刷新率约2Hz }连接好选择Arduino UNO验证上传后打开串口监视器可以看到打印出来的解析的数据

相关新闻

DeepSeek本地部署全攻略:从硬件选型到llama.cpp实战

DeepSeek本地部署全攻略:从硬件选型到llama.cpp实战

简介:针对DeepSeek公网服务近期不稳定、访问拥挤等问题,一份DeepSeek本地部署保姆级教程面向希望搭建私有AI环境的个人用户,完整覆盖从安装Ollama、选择并拉取DeepSeek-R1模型,到配置ChatBox图形界面的全部流程。教程优先推荐1.5B…

2026/10/11 11:20:57 阅读更多 →
技术文档参考资源章:分类设计、链接验证与持续维护实战指南

技术文档参考资源章:分类设计、链接验证与持续维护实战指南

做了这么多年技术文档统稿和书稿审校,我越来越觉得,全书里最被低估的一章,往往是最后一章的"参考资源"。不少作者把它当成"收尾的格式工作",把正文里出现过的链接、书名、论文罗列一遍就算交差。但这一章恰恰…

2026/10/11 11:20:57 阅读更多 →
OFDM SAR成像处理:no_PC模式下的MATLAB实现与避坑指南

OFDM SAR成像处理:no_PC模式下的MATLAB实现与避坑指南

简介:OFDM(正交频分复用)与SAR(合成孔径雷达)结合的无循环前缀(No CP)点目标仿真项目,完全采用MATLAB编程实现,面向无线通信、信号处理及雷达成像领域的初学者和研究者&a…

2026/10/11 11:20:57 阅读更多 →

最新新闻

进程地址空间深度剖析:虚拟地址转换、堆栈增长与内存问题定位

进程地址空间深度剖析:虚拟地址转换、堆栈增长与内存问题定位

写进程地址空间第一篇文章的时候,我把虚拟内存的整体框架拆开讲了一遍:从代码段到栈,从堆到内存映射段,把一张内存布局图硬生生画了半小时。文章发出后,有同学私信问我:既然地址空间只是个“虚拟”的概念&a…

2026/10/11 14:45:43 阅读更多 →
Excel多表合并三大方案:Power Query/VBA/Python实战指南

Excel多表合并三大方案:Power Query/VBA/Python实战指南

简介:本资源是一份面向Excel初学者与办公人员的实用VBA自动化教程,聚焦解决多工作表批量合并这一高频痛点问题。文档详细讲解了如何通过一段可直接运行的VBA代码,将多个结构一致的Excel工作簿(如各部门销售表、各门店日报等&#…

2026/10/11 14:45:43 阅读更多 →
Python协同过滤旅游推荐系统:从矩阵构建到线上验证的完整文档指南

Python协同过滤旅游推荐系统:从矩阵构建到线上验证的完整文档指南

简介:这份文档面向计算机相关专业学生与旅游推荐系统开发者,围绕“信息过载”下如何满足用户个性化出行需求展开,可作为毕业设计、课程设计或推荐算法入门项目的参考模板。压缩包内仅含1个docx文件,约8.64MB,内容为完整…

2026/10/11 14:45:43 阅读更多 →
深度学习100道选择题:知识图谱的压力测试仪

深度学习100道选择题:知识图谱的压力测试仪

简介:本资源是一套系统性的深度学习基础理论自测题集,面向人工智能初学者、高校学生及备考求职者,旨在帮助读者快速检验监督学习、无监督学习、模型评估、正则化、降维、目标检测等核心概念的掌握程度。题库共100道高质量单选题,覆…

2026/10/11 14:45:43 阅读更多 →
DSSS抗窄带干扰MATLAB仿真:从扩频增益到频域置零与半解析BER

DSSS抗窄带干扰MATLAB仿真:从扩频增益到频域置零与半解析BER

简介:这是一份面向无线通信学习者与MATLAB仿真实践者的DSSS扩频通信抗窄带干扰仿真代码包,聚焦直接序列扩频系统在窄带干扰环境下的建模与性能分析,适合通信工程、电子信息类专业学生及需要理解扩频抗干扰机制的开发者参考。包内共3个文件&am…

2026/10/11 14:45:43 阅读更多 →
单链表基础三题详解:删除节点、反转链表与找中间节点

单链表基础三题详解:删除节点、反转链表与找中间节点

链表这块内容,大学里第一次接触的时候觉得简单,无非是节点加指针。可真到动手写题的时候,删除节点能删丢一半,反转链表能绕成环,找中间节点还会因为奇偶数量吵半天。单链表综合练习里的“删除指定值节点”“反转链表”…

2026/10/11 14:44:43 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →