完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 开源杂志 于 2013-10-7 21:27 编辑
by 程晨 @开源杂志 [/url]上个月,又有一个鼠标在我手底下阵亡了,作为一个 DIY 达人,我从盒子里 拿出好几个不太好用的鼠标准备自己攒一个,突然发现刚到手的一个 Arduino 控制 板——DFRobot 公司生产的 Dreamer Nano(一款基于 Arduino Leonardo 的小型控制板), 早就看资料知道 Arduino Leonardo 能当鼠标或键盘用,一直也没机会试试。正好就用 Arduino 自己制作一个鼠标吧。 [url=http://www.open1book.com/wp-content/uploads/2013/09/213.jpg]
材 料 准 备 好 了, 接 下 来 搭 建 硬 件, Dreamer Nano 的 核 心 是 Leonardo,I/ O 接口采用 Nano 的形式,方便与面包 板 配 合 使 用,USB 接 口 采 用 带 直 插 定 位 脚 的 Mirco USB 插 座。 如 图 2 所 示。 第一步,将 Dreamer Nano 插在面 包板上,如图 3 所示。这里控制板在面 包板上的位置比较偏左,这是因为之后 我们会在控制板的右侧添加一个按键。 [url=http://www.open1book.com/wp-content/uploads/2013/09/222.jpg] 第二步,添加 5 个按键,摆成上下左右的样子,分别控制鼠标的上下左右移动, 另外在控制板的右侧添加一个按键用作鼠标点击的功能。 第三步,使用软件 Fritzing 绘制一个连接效果图, 如图 5 所示。看起来按键的连接很杂乱,其实这是 本人为了迁就 U 型面包线的长度,反正改程序是一 件比较容易的事。大家也可以将这些按键连接到其 他引脚。 [url=http://www.open1book.com/wp-content/uploads/2013/09/5.jpg] 第四步,按照效果图用 U 型面包线将实物 连接起来。最终效果如图 6 所示。原理图可参 照图 7。 [url=http://www.open1book.com/wp-content/uploads/2013/09/7.jpg] 这样我们的硬件 就搭建完了,接下来 看看程序部分。 第 一 步, 打 开 Arduino 开发环境(开 发环境的获取、硬件 的添加这里就不介绍了,相关的内容很多),首先要将 Tools 菜单下的 Board 选项改 为 Arduino Leonardo,如图 8 所示。 第 二 步, 打 开 开发环境中鼠标 的 例 子, 在File— >Examples 中专门有一个 USB(Leonardo) 的 选 项, 在这里面找到 Mouse— >ButtonMouseControl。这 是一个用按键当作鼠标的 例子。 第三步,修改程序中 的引脚变量。在原代码中, 使用的是引脚 2、3、4、5、 6 作为 5 个按键的输入。 [url=http://www.open1book.com/wp-content/uploads/2013/09/9.jpg] 这里因为本人在硬件搭建上 偷懒的原因,所以使用的引脚有 所变化,根据原理图将这段代码 修改如下,其中引脚 4 对应按键 “上”,引脚 6 对应按键“下”, 引脚 7 对应按键“左”,引脚 9 对应按键“右”,引脚 3 对应鼠 标左键。
第四步,修改 setup() 函数。当 Arduino 的控制板引脚作为输入的时候,通常要 小心电压、电流的极限值。过大的电压、电流会造成控制板的损坏。为避免这种情况, 一般会在引脚的电路上加一个上拉电阻,像图 7 中就是加在按键和 Arduino 引脚的连 接线上,电阻的大小一般为 10kΩ。 但其实 Arduino 控制板内引脚是具有内部上拉功能的,内部上拉相当于是在芯片 内集成了一个电阻接 +5V 电源,不过这需要在程序中进行设定。假设要设定 x 引脚 的模式为输入,且使用内部上拉,则代码为
由原理图能够看出,我们使用的按键均没有添加上拉电路,所以需要使用的 这 5 个引脚使能内部上拉功能。将这段代码添加到 Mouse.begin() 函数之前,完成后 setup() 函数内容如下。
第五步,完成最后的调试。将修改完之后的代码下载到 Arduino 中,使用一下, 我们发现鼠标左键总是处于按下的状态,通过阅读代码发现这是因为程序中将引脚 为高电平认定为鼠标按下。
而我们的硬件上鼠标按下时引脚电平为高,未按下时引脚电平为低。大家可以直 接使用 Ctrl+F 搜索“clickState == HIGH”这段字符,将其中的 HIGH 改为 LOW。 再下载一遍程序,ok,再连上一段 USB 线,我们的鼠标就完成了,和原来的鼠 标合个影吧。 [url=http://www.open1book.com/wp-content/uploads/2013/09/11.jpg] 细心的读者可能会发现我们这个鼠标只能完成左键的功能,那么右键应该如何 实现呢?大家注意在示例代码中关于 MOUSE_LEFT 的部分(可以直接使用 Ctrl+F 搜 索),比如 Mouse.press(MOUSE_LEFT) 实现的功能就是发送一个鼠标左键按下的信息。 我们将 MOUSE_LEFT 全部换成 MOUSE_RIGHT 试试看就会发现原来鼠标左键变成 了鼠标右键,所以鼠标右键的实现只需要在代码中使用 MOUSE_RIGHT 这个定义就 可以完成了,而使用 MOUSE_MIDDLE 就能实现鼠标中键的功能。大家可以试着在 硬件上再添加一个按钮实现鼠标右键的功能。 大家感兴趣的话可以自己试试,找一个摇杆作一个摇杆式的鼠标,或者可以用 Arduino 做一个游戏专用手柄等等。图 11 就是本人利用安卓平板、Arduino、按键以 及面包板制作的一个老式任天堂游戏机,现在正在玩的游戏是经典的“魂斗罗”。 |
|
相关推荐
|
|
不错似的喔~有点想学arduino了~
|
|
|
|
|
|
看着很好。代码没有整得太明白。
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1030 浏览 0 评论
【KV260视觉入门套件试用体验】四、KV260 视觉入门套件和固件更新
1603 浏览 0 评论
【KV260视觉入门套件试用体验】Vitis AI Library体验之OCR识别
1203 浏览 0 评论
【KV260视觉入门套件试用体验】Vitis AI 通过迁移学习训练自定义模型
1701 浏览 0 评论
【KV260视觉入门套件试用体验】KV260系列之Petalinux镜像+Resnet 50探索
1367 浏览 0 评论
【AMD KV260视觉入门开发套件试用】4、简单几步体验ubuntu 20.04.3 LTS运行人员检测应用
1655浏览 1评论
2207浏览 1评论
【KV260视觉入门套件试用体验】老刘记事儿KV260初体验之Micro-SD选型提速研究(三)
892浏览 1评论
【KV260视觉入门套件试用体验】KV260部署yolov3实现车辆和行人检测
2559浏览 1评论
【KV260视觉入门套件试用体验】基于KV260的人脸识别的实现与展示
894浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 07:44 , Processed in 0.718224 second(s), Total 88, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号