能量护盾

来自Microduino Wikipedia
Zhangfengfeng讨论 | 贡献2017年4月5日 (三) 05:01的版本 开始编程
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

概述

做一个能量护盾,遇到攻击时,护盾可以充能。
适合套件:mCookie302


模块清单

模块

模块 数量 功能
mCookie-Core 1 核心板
电池盒 1 程序下载和供电模块
mCookie-Hub 1 传感器转接板
彩灯 3 发光
红外反射传感器 3 检测物体

其他设备

  • USB数据线*1
  • 传感器连接线*6
  • 传感器外壳
  • 积木或其它固定结构

模块搭建

搭建

  • 将模块和传感器组装起来:
    • 将红色的核心模块,电池底座与绿色的扩展模块吸在一起;
    • 将三盏全彩LED灯连接在Hub的6/7管脚;
    • 将红外反射传感器连接在Hub的A0/A1、A2/A3、A6/A7管脚。
    • 将USB连接线一端插入电池底座,另一端连接电脑;

编程

使用的程序块


编程思路

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

开始编程

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



测试结果
上传成功后,分别靠近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