Scavenger Hunt CluePhone
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
| ||||
|
关于这个项目
按照这些说明将旧电话改造成寻宝线索系统。
步骤 1 - 键盘行和列
拆开电话并取下键盘。键盘使用行和列系统来检测按键。此页面提供了有关识别键盘上的按钮并使用具有连续性的万用表将它们映射到适当的行和列的良好说明。就我而言,键盘如下所示:
图> 图>键盘上的电路(如果可见)可以很容易地识别连接到每个键的引脚。不幸的是,我的小键盘的引脚似乎没有形成完美的行和列,所以第二张图显示了我创建的矩阵,以帮助我将引脚分成行和列。圆圈数字代表键盘引脚编号,矩阵中的数字代表按键,方框数字“I/O”代表 Arduino 引脚。请务必记下引脚映射,然后将每个键盘引脚分配给一个 Arduino 引脚。我的键盘很奇怪,因为它的针脚似乎比需要的多,但没关系。
第三张图显示了我最终的简化矩阵,只使用了我使用的按钮。在这一点上它几乎看起来像行和列!在我的代码中,我使用占位符 A、B、C 和 D 来填充矩阵中的空白点。我的键盘上没有这些键。
第 2 步 - 将扩展部分焊接到键盘
为了更容易地将键盘引脚连接到面包板,将扩展焊接到所需的引脚上。为了制作这个项目,不需要使用键盘上的每个键,所以下图只显示了我选择使用的引脚。我使用的是 4 位密码,所以我只需要 5 个密钥(包括 * )。
第 3 步 - 准备音频文件
在我的项目中,线索中的声音是来自 Natural Readers 文本到语音的 Peter。下载语音文件。接下来,准备摩尔斯电码。网上有很多莫尔斯电码音频生成器,但我使用了 SCPhillips.com 上的这个。也下载这个文件。另外,下载这个按键提示音。
Audacity 是一个很棒的音频编辑工具,可以用来合并莫尔斯电码和语音文件,也可以将哔哔声缩短为单个哔哔声。
将这些文件拖放到 Audacity 中并调整线索文件,直到它符合您的需要。此外,通过突出显示不需要的部分并点击删除来缩短键盘哔哔声。
图>保存 Audacity 文件,然后将每首曲目分别导出为 MP3。如果您以前从未使用过 Audacity,则可能需要下载 LAME MP3 编码器。
为了在这个特定的 MP3 播放器板上播放音频文件,它们必须正确命名并放置在 SD 卡上的文件夹中。 每个 MP3 都必须命名 001、002 等 对应 MP3 板上的触发引脚 1-9。此外,文件必须位于名为 的文件夹中 01 在 SD 卡上。 其他 MP3 触发板可能能够更轻松地处理这个问题。
第 4 步 - 下载库并准备代码
对于这个项目,需要键盘和密码 Arduino 库。下载并安装这些库,并下载此项目的代码(如下)。随意设置密码,并用相应的密钥填写密钥矩阵。
第 5 步 - 连接一切
拆开电话内部,把新东西塞进里面!你可以在里面挤一个移动电源。
图> &> 图> 图> &nofit=510> 图>喜欢这个项目吗?在这里查看我的其他项目!
代码
- 电话键盘草图
电话键盘草图Arduino
此示例代码已修改为与电话键盘和 MP3 触发器一起使用。#include//http://www.arduino.cc/playground/uploads/Code/Password.zip#include //http://www.arduino.cc/playground/uploads/Code/Keypad.zipPassword password =Password( "7365" );const byte ROWS =4; // 四行常量字节 COLS =3; // 列// 定义Keymapchar 键[ROWS][COLS] ={ {'4','5','6'}, {'7','8','A'}, //"A"是占位符;我的键盘上没有这样的按钮 {'B','2','3'},//“B”是一个占位符;我的键盘上没有这样的按钮 {'*','C','D'} //“C”和“D”是占位符;我的键盘上不存在这样的按钮};byte rowPins[ROWS] ={ 7,5,3,8 };//将键盘行连接到这些 Arduino 引脚。byte colPins[COLS] ={ 6,4,2 };/ / 将键盘列连接到这些 Arduino 引脚。const int dial =13; //数字Arduino引脚连接到MP3触发器板。const int morse =12; //数字Arduino引脚进入MP3触发板。//创建KeypadKeypad keypad =Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );void setup(){ pinMode(dial, OUTPUT); pinMode(莫尔斯,输出);数字写入(拨号,高); //MP3板触发低电平有效,所以从高电平开始。数字写入(莫尔斯,高); //MP3板触发低电平有效,所以从高电平开始。 Serial.begin(9600); keypad.addEventListener(keypadEvent); //为此键盘添加一个事件监听器}void loop(){ keypad.getKey();}//处理一些特殊事件void keypadEvent(KeypadEvent eKey){ switch (keypad.getState()){ case PRESSED:Serial.打印(“按下:”); //用于监控Serial.println(eKey); //用于监控digitalWrite(dial, LOW); //播放拨号提示音音频文件;每次按键延迟都会发生这种情况(50);数字写入(拨号,高); switch (eKey){ case '*':checkPassword();休息; // * 是回车键默认值:password.append(eKey); } }}void checkPassword(){ if (password.evaluate()){ Serial.println("Success"); //监控密码.reset(); //清除关键条目 digitalWrite(morse, LOW); //播放线索音频文件 delay(50);数字写入(莫尔斯,高); }else{ Serial.println("错误"); //监控密码.reset(); //清除下一次密码尝试的密钥条目}}
示意图
制造工艺