From 94d3defeb94b0fe8c52bc85f627b99dcba4694e3 Mon Sep 17 00:00:00 2001
From: LiHuashen <854410664@qq.com>
Date: Wed, 2 Jan 2019 21:09:33 +0800
Subject: [PATCH] Update lidarbot.md
---
docs/zh_CN/app/lidarbot.md | 116 ++++++++++++++++++++++++++++++++-----
1 file changed, 103 insertions(+), 13 deletions(-)
diff --git a/docs/zh_CN/app/lidarbot.md b/docs/zh_CN/app/lidarbot.md
index 24f188f1..8aa8219a 100644
--- a/docs/zh_CN/app/lidarbot.md
+++ b/docs/zh_CN/app/lidarbot.md
@@ -4,7 +4,7 @@
* * *
-:memo:**[描述](#描述)** :octocat:**[例程](https://github.com/m5stack/Applications-LidarBot/tree/master/LidarBot/Example)** 🛒**[购买链接](https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-1172588106.10.17fd425e0xq2aq&id=580401820385)**
+:memo:**[描述](#描述)** :octocat:**[例程](#例程)** 🛒**[购买链接](https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-1172588106.10.17fd425e0xq2aq&id=580401820385)**
## 描述
@@ -16,27 +16,31 @@
- 支持Arduino编程
- 兼容LEGO件
-## 控制底板的协议
+## 小车主控与底板之间的协议
*协议格式:帧头(命令类型)+数据帧+帧尾*
-| 协议对象 | 协议格式 |
-| :-------------: |:------------------------------------: |
-| 控制车轮 | 0xAA,SpeedX,SpeedY,SpeedZ,SpeedA,0x55 |
-| 控制单颗RGB | 0xAB,LedIndex,R,G,B,0x55 |
-| 控制前向RGB灯带 | 0xAC,R,G,B,0x55 |
-| 控制后向RGB灯带 | 0xAD,R,G,B,0x55 |
-| 控制全部RGB | 0xAE,R,G,B,0x55 |
-| 控制舵机0 | 0xAF,Angle,0x55 |
-| 控制舵机1 | 0xB0,Angle,0x55 |
+| 协议对象 | 协议格式 | 举例 |调用函数|
+| :-------------: |:------------------------------------: |:---:|:---:|
+| 控制车轮 | 0xAA,SpeedX(-7 ~ 7),SpeedY,SpeedZ,SpeedA,0x55 | 0xAA, 5, 5, 5, 5, 0x55(前进,速度5) |ControlWheel(5, 5, 5)|
+| 控制单颗RGB | 0xAB,LedIndex,R(0 ~ 254),G,B,0x55 | 0xAB, 3, 20, 50, 100, 0x55(第三颗灯亮指定颜色)|setLedColor(3, 20, 50, 100)|
+| 控制前向RGB灯带 | 0xAC,R(0 ~ 254),G,B,0x55 | 0xAC, 20, 50, 100, 0x55(前向灯带亮指定颜色)||
+| 控制后向RGB灯带 | 0xAD,R(0 ~ 254),G,B,0x55 |0xAD, 20, 50, 100, 0x55(前向灯带亮指定颜色)||
+| 控制全部RGB | 0xAE,R(0 ~ 254),G,B,0x55 |0xAE, 20, 50, 100, 0x55(全部灯亮指定颜色)|setLedAll(20, 50, 100)|
+| 控制舵机0 | 0xAF,Angle(0 ~ 180),0x55 |0xAF, 100, 0x55(舵机0转动100度)||
+| 控制舵机1 | 0xB0,Angle(0 ~ 180),0x55 |0xB0, 100, 0x55(舵机1转动100度)||
+
+
## 参数
+- 小车车身尺寸(长宽高):142mm x 117mm x 120mm
- 通信参数
- 车体的M5Core主控与激光雷达传感器(雷达TXD <-> U2RXD(GPIO16))
串口参数:230400bps,8位数据位,无奇偶校验,1位停止位
- 车体的M5Core主控与车轮控制底板(底板RXD <-> U2TXD(GPIO17))
串口参数:115200bps,8位数据位,无奇偶校验,1位停止位
+
- 接口
- 舵机0 <-> A0(MEGA328)
- 舵机1 <-> A1(MEGA328)
@@ -44,8 +48,6 @@
-
-
## 包含
- 1x 雷达车
@@ -62,3 +64,91 @@
- 自主走迷宫
- 路径规划
- 自动驾驶
+
+## 例程
+
+*如果需要完整例程请点击[这里](https://github.com/m5stack/Applications-LidarBot/tree/master/LidarBot/Example)。*
+
+**Example目录树**
+
+├─LidarBot_CarMain_V1.1 - 雷达车主控程序
+
+├─LidarBot_RemoteController_V1.0 - 遥控手柄程序V1.0
+
+└─LidarBot_RemoteController_V1.2 - 遥控手柄程序V1.2(相比V1.0精度提高一倍)
+
+#### 程序解析:
+
+#### **1. 雷达车主控程序:**
+
+```arduino
+/* 主循环 */
+void loop()
+{
+ espnow.BotConnectUpdate();// ESPNOW断开重连/换设备重连
+ lidarcar.MapDisplay();// 显示地图
+ esp_now_send(espnow.peer_addr, lidarcar.mapdata, 180);// ESPNOW发送地图数据
+}
+```
+
+* **单个功能解析:**
+
+ * 读取雷达数据的使用
+
+ ```arduino
+ #include "lidarcar.h"
+ LidarCar lidarcar;
+
+ lidarcar.Init();
+ GetData();//得到雷达保存到数组distance[]
+ ```
+
+ * 循迹的使用
+
+ ```arduino
+ #include "rprtrack.h"
+ Rprtrack rprtrack;
+
+ SensorStatus();// 巡线数值保存到数组sensorValue[]
+ CalTrackDev();// 处理数组sensorValue[],得出小车偏移情况,保存至变量OffsetLine
+ ```
+
+ * ESP_NOW的使用
+
+ 请参考此链接: https://github.com/m5stack/M5-espnow
+
+
+#### **2. 手柄主控程序:**
+
+```arduino
+/* 主循环 */
+void loop()
+{
+ espnow.RemoteConnectUpdate();// ESPNOW断开重连/换设备重连
+ keyboard.GetValue();//读取摇杆数据
+ esp_now_send(espnow.peer_addr, keyboard.keyData, 3);// ESPNOW发送摇杆数据给小车主控
+ MapDisplay();// 显示地图
+ accessport.AnalzyCommand();// 发送地图数据给上位机
+}
+```
+
+* **单个功能解析:**
+
+ * JOYSTICK的使用
+
+ ```arduino
+ #include "keyboard.h"
+ KeyBoard keyboard;
+
+ keyboard.Init();
+ GetValue();//手柄读数保存在adX, adY,并控制赋值给数组keyData[]和手柄RGB灯
+ ```
+
+ * 与上位机通信的使用
+
+ ```arduino
+ #include "accessport.h"
+ AccessPort accessport;
+
+ accessport.AnalzyCommand();// 发送地图数据给PC上位机
+ ```
\ No newline at end of file