“智能存钱罐”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
(创建页面,内容为“{| style="width: 1000px;" |- | ==概述== 600px|center 做一个智能存钱罐,可以记录存钱数并在OLED屏幕上显示...”)
 
第58行: 第58行:
  
 
===编程思路===
 
===编程思路===
当有物体靠近能量护盾时会发出能量光,且距离越近,光越强,距离越远,光越弱。
+
判断红外反射距离是否小于180,若小于180则表示有币投入(根据硬币材质不同,判断值可适当调节),蜂鸣器发出叮的一声,硬币数加1,再在OLED上显示出来,最后等待红外反射传感器的距。
<br>
 
观察下面示意图,可看到亮度的范围是0-255,距离值的范围是0-1023;距离范围大约是亮度范围的4倍。亮度与距离变化关系:距离最远(1023),亮度最低(0);距离最近(0),亮度最高(255)。
 
<br>
 
因此我们可以找到彩灯的光亮度与对应的红外反射传感器的距离值成反比,得到公式:红光亮度=255-(距离÷4)。在程序中,只需要将设置光亮度的区域放如下程序块即可。
 
 
 
 
[[File:mixly-ctrl-piggy bank.jpg|600px|center]]
 
[[File:mixly-ctrl-piggy bank.jpg|600px|center]]
  
 
===开始编程===
 
===开始编程===
'''根据距离显示能量大小'''
+
'''判断有硬币'''
 
<br>
 
<br>
每个彩灯的红光亮度与对应的红外反射传感器的距离值相关
+
声明一个名叫coin的变量,用来存储硬币数量。如果红外反射传感器测得距离值小于180,则证明传感器面前有硬币。
 
[[File:mixly-ctrl-piggy bank-code.jpg|600px|center]]
 
[[File:mixly-ctrl-piggy bank-code.jpg|600px|center]]
 +
<br>
 +
'''蜂鸣器响、钱计数、屏幕显示钱数'''
 +
<br>
 +
蜂鸣器发出“叮”的一声。变量coin加1。注意根据安装方向调整屏幕的显示方向。将coin值(硬币数)显示在屏幕上。等待红外反射传感器的距离值大于220(硬币落入存钱罐)。
 +
[[File:mixly-ctrl-piggy bank-code1.jpg|600px|center]]
 
<br>
 
<br>
 
<br>
 
<br>
 
'''测试结果'''
 
'''测试结果'''
 
<br>
 
<br>
上传成功后,分别靠近3个红外反射传感器,看看对应的彩灯颜色有没有变化。
+
上传成功后,用硬币靠近红外反射传感器,可以听到蜂鸣器“叮”一声,显示屏上计数一次,显示目前钱数。
 
<br>
 
<br>
[[File:anywhere_game energy.jpg|600px|center]]
+
[[File:anywhere_piggy bank.jpg|600px|center]]
 
<br>
 
<br>
 
<br>
 
<br>
'''Q:游戏里面,能量护盾有生命值,打到一定程度就game over了,能改成有生命值的能力护盾吗?'''
+
'''Q:如果我把存钱罐中的硬币都取出来,如何清除之前的存钱记录呢?'''
 
<br>
 
<br>
'''A:需要设置一个变量,记录能量值,每击中一次能量值减1,并在串口监视器中显示。'''
+
'''A:增加一个触摸传感器,用“如果-执行”程序块判断触摸传感器是否被按下,若被按下则将变量“coin”的值清零。'''
 
<br>
 
<br>
 
<br>
 
<br>
声明一个名叫power的变量,用来记录护盾能量值,初始值是100,将红外反射传感器检测到的距离值转换成灯的亮度。
+
如果“清零”键按下则执行清零程序。蜂鸣器发出“叮”的一声。将变量coin的值变为0。重新显示硬币数量。
[[File:mixly-ctrl-game energy-code1.jpg|600px|center]]
+
[[File:mixly-ctrl-piggy bank-code2.jpg|600px|center]]
当距离值小于100时,每隔100毫秒,power值减1,当红外反射传感器A0的距离值小于100时(攻击来临),能量值减1,延时100毫秒。
 
[[File:mixly-ctrl-game energy-code2.jpg|600px|center]]
 
当距离值小于100时,每隔100毫秒,power值减1,当红外反射传感器A2的距离值小于100时(攻击来临),能量值减1,延时100毫秒。
 
[[File:mixly-ctrl-game energy-code3.jpg|600px|center]]
 
当距离值小于100时,每隔100毫秒,power值减1,当红外反射传感器A6的距离值小于100时(攻击来临),能量值减1,延时100毫秒。
 
打印能量值,在串口监视器中实时显示“能量值%”。
 
[[File:mixly-ctrl-game energy-code4.jpg|600px|center]]
 
无能量时,彩灯全部熄灭,如果能量值低于1(没能量了),则重复执行:在电脑屏幕上显示“DEAD”,并熄灭所有LED灯。
 
[[File:mixly-ctrl-game energy-code5.jpg|600px|center]]
 
[[File:mixly-ctrl-game energy-code6.jpg|600px|center]]
 
  
 
==技术规范==
 
==技术规范==
第104行: 第94行:
 
==相关案例==
 
==相关案例==
 
*'''[[点球大战]]'''
 
*'''[[点球大战]]'''
 +
*'''[[能量护盾]]'''
  
  

2016年10月8日 (六) 06:15的版本

概述

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连接线一端插入电池底座,另一端连接电脑;

编程

使用的程序块


编程思路

判断红外反射距离是否小于180,若小于180则表示有币投入(根据硬币材质不同,判断值可适当调节),蜂鸣器发出叮的一声,硬币数加1,再在OLED上显示出来,最后等待红外反射传感器的距。

Mixly-ctrl-piggy bank.jpg

开始编程

判断有硬币
声明一个名叫coin的变量,用来存储硬币数量。如果红外反射传感器测得距离值小于180,则证明传感器面前有硬币。

Mixly-ctrl-piggy bank-code.jpg


蜂鸣器响、钱计数、屏幕显示钱数
蜂鸣器发出“叮”的一声。变量coin加1。注意根据安装方向调整屏幕的显示方向。将coin值(硬币数)显示在屏幕上。等待红外反射传感器的距离值大于220(硬币落入存钱罐)。



测试结果
上传成功后,用硬币靠近红外反射传感器,可以听到蜂鸣器“叮”一声,显示屏上计数一次,显示目前钱数。

Anywhere piggy bank.jpg



Q:如果我把存钱罐中的硬币都取出来,如何清除之前的存钱记录呢?
A:增加一个触摸传感器,用“如果-执行”程序块判断触摸传感器是否被按下,若被按下则将变量“coin”的值清零。

如果“清零”键按下则执行清零程序。蜂鸣器发出“叮”的一声。将变量coin的值变为0。重新显示硬币数量。

Mixly-ctrl-piggy bank-code2.jpg

技术规范


相关案例


Q&A