这次的教程中,我们要示范如何运用威栗camera视觉传感器和一个Arduino开发板,打造以颜色引导的无人车。这台小车将会追随特定颜色的物体自动行驶。
这里会省略一些事前准备步骤,例如:将威栗camera连接到个人电脑。详细说明请上创造栗官网,并参考先前的教程内容:《威栗camera基础安装》、《威栗camera使用说明》。
此说明中主要包含三个步骤:设定威栗camera视觉传感器、以程序积木编辑威栗camera程序、以及把程序上传到自动小车上的Arduino开发板。
步骤一
我们先将视觉传感器设定为辨识红色与黄色。开启CZL智能传感器工具,在右方“功能”选项设定“颜色辨识”,并勾选您希望威栗camera辨识追踪的颜色— 红与黄。
完成后,即可测试威栗camera是否能顺利侦测红色和黄色。侦测成功时,画面会显示侦测物体的颜色标签。
现在您的威栗camera已完成红色与黄色的颜色辨识设定,接下来可以开始以程序积木编辑威栗camera啦!
步骤二
首先,打开威栗camera Junior应用程序。我们要编辑程序积木使无人车跟随黄球以及停止于红球前。
A.第一层程序积木
首先,从控制程序内选出第一层程式积木—“初始化” 积木。
插入视觉传感器类别的“初始化智能传感器RX# () TX# () ”积木。这个积木会将资料传递至威栗camera,RX代表接收,TX代表传送。
这个设定将连结Arduino开发板与视觉传感器。我们建议使用0与1这组数值比较稳定。
接下来,在变量程序内选择“宣告i为整数赋值”积木。
辨识物体时,我们需要两个整数来控制舵机马达的方向。整数“ x ”用来定位物体位置,“ dx ”定位物体由左至右的位置。
在“ i ”下拉选项中选取“建立一个变数”来建立“ x ”整数。
输入“ x ”然后点选“ OK ”。
这样我们就建立了“ x ”整数。
接下来,使用一样的步骤建立“ dx ”整数。
这样就完成两个整数的设定。
最后,选择“转动舵机管脚()角度(0~180°) ”积木插入“宣告dx为整数赋值”下方,来使舵机马达的起始角度永远从90度开始。
选择管脚9,因为舵机马达连接于扩展板D9接口,然后将角度设定为90度。这个步骤会确保舵机马达与Arduino开发板之间相互沟通。
B.第二层程序积木
现在,我们来编辑让舵机马达左右转动,并跟随黄色物体的程序积木。
选取“如果()那么”积木,然后插入“识别到物体”积木,使威栗camera侦测到物体,并回传给主控板。
为使得以上成立,再重复插入一个“如果()那么”积木到先前的积木建立一个子活动。
选取一个逻辑积木然后从视觉传感器程序类别输入一个“物体类别”积木,设置等号,再从视觉传感器积木类别加一个“黄色”积木。这会使威栗camera回报侦测到黄色的物体。
接下来,我们要编辑控制舵机马达方向的程序积木。确保当威栗camera侦测到黄色物体时,无人车的旋转角度在一定范围内。
我们还要另外建立“ x ”和“ dx ”整数积木。“ x ”整数积木会使威栗camera侦测并辨识物体的宽度与大小。
第一,选取“将变量i设为() ”积木,点选“i”下拉选项中的“x”。然后从数学程序类别选取两个积木串联起来,再插入变数积木中。
在数学积木中插入“物体座标x” 和“物体宽度” 积木,将公式设定为“加号” 和“除号”,最后数值设为2来追踪物体的中心。
第二,选取“将变量i设为()” 积木,点选“i” 下拉选项中的“dx”。然后从数学程序类别选取一个积木插入变数积木中,再加入一个“x” 积木。最后设定公式为“减号”、数值为“50”。
这个设定将确保侦测物体在一定范围与尺寸内,以利威栗camera辨识与追踪。
接下来,选取“内建LED状态()” 积木设定为“高”来使主要马达启动。然后选取“写入脉冲宽度调变管脚()赋值()” 积木设定管脚号码为5,赋值为55。
在下方加入“如果()那么”积木建立一个动作项目。
从逻辑类别选取第一个积木然后加入变数“ dx ”积木,将公式设为“ < ”符号。然后从数学类别中选取第二个积木,加入“物体宽度”积木,设定符号为“除号”、数值为“ -2 ”。
接下来,选取“转动舵机”积木,设定管脚为9,加入“约束数值”积木,再加入一个数学积木(如下图)。
下一步,我们将“舵机角度管脚() ”积木插入,管脚设为9。数学公式设为“减号”。
继续从数学类别插入一个“映射数值”积木,其中第一部分加入一个“ dx ”积木,后面数值设定为从“ 0~-50 ”到“ 1~4 ”。最后,输入约束数值在“ 45 ”度到“ 135 ”度之间来限制无人车左转的范围。
下一步,点击“如果()那么”旁的图标,从滚动表单中拖曳“否则如果”积木加在下方,来建立下一个动作项目。
首先,从逻辑类别选取第一个积木然后加入变数“dx” 积木,将公式设为“ >” 符号。然后从数学类别中选取第二个积木,加入“物体宽度” 积木,设定符号为“除号”、数值为“2”。
接下来,选取“转动舵机”积木,设定管脚为9,加入“约束数值” 积木,再加入一个数学积木,公式设为“减号” (如下图)。
继续从数学类别插入一个“映射数值”积木,其中第一部分加入一个“dx” 积木,后面数值设定为从“0~50” 到“1~4”。最后,输入约束数值在“45” 度到“135” 度之间来限制无人车右转的范围。
接下来将这串积木组合插入“如果()那么”积木中,这样就完成无人车左右行驶的设计了。
C.如何做出让无人车停止的程序积木
第一,点击第二层的“如果()那么” 积木旁图标,打开滚动选单。
第二,拖曳“否则如果” 积木加入下方。
再来,选择一个逻辑积木,加入“物体类别” 积木,设定公式为“=” 等号,然后加入“红” 积木。
这部分将使无人驾驶汽车在辨识到一个红色物体的时候停止行驶。
接下来,选取“转动舵机管脚()角度(0~180°)”积木,管脚设为9、角度设为90度。这样舵机马达停止时,前轮会停在90度的角度。
最后,选取“内建LED状态()” 积木设定为“低”来将主要马达关机。然后选取“写入脉冲宽度调变管脚()赋值()” 积木设定管脚号码为5,赋值为0。
最后,放入“延时(20)毫秒” 积木在尾端来设置主马达的计时器。
这样我们就完成所有的积木了!