概述
制作一个小台灯,学会用开关控制台灯的亮灭。
适合套件:mCookie102,mCookie202,mCookie302,IBC
模块清单
模块
其他设备
- USB数据线*1
- 传感器连接线*1
- 传感器外壳*1
- 乐高或其它固定结构
模块搭建
- 将模块和传感器组装起来:
- 将红色的核心模块,USB上传模块与绿色的扩展模块吸在一起;
- 将红色LED灯连接在Hub的6/7管脚;
- 将碰撞开关连接在Hub的4/5管脚;
- 将USB连接线一端插入USB上传模块,另一端连接电脑;
编程
认识新程序块
"等待"程序块
"等待"程序块位于“美科科技>核心模块”选项卡中。
"等待"程序块说明
满足放置条件时,执行下一步程序,未满足条件时,程序原地踏步。
"碰撞开关"程序块
"碰撞开关"程序块位于“美科科技>传感器”选项卡中。
“碰撞”开关程序块说明
“碰撞开关”程序块在选择“按下”状态时,按下碰撞开关条件成立,选择“松开”状态时,未按下碰撞开关条件成立。
编程思路
按下碰撞开关,LED灯点亮;再按一下碰撞开关,LED灯熄灭。
开始编程
1、按下碰撞开关,LED灯点亮
“碰撞开关”程序块管脚号设为4,状态设为按下;“数字输出”程序块管脚号设为6,状态设为高;即等待碰撞开关按下后,LED灯点亮。
2、按下碰撞开关,LED灯熄灭
“碰撞开关”程序块管脚号设为4,状态设为按下;“数字输出”程序块管脚号设为6,状态设为低;即等待碰撞开关按下后,LED灯熄灭。
3、
测试结果:
看看是不是像我们预想的那样:按一下开关,灯点亮,再按一下开关,灯熄灭,如此重复循环。
Q:为什么我感觉开关有时很灵活,有时又不受控制呢?
A:这是因为核心模块的思考速度非常快,当你按下碰撞开关的一瞬间,程序判断开关一直在被按下,因此就不断循环了成百上千次,在那一瞬间,LED灯其实点亮熄灭了很多次,只是人眼无法分辨而已,所以你就会感觉它不受控制。
Q:哦,明白了,是不是我将程序设置成等待碰撞开关按下,再等待碰撞开关松开,就可以了呢?
A:那可以试一试!
按下碰撞开关,再松开后,让LED灯点亮。按下碰撞开关,再松开后,让LED灯熄灭。修改“碰撞开关”和“数字输出”程序块的参数。
Q:感觉开关还是不受控制?
A:这是因为“碰撞开关”属于机械按键,在按下或松开的一瞬间,内部金属片会多次震动,所以程序中会检测到碰撞开关被多次按下和松开,程序也会不断循环下去,起始在这个过程中LED灯已经点亮熄灭很多次,致死肉眼分辨不出而已。
Q:那有什么办法可以让开关稳定控制吗?
A:其实,我们只需要加上一个“延时”功能就可以解决这个机械抖动的问题,在按下开关的时候,延时100毫秒(让程序暂停运行100毫秒),用于等待碰撞开关内部震动平息,消除碰撞开关的频繁抖动。
编程思路:
开关每次按下和松开时,都增加延时程序块,用于等待碰撞开关内部震动平息,让开关能稳定控制LED灯。
开始编程
1、开关按下和松开时都增加延时,等待碰撞开关内部震动平息,按下再松开开关后,LED灯点亮。
2、开关按下和松开时都增加延时,等待碰撞开关内部震动平息,按下再松开开关后,LED灯熄灭。
测试结果:
按下再松开碰撞开关,LED灯点亮;再按下并松开碰撞开关,LED灯熄灭,如此循环,不断点亮熄灭。这样我们就可以用碰撞开关稳定的控制小台灯的亮灭啦!
自己动手,用乐高搭建一个小台灯,将开关和LED灯放置在合适的位置,比一比谁的台灯最好看。
技术规范
相关案例
Q&A
|