2289浏览
查看: 2289|回复: 0

[高级教程] 【N+】千里马Plus项目式课程 - 03 识色运动

[复制链接]
本帖最后由 Nplus实验室 于 2023-4-11 11:42 编辑

【N+】千里马Plus项目式课程
03 识色运动
- N+桃李科教
上一篇:【N+】千里马Plus项目式课程 - 02 循迹行驶
下一篇:
【N+】千里马Plus项目式课程 - 04 红灯停绿灯行

教学目标
1.认识颜色传感器;
2.学习颜色传感器的使用;
3.实现识色运动功能。

教学准备
千里马、地图、数据线

教学过程
导入 认识颜色传感器 项目程序 总结

1.导入
分析下面的6个图,使用思路循迹过程中,千里马应该怎么行驶?
【N+】千里马Plus项目式课程 - 03 识色运动图1
本节课将结合颜色传感器,让千里马在循迹过程中,变得更加丰富多彩。



2.颜色传感器
2.1认识颜色传感器

颜色传感器通过不同颜色对光线的反射系数不同,根据接收到的反射光的强弱来判断颜色。千里马的颜色传感器在底部,如下图所示:
【N+】千里马Plus项目式课程 - 03 识色运动图2

2.1.1 RGB
颜色传感器除了可以获取HSV值,还可以获取RBG值。
RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。
【N+】千里马Plus项目式课程 - 03 识色运动图3
数值范围均为0-255,数值越大,说明颜色越亮。

2.1.2 HSV
颜色传感器可单独地获取颜色的H/S/V值。HSV指的是(色调,饱和度,亮度)。
(1) 色调(H:hue):用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°。
【N+】千里马Plus项目式课程 - 03 识色运动图4

(2)饱和度(S:saturation):取值范围为0.0~1.0,值越大,颜色越饱和。

(3)亮度(V:value):取值范围为0(黑色)~255(白色)。

2.2编程语句
1.颜色传感器需要用的编程语句如下:
【N+】千里马Plus项目式课程 - 03 识色运动图5
获取识别颜色中R、G、B的值,以列表形式,数值范围为0-255。
【N+】千里马Plus项目式课程 - 03 识色运动图6
判断模块,有返回值,如果识别到指定颜色,返回“Ture”,否则返回“False”
【N+】千里马Plus项目式课程 - 03 识色运动图7
获取识别颜色的HSV,以列表形式。
【N+】千里马Plus项目式课程 - 03 识色运动图8
调节色彩平衡,R、G、B的数值均为0-1,数值越大,所获取颜色的值越小。

2.3获取颜色值
2.3.1 获取RGB值
目标:将颜色传感器获取的颜色,转为RGB值,并在屏幕上显示,同时亮对应颜色的灯光。

1.亮灯
1.千里马除了耳朵上有两颗灯珠,还有额外10颗灯珠,车头6颗以及车尾4颗,如下图所示。
【N+】千里马Plus项目式课程 - 03 识色运动图9

2.屏幕显示需要用的语句,如下表所示。
【N+】千里马Plus项目式课程 - 03 识色运动图10
指定灯珠亮指定颜色,可任意调颜色,红、绿、蓝的阈值为:0-255
【N+】千里马Plus项目式课程 - 03 识色运动图11

指定灯珠亮指定颜色,可任意选择已调配好的颜色
【N+】千里马Plus项目式课程 - 03 识色运动图12
生效模块,设置好颜色和灯号后,需要设置生效,否则无法亮起来
【N+】千里马Plus项目式课程 - 03 识色运动图13
关闭所有灯珠

3.千里马的10颗灯珠亮红灯2s,然后绿灯2s,蓝灯2s,最后关闭,程序如下:
【N+】千里马Plus项目式课程 - 03 识色运动图14
刷入程序后,如果灯不亮,检查一下程序是否缺少“显示生效”的语句。

2.获取RGB值后亮灯
1.新建列表“dates”,用来储存颜色传感器获取的RGB值。
【N+】千里马Plus项目式课程 - 03 识色运动图15

2.RGB彩灯亮灯的颜色为获取的RGB值。
【N+】千里马Plus项目式课程 - 03 识色运动图16

3.如果觉得单行输入太长了,可右击鼠标,改为“多行输入”,如下图所示:
【N+】千里马Plus项目式课程 - 03 识色运动图17

4.将获取的数据显示在屏幕上,可用于校对是否有大偏差。
【N+】千里马Plus项目式课程 - 03 识色运动图18

5.完善程序,如下图所示:
【N+】千里马Plus项目式课程 - 03 识色运动图19

6.程序刷入后,拿出颜色卡片进行测试,亮灯颜色以及屏幕显示的值是否有较大偏差,如果有,则修改白平衡的值,如下图所示。
【N+】千里马Plus项目式课程 - 03 识色运动图20

3.项目程序
目标:千里马使用循迹传感器进行巡线;使用颜色识别传感器进行行驶速度的增减,如果识别到黄色,千里马停止,等待3s后继续巡线;识别到绿色,加速行驶;识别到蓝色,使用减速速度行驶;

1.创建一个可以传参的函数,将上节课的巡线程序放入函数中。修改参数名和函数名,“min”表示两个轮子中最小的速度,“max”表示两个轮子中最大的速度。
【N+】千里马Plus项目式课程 - 03 识色运动图21 【N+】千里马Plus项目式课程 - 03 识色运动图22
【N+】千里马Plus项目式课程 - 03 识色运动图23

2.鼠标右击函数,将参数创建出来。
【N+】千里马Plus项目式课程 - 03 识色运动图24 【N+】千里马Plus项目式课程 - 03 识色运动图25

3.将两个参数代替左右轮子的速度,较大速度的为“max”,较小速度为“min”。
【N+】千里马Plus项目式课程 - 03 识色运动图26

4.设置变量“i”,用来表示识别到什么颜色,识别到红色时,i=0;识别到蓝色时,i=1;识别到黄色时,i=2。
【N+】千里马Plus项目式课程 - 03 识色运动图27

5.调用函数与传参。i=0时:min=30,max=60;i=1时:加速行驶,min=50,max=80;i=2时:减速行驶,min=20,max=40
【N+】千里马Plus项目式课程 - 03 识色运动图28

6.加上循环与初始化,完整程序如下。
【N+】千里马Plus项目式课程 - 03 识色运动图29

7.刷入程序,将千里马放至地图中测试,根据测试结果修改白平衡、阈值、速度等参数。

4.总结
1.如果颜色传感器识别有较大误差,应该怎么调节?
2.函数为什么要传参,这样有什么好处?

5.课后作业
1.每一次左右转弯都增加转向灯,程序应该怎么写?

千里马Plus购买链接:N+千里马Plus

本课PPT、视频及案例代码下载:
链接: https://pan.baidu.com/s/1xYEJKdjhyVtR_MZMOQeICA
提取码: 8888


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail