DIY小台灯

来自Microduino Wikipedia
跳转至: 导航搜索


概述

Anywhere table-lamp.jpg

制作一个小台灯,学会用开关控制台灯的亮灭。

适合套件:mCookie102,mCookie202,mCookie302,IBC


模块清单

模块

模块 数量 功能
mCookie-Core 1 核心板
mCookie-USBTTL-C 1 程序下载模块
mCookie-Hub 1 传感器转接板
Crash 1 碰撞开关
LED 1 单色灯

其他设备

  • USB数据线*1
  • 传感器连接线*1
  • 传感器外壳*1
  • 乐高或其它固定结构
Anywhere table-lamp-module.jpg


模块搭建

Anywhere table-lamp-module—step.jpg
  • 将模块和传感器组装起来:
    • 将红色的核心模块,USB上传模块与绿色的扩展模块吸在一起;
    • 将红色LED灯连接在Hub的6/7管脚;
    • 将碰撞开关连接在Hub的4/5管脚;
    • 将USB连接线一端插入USB上传模块,另一端连接电脑;


编程

使用的程序块

编程思路

按下碰撞开关,LED灯点亮;再按一下碰撞开关,LED灯熄灭。

Mixly-ctrl-table-lamp.jpg

开始编程

1、按下碰撞开关,LED灯点亮
“碰撞开关”程序块管脚号设为4,状态设为按下;“数字输出”程序块管脚号设为6,状态设为高;即等待碰撞开关按下后,LED灯点亮。

Mixly-ctrl-table-lamp-code1.jpg

2、按下碰撞开关,LED灯熄灭
“碰撞开关”程序块管脚号设为4,状态设为按下;“数字输出”程序块管脚号设为6,状态设为低;即等待碰撞开关按下后,LED灯熄灭。

Mixly-ctrl-table-lamp-code2.jpg

3、 测试结果:
看看是不是像我们预想的那样:按一下开关,灯点亮,再按一下开关,灯熄灭,如此重复循环。

Q:为什么我感觉开关有时很灵活,有时又不受控制呢?
A:这是因为核心模块的思考速度非常快,当你按下碰撞开关的一瞬间,程序判断开关一直在被按下,因此就不断循环了成百上千次,在那一瞬间,LED灯其实点亮熄灭了很多次,只是人眼无法分辨而已,所以你就会感觉它不受控制。
Q:哦,明白了,是不是我将程序设置成等待碰撞开关按下,再等待碰撞开关松开,就可以了呢?
A:那可以试一试!
按下碰撞开关,再松开后,让LED灯点亮。按下碰撞开关,再松开后,让LED灯熄灭。修改“碰撞开关”和“数字输出”程序块的参数。

Mixly-ctrl-table-lamp-code3.jpg



Q:感觉开关还是不受控制?
A:这是因为“碰撞开关”属于机械按键,在按下或松开的一瞬间,内部金属片会多次震动,所以程序中会检测到碰撞开关被多次按下和松开,程序也会不断循环下去,起始在这个过程中LED灯已经点亮熄灭很多次,只是肉眼分辨不出而已。
Q:那有什么办法可以让开关稳定控制吗?
A:其实,我们只需要加上一个“延时”功能就可以解决这个机械抖动的问题,在按下开关的时候,延时100毫秒(让程序暂停运行100毫秒),用于等待碰撞开关内部震动平息,消除碰撞开关的频繁抖动。

编程思路:
开关每次按下和松开时,都增加延时程序块,用于等待碰撞开关内部震动平息,让开关能稳定控制LED灯。

Mixly-ctrl1-table-lamp.jpg

开始编程
1、开关按下和松开时都增加延时,等待碰撞开关内部震动平息,按下再松开开关后,LED灯点亮。

Mixly-ctrl4-table-lamp-code4.jpg

2、开关按下和松开时都增加延时,等待碰撞开关内部震动平息,按下再松开开关后,LED灯熄灭。

Mixly-ctrl4-table-lamp-code5.jpg

测试结果:
按下再松开碰撞开关,LED灯点亮;再按下并松开碰撞开关,LED灯熄灭,如此循环,不断点亮熄灭。这样我们就可以用碰撞开关稳定的控制小台灯的亮灭啦!
自己动手,用乐高搭建一个小台灯,将开关和LED灯放置在合适的位置,比一比谁的台灯最好看。

Anywhere table-lamp.jpg

技术规范

  • 碰撞开关产品编号:MSDS11
  • 数字信号输入传感器。
  • 详细参考Sensor-Crash/zh

相关案例

Q&A