火警疏散演习

来自Microduino Wikipedia
Yanglibin@microduino.cc讨论 | 贡献2016年9月23日 (五) 01:45的版本 模块搭建
跳转至: 导航搜索


概述

Anywhere light blink.jpg

让我们一起制作一个火警指示灯,当火情发生时,灯光会不断闪烁警示人们快速离开。

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


模块清单

模块

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

其他设备

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


模块搭建

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


编程

认识新程序块

模拟输出”程序块
"模拟输出"程序块位于“美科科技>核心模块”选项卡中。

Mixly-analogoutput-where.jpg

"模拟输出"程序块说明”
"模拟输出"程序块将能量等级分成256级:最低为0,灯熄灭;最高为255,灯最亮。0~255中的其它数值会让灯呈现不同亮度。

Mixly-analogoutput-explain.jpg

Hub的数字输出管脚
"模拟输出"管脚号是传感器与扩展模块连接的接口号,扩展模块有2个模拟信号接口:6/7,10/11。

Hub-analogoutput-explain.jpg


"数字输出"和“模拟输出”程序块的区别

  • 数字输出
    • 就好像电灯的开关,只有开和关两种状态,关的时候灯不亮,开的时候灯最亮。
  • 模拟输出
    • 就好像电灯的调光旋钮,可以使灯的亮度在完全不亮和最亮之间自由变化,在程序中是从0~255级过渡,0为不亮,255为最亮。
Hub-analogoutput-digital.jpg

“延时”程序块
“延时”程序块位于“控制”选项卡中。

Mixly-delay-where.jpg

“延时”程序块说明 “延时”程序块可以让程序原地踏步一定时间后在执行下一步程序。在执行这个程序块的时候不能做其他事情,直到时间结束为止。

Mixly-delay-explain.jpg

编程思路

如果想实现单色LED灯闪烁的效果,就要用“模拟输出”程序块控制单色LED灯的亮度,用“延时”程序块控制间隔时间。通过不同的亮度和间隔时间模拟灯光闪。

Mixly-ctrl-ledblink.jpg

开始编程

1.LED灯以较暗的亮度点亮1秒
将“模拟输出”的管脚号改为6,赋值为120;延时时间设为1000毫秒,即1秒。

Mixly-ctrl-ledblink-code1.jpg

2.LED灯以较亮饿的亮度点亮1秒
将“模拟输出”的管脚号改为6,赋值为240;延时时间设为1000毫秒,即1秒。

Mixly-ctrl-ledblink-code2.jpg

3.两步骤程序块连接在一起,选择好核心和端口下载程序。

测试结果:
上传成功后,观察到LED灯忽暗忽亮的闪烁起来,我们的火警指示灯就大功告成啦!
用乐高搭建一个紧急出口,将我们的火警指示灯安装好,向小伙伴们介绍安全逃生的知识。

Anywhere light blink.jpg

我们还能怎么玩

Q:可不可以设置三种亮度的火警灯,同时让灯光闪烁得更快一些呢?这样更容易引起人的注意。
A:这很简单,只需要在0-255之间设置3个亮度,同时每个亮度持续时间更短一些就可以了。

Mixly-ctrl-ledblink-code3.jpg

Q&A

  • Hub的模拟输出管脚只有6/7,10/11口吗?
    • 如果使用Core作为核心,那就只能用6,7,使用输出模拟信号(0-255)的设备必须连接到Hub的6/7,10/11接口之一,因为模拟信号其实是后台程序用数字信号模拟出来的,所以也只能用双数接口,在Mixly中模拟输出管脚只能选择6、10。


核心PWM支持端口

  • Core PWM支持,共6个:
    • 在模块上标示为 分别为D3,D5,D6,D9,D10,D11
    • 详情请参阅analogWrite()函数。
  • Core+ PWM支持,共8个:
    • 在模块上标示为 分别为D7,D8,D9,D10,D12,D13,D22,D23
    • 详情请参阅analogWrite()函数。