开始之前:
在巡线功能下,HUSKYLENS 2可以标记出画面中路线的轨迹,获取当前路线的长度、角度和X、Y分量。当路线出现分支时,可以获取路口的分支数量和逆时针方向起每条分支的相应数据。
示例程序如下。
#include "unihiker_k10.h"
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;
UNIHIKER_K10 k10;
uint8_t screen_dir=2;
// 主程序开始
void setup() {
k10.begin();
Wire.begin();
while (!huskylens.begin(Wire)) {
delay(100);
}
k10.initScreen(screen_dir);
k10.creatCanvas();
huskylens.switchAlgorithm(ALGORITHM_LINE_TRACKING);
}
void loop() {
huskylens.getResult(ALGORITHM_LINE_TRACKING);
if ((huskylens.available(ALGORITHM_LINE_TRACKING))) {
k10.canvas->canvasText((String("路线的角度为:") + String((RET_ITEM_NUM(huskylens.getCurrentBranch(ALGORITHM_LINE_TRACKING), Result, angle)))), 0, 0, 0x0000FF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText((String("路线的长度为:") + String((RET_ITEM_NUM(huskylens.getCurrentBranch(ALGORITHM_LINE_TRACKING), Result, length)))), 0, 30, 0x0000FF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText("路线的X和Y分量为:", 0, 60, 0x0000FF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText((String((RET_ITEM_NUM(huskylens.getCurrentBranch(ALGORITHM_LINE_TRACKING), Result, xTarget))) + String((String(",") + String((RET_ITEM_NUM(huskylens.getCurrentBranch(ALGORITHM_LINE_TRACKING), Result, yTarget)))))), 0, 90, 0x0000FF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText((String("路口分支数量为:") + String((huskylens.getUpcomingBranchCount(ALGORITHM_LINE_TRACKING)))), 0, 120, 0x0000FF, k10.canvas->eCNAndENFont24, 50, true);
}
k10.canvas->updateCanvas();
delay(1000);
}
**运行结果:**如图所示,将HUSKYLENS的镜头对准带有路线的地图,观察K10屏幕显示可以输出当前路线的长度、角度等数据。当路线由多个分支时,可以输出分支数量。