找回密码
 立即注册

QQ登录

用Arduino自制鼠标

来源: 创意制作 26wd 2015-2-8 16:32 显示全部楼层 |阅读模式
本帖最后由 26wd 于 2015-2-8 16:30 编辑

开始准备制作鼠标要用的元件,清单如下:
1、Arduino Nano一个
2、面包板一块
3、面包板U型线若干
4、小按键若干
材料准好了, 接下来搭建硬件Arduino Nano的核心是Leonardo,I/O接口采用Nano的形式,方便与面包板配合使用,USB接口采用带直插定位脚的Mirco USB插 座。
第一步,将Arduino Nano插在面包板上。这里控制板在面包板上的位置比较偏左,这是因为之后我们会在控制板的右侧添加一个按键。
第二步,添加5个按键,摆成上下左右的样子,分别控制鼠标的上下左右移动, 另外在控制板的右侧添加一个按键用作鼠标点击的功能。
第三步,用面包板U型线将Arduino Nano和小按键连接,如图所示。

5.jpg

这样我们的硬件就搭建完了,接下来 看看程序部分。
第一步, 打开Arduino开发环境(开发环境的获取、硬件的添加这里就不介绍了,相关的内容很多),首先要将Tools菜单下的Board选项改Arduino Leonardo。
1.jpg
第二步, 打开开发环境中鼠标的例子, 在File—>Examples中专门有一个USB(Leonardo)的选项, 在这里面找到Mouse—>ButtonMouseControl。这是一个用按键当作鼠标的例子。
3.jpg
第三步,修改程序中的引脚变量。在原代码中, 使用的是引脚 2、3、4、5、6 作为5个按键的输入。
这里因为本人在硬件搭建上 偷懒的原因,所以使用的引脚有所变化,根据原理图将这段代码修改如下,其中引脚4对应按键 “上”,引脚6对应按键“下”, 引脚7对应按键“左”,引脚9对应按键“右”,引脚3对应鼠标左键。

  • // set pin numbers for the five buttons:
  • const int upButton = 2;
  • const int downButton = 3;
  • const int leftButton = 4;
  • const int rightButton = 5;
  • const int upButton = 4;
  • const int downButton = 6;
  • const int leftButton = 7;
  • const int rightButton = 9;
第四步,修改setup()函数。当Arduino的控制板引脚作为输入的时候,通常要小心电压、电流的极限值。过大的电压、电流会造成控制板的损坏。为避免这种情况, 一般会在引脚的电路上加一个上拉电阻,电阻的大小一般为10kΩ。
但其实Arduino控制板内引脚是具有内部上拉功能的,内部上拉相当于是在芯片内集成了一个电阻接+5V电源,不过这需要在程序中进行设定。假设要设定 x 引脚的模式为输入,且使用内部上拉,则代码为
  • pinMode( x ,INPUT);
  • digitalWrite( upButton , HIGH);
由于我们使用的按键均没有添加上拉电路,所以需要使用的这5个引脚使能内部上拉功能。将这段代码添加到Mouse.begin() 函数之前,完成后 setup() 函数内容如下。


    void setup() {
  • //initialize the buttons’ inputs:
  • pinMode(upButton, INPUT);
  • pinMode(downButton, INPUT);
  • pinMode(leftButton, INPUT);
  • pinMode(rightButton, INPUT);
  • pinMode(mouseButton, INPUT);
  • digitalWrite(upButton, HIGH);
  • digitalWrite(downButton, HIGH);
  • }
第五步,完成最后的调试。将修改完之后的代码下载到Arduino中使用一下, 我们发现鼠标左键总是处于按下的状态,通过阅读代码发现这是因为程序中将引脚为高电平认定为鼠标按下。而我们的硬件上鼠标按下时引脚电平为高,未按下时引脚电平为低。大家可以直接使用Ctrl+F搜索“clickState == HIGH”这段字符,将其中的HIGH改为LOW。再下载一遍程序,ok,再连上一段USB线,我们的鼠标就完成了。
细心的读者可能会发现我们这个鼠标只能完成左键的功能,那么右键该如何实现呢?大家注意在示例代码中关于MOUSE_LEFT的部分,比如Mouse.press(MOUSE_LEFT)实现的功能就是发送一个鼠标左键按下的信息。我们将MOUSE_LEFE全部换成MOUSE_RIGHT试试看就会发现原来的鼠标左键变成了鼠标右键,所以鼠标右键的实现只需要在代码中使用MOUSE_RIGHT这个定义就可以完成了,而使用MOUSE_MIDDLE就能实现鼠标中键的功能。大家可以试着在硬件上再添加一个按钮实现鼠标右键的功能。
















回复

使用道具 举报

您可能感兴趣的文章

您需要登录后才可以回帖 登录 | 立即注册

关注0

粉丝0

帖子10

发布主题
社区热门 MORE+
    社区热帖 MORE+