冰箱灯

来自Microduino Wikipedia
Yanglibin@microduino.cc讨论 | 贡献2016年9月23日 (五) 06:16的版本 (创建页面,内容为“{| style="width: 1000px;" |- | ==概述== 600px|center 做一个冰箱灯:打开冰箱门时,能够自动开灯,...”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索


概述

Anywhere refrigerator-light.jpg

做一个冰箱灯:打开冰箱门时,能够自动开灯,关上冰箱门后,能够自动关灯。

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


模块清单

模块

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

其他设备

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


模块搭建

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


编程

编程思路

冰箱门打开时,碰撞开关没有被冰箱门挤压(处于松开状态), LED灯点亮;冰箱门关闭时,碰撞开关被冰箱门挤压(碰撞开关处于按下的状态),LED灯熄灭。

开始编程

1、开门时,碰撞开关“松开”,LED灯点亮
碰撞开关管脚号改为6,状态为松开;数字输出管脚号改为4,状态设为高;

Mixly-ctrl-ttrefrigerator-code1.jpg

2、关门时,碰撞开关“按下”,LED灯熄灭
碰撞开关管脚号改为6,状态为按下;数字输出管脚号改为4,状态设为低;

Mixly-ctrl-ttrefrigerator-code2.jpg

测试结果
程序上传成功后,碰撞开关被一直按下时LED灯一直点灭(表示关闭冰箱门),松开碰撞开关时,LED灯始终亮(表示打开冰箱门)。

  • Q:有时候我忘了关冰箱门,冰箱里的所有东西就化了,有没有什么办法提醒一下呢?
  • A:以增加一个提醒功能,如果冰箱门开启一段时间后,就发出声音自动报警。需要加入一个“计时”的功能,如果超过一定时间,门还没关,蜂鸣器就会响起来,开始报警!


认识新程序块

“计时器开始”程序块
“计时器开始”程序块位于“美科科技>执行器”选项卡中。

Mixly-millis-where.jpg

“计时器开始”程序块说明
定义计时器“timer1”从这一刻开始计时。程序中可能用到不只一个计时器,所以为了防止混淆,每个计时器都要有不一样的名字。

Mixly-millis-explain.jpg
  • 计时程序块与延时程序块的区别
    • 计时程序块:程序一直在运行判断,计时不影响其他程序正常运行,可以同时做好几件事。如:该程序在计时的同时判断碰撞开关是不是处于松开状态,同时判断是否超时。
    • 延时程序块:系统运算会停止,程序一直在原地踏步,不能做任何事情。

“超时”程序块
“超时”程序块位于“美科科技>执行器” 选项卡中。

Mixly-timeout-where.jpg

“超时”程序块说明
如果从定时器“timer1”开始直到现在,时间超过2000毫秒,则判断条件成立,可执行下一条程序;如果未超过2000毫秒,则判断条件不成立,不能执行下一条程序。

Mixly-timeout-explain.jpg

“重复执行”程序块
“重复执行”程序块位于“美科科技>核心模块” 选项卡中。

Mixly-while-where.jpg

“重复执行”程序块说明
当条件成立时,重复执行内部程序;当条件不成立时,不执行内部程序,执行下一步程序。

Mixly-while-explain.jpg

“重复执行”和“如果”模块的区别

If-while-explain.jpg


编程思路

判断碰撞开关是否松开,如果碰撞开关是按下状态(关门),则关灯,蜂鸣器关闭;如果碰撞开关是松开状态(开门),则亮灯,超时后蜂鸣器报警。

Mixly-ctrl-timeout-light.jpg

开始编程

1、冰箱门打开,6号开关松开,LED灯点亮

Mixly-ctrl-timeout-light-code1.jpg

2、冰箱门打开超时后,蜂鸣器开始报警
定义计时器timer1,开始计时,当碰撞开关松开后,则重复执行内部程序(判断定时器“timer1”计时时间是否超过4000毫秒,如果超过的话,开启蜂鸣器报警),直到碰撞开关被按下后(关门)才结束重复。

Mixly-ctrl-timeout-light-code2.jpg

3、冰箱门关上后,LED灯熄灭,蜂鸣器关闭

Mixly-ctrl-timeout-light-code3.jpg

测试结果
程序上传成功后,松开碰撞开关,超过4秒后,看蜂鸣器是否会报警呢?

技术规范

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

相关案例

Q&A