机器人课程是对于创客教育三项基础技能应用极高的课程。为学生在以后的机器人学习和创新项目中打下基础,基本掌握一些机器人控制的相关知识。
中学阶段的机器人学习,更多的是引导学生以科学探究的方式去积极思考,以解决问题的方式,将机器人学习与有趣的场景结合,锻炼学生的动手操作及编程的能力。
”中国首家创客空间“新车间创始人” 李大维 说2015年国庆节前街道谢老师发来的电子版。看到这本书从浅到深,带着完全没有技术背景的初学者,一步一步从点亮第一个LED到读取传感器,从控制电机到创作出自己的第一个机器人。书中项目深入浅出,加上文笔流畅,读起来很轻松,我非常喜欢。市场上需要这样的入门书。
本教学案例来源于人民邮电出版社出版的《Arduino创意机器人(中学版)》中,第5课 呼吸灯
在前面的实例当中,我们都是用Arduino控制器来控制LED灯的亮或灭的变化。但是并没有体现LED的电压由高到低或者由低到高的变化,即中间过程没有得到体现。但有时要有,比如在KTV或演唱会上,为了达到很好的灯光效果,有时要使灯的亮暗渐变,即是个连续变化的过程。那我们能否实现呢?
1.认识呼吸灯;
2.掌握PWM;
3.掌握模拟输出;
4.掌握当循环。
1.呼吸灯
呼吸灯,顾名思义,就是灯光在微电脑控制之下完成由亮到暗的逐渐变化,感觉像是在呼吸。广泛应用于手机之上,并成为各大品牌新款手机的卖点之一。如果你的手机里面有未处理的通知,比如说未接来电,未查收的短信等等,呼吸灯就会由暗到亮的变化,像呼吸一样那么有节奏,起到一个通知提醒的作用。
2.PWM
现今多数系统皆采用数字控制的方式,由核心微处理器接收回传的感测信息,并针对与目标的差值再调整输出。而数字信号只有0与1两种变化,怎么调整输出值的大小满足需求呢?这时我们可以将数字信号转化成模拟信号,这就需要我们的PWM了。
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中,它可以将数字信号转化为模拟信号。
Arduino Romeo控制器的数字口上有6个针脚支持PWM信号,即3、5、6、9、10和11。PWM的输出值为0~255,LED发光模块接到这几个针脚上面,就可以控制LED的亮度,不会只有单纯的亮跟灭两种选择。这里要注意的是LED发光模块是可以调亮度的,有些LED发光模块不能调节亮度,即便插在这个针脚上面,也无法控制LED的亮度。本书用的LED发光模块是可以调节亮度的。
3.模拟针脚的输出
(1)功能:将指定的值给模拟口。
(2)参数:Pin是需要输入值的针脚号;Value的取值为0~255之间的任意值。
(3)实例:意思就是将模拟针脚3的值设定为255。
4.当循环
前面介绍的选择结构只能判断一次,只有程序流程重新来过时,才会再次判断。而某些情况下还需要条件满足的时候不断地重复执行某些语句,这就需要循环型的控制语句如重复循环或当循环了。
当循环的基本形式:
功能描述:当条件成立即为真(1)的时候,执行循环体内的语句,且循环体会重复执行;当条件不成立的时候即为假(0)时,跳出循环体,结束循环。如果条件始终成立,则会进入死循环,循环体一直执行下去。
活动主题一:数值控制LED亮度
1.硬件搭建
在连接电路时,LED模块要接到数字口支持PWM信号的针脚上,即3、5、6、9、10、和11。
器材:Arduino Romeo控制器、LED发光模块以及数据线。
2.参考程序
活动主题二:制作呼吸灯
图1.5.1 呼吸灯参考程序
1.能否用按钮控制LED的亮度情况?如何实现?
2.你会使用条件语气制作呼吸灯?
3.还可以制作哪些效果的LED?
1.PWM
PWM,脉宽调制:即通过一系列脉冲的宽带来调制(或控制)来等效得到所需要的波形(包括形状和幅值),如图1.5.2所示,咱们可以通过很多脉冲来恢复得到正弦波形。这也可以从高中所学积分的面积等效的原理解释。比如第1个脉冲所围的面积,等于第一个脉冲前由正弦波形围成的面积。通过改变方波的占空比,就可以改变等效的输出电压波形。试想一下,如果每个脉冲的宽度相等,则所等效的波形为一条直线,即为直流电压信号。PWM调制广泛应用与电机调速和阀门控制中。比如现在的电动车就是通过PWM调速的。
图1.5.2 PWM
2.数字信号和模拟信号
数字信号:是指幅度取值离散的,其值被限制在有限域范围内,如二进制码就是一种离散信号。其特点是抗干扰能力强,易于数字信号处理。现在很多信号基本上都是数字信号,如手机信号,计算机处理信息等等。
模拟信号:是指其信号波形是连续变化的,咱们可以在任意的瞬间取值。由于模拟信号易受干扰影响,不容易处理,一般都是先将模拟信号离散成数字信号,以便处理。两者的区别如图1.5.4所示:
图1.5.4 A/D区别
前面我们已经学过了用按钮控制LED的亮灭,请同学们尝试用按钮控制呼吸灯。
中文名称 | 英文名称 | 数量 |
主控板Romeo | Romeo-All in one Controller (Arduino Compatible Atmega 328) | 1 |
舵机 | 9g micro servo (1.6kg) | 1 |
miniQ机器人底盘 | 2wd miniQ Robot chassis | 1 |
miniQ机器人上层安装板 | Upper Deck for MiniQ | 1 |
蓝色LED发光模块 | Gravity:Digital piranha LED module-Blue | 1 |
绿色LED发光模块 | Gravity:Digital Piranha LED Module - Green | 1 |
白色LED发光模块 | Gravity: Digital Piranha LED Module-White | 1 |
大按钮模块 | Gravity:Digital Push Button (Yellow) | 1 |
巡线传感器 | Smart Grayscale Sensor | 2 |
声音传感器 | Gravity: Analog Sound Sensor | 1 |
数字钢球倾角传感器 | Gravity: Digital Tilt Sensor for Arduino V2 | 1 |
数字防跌落传感器 | Gravity:Digital Infrared Distance Sensor (10cm) | 2 |
碰撞传感器(左) | Crash sensor(Left) | 1 |
碰撞传感器(右) | Crash sensor(Right) | 1 |
环境光传感器 | Gravity: Analog Ambient Light Sensor | 1 |
SR-04超声波传感器 | SR-04 Ultrasonic Sensor | 1 |
遥控器套件 | IR Kit | 1 |
温度传感器 | Gravity:Analog LM35 Linear Temperature Sensor | 1 |
USB数据线 | USB Cable A-B for Arduino | 1 |
130直流电机 | 2 | |
130直流电机软扇叶 | 1 | |
DC2.1 电源转接头 母头 | DC Barrel Jack Adapter - Female | 1 |
7.4V锂电池充电器 | 7.4V Lipo Battery charger | 1 |
7.4V 2500mAh锂电池 | 1 | |
六角单通尼龙柱M3*30 | 10 | |
六角单通尼龙柱M3*20 | 10 | |
六角单通尼龙柱M3*10 | 10 | |
M3螺母 | 20 | |
M3*6不锈钢圆头螺丝 | 20 | |
M2*6不锈钢圆头螺丝 | 3 | |
M2螺母不锈钢 | 3 | |
M3*7*1黑色尼龙平垫 | 10 | |
M3一字十字两用螺丝刀 | 1 | |
黑色耐高温尼龙扎带4*150mm | 2 | |
黑色单芯杜邦线长25cm | 1 | |
红色单芯杜邦线长25cm | 1 | |
ABS塑料U形条长93mm宽14mm圆孔径3.1mm | 1 | |
蓝色单芯杜邦线长25cm | 1 | |
绿色单芯杜邦线长25cm | 1 |