智能存钱罐

来自Microduino Wikipedia
Yanglibin@microduino.cc讨论 | 贡献2016年10月8日 (六) 06:05的版本 (创建页面,内容为“{| style="width: 1000px;" |- | ==概述== 600px|center 做一个智能存钱罐,可以记录存钱数并在OLED屏幕上显示...”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

概述

Anywhere piggy bank.jpg

做一个智能存钱罐,可以记录存钱数并在OLED屏幕上显示,每次有硬币投入存钱罐时会发出“叮”声。
适合套件:mCookie302


模块清单

模块

模块 数量 功能
mCookie-Core 1 核心板
电池盒 1 程序下载和供电模块
mCookie-Hub 1 传感器转接板
mCookie-OLED 1 显示
蜂鸣器 1 发声
红外反射传感器 1 检测物体

其他设备

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

模块搭建

搭建

Anywhere piggy bank-step.jpg
  • 将模块和传感器组装起来:
    • 将红色的核心模块,电池底座与绿色的扩展模块吸在一起;
    • 将红外反射传感器连接在Hub的A0/A1管脚;
    • 将蜂鸣器连接在Hub的6/7管脚。。
    • 将USB连接线一端插入电池底座,另一端连接电脑;

编程

使用的程序块


编程思路

当有物体靠近能量护盾时会发出能量光,且距离越近,光越强,距离越远,光越弱。
观察下面示意图,可看到亮度的范围是0-255,距离值的范围是0-1023;距离范围大约是亮度范围的4倍。亮度与距离变化关系:距离最远(1023),亮度最低(0);距离最近(0),亮度最高(255)。
因此我们可以找到彩灯的光亮度与对应的红外反射传感器的距离值成反比,得到公式:红光亮度=255-(距离÷4)。在程序中,只需要将设置光亮度的区域放如下程序块即可。

Mixly-ctrl-piggy bank.jpg

开始编程

根据距离显示能量大小
每个彩灯的红光亮度与对应的红外反射传感器的距离值相关

Mixly-ctrl-piggy bank-code.jpg



测试结果
上传成功后,分别靠近3个红外反射传感器,看看对应的彩灯颜色有没有变化。



Q:游戏里面,能量护盾有生命值,打到一定程度就game over了,能改成有生命值的能力护盾吗?
A:需要设置一个变量,记录能量值,每击中一次能量值减1,并在串口监视器中显示。

声明一个名叫power的变量,用来记录护盾能量值,初始值是100,将红外反射传感器检测到的距离值转换成灯的亮度。

当距离值小于100时,每隔100毫秒,power值减1,当红外反射传感器A0的距离值小于100时(攻击来临),能量值减1,延时100毫秒。

当距离值小于100时,每隔100毫秒,power值减1,当红外反射传感器A2的距离值小于100时(攻击来临),能量值减1,延时100毫秒。

当距离值小于100时,每隔100毫秒,power值减1,当红外反射传感器A6的距离值小于100时(攻击来临),能量值减1,延时100毫秒。 打印能量值,在串口监视器中实时显示“能量值%”。

无能量时,彩灯全部熄灭,如果能量值低于1(没能量了),则重复执行:在电脑屏幕上显示“DEAD”,并熄灭所有LED灯。

技术规范


相关案例


Q&A