|
在本篇文章中,我们将主要介绍使用Arduino Leonardo开发板和MPU6050加速度计/陀螺仪制作类似于Nintendo Wii控制器的空中鼠标。空中鼠标主要用于游戏、互动活动、娱乐等。
几年前,任天堂(Nintendo)创建了这个新的交互模型,允许用户在Wii控制器的帮助下通过其游戏控制台以3D形式与其内容进行交互。 Wii控制器使用加速度计识别您的手势,然后将其映射到游戏的控件。在本文中,我们将制作一个有线Wii控制器。
该项目取决于两个关键组件:MPU6050和Arduino Leonardo。 MPU6050帮助我们沿x轴和y轴收集“空中鼠标”的3D姿态的数据。然后,基于传感器的值,我们可以控制鼠标光标。要单击鼠标,您需要停止移动鼠标并将其锁定在一个点上持续两秒。
什么是MPU6050? MPU6050是具有六个自由度的IMU传感器,这表示输出六个值。在这六个值中,三个来自加速度计,其余三个来自陀螺仪。 IMU传感器基于微机电系统(MEMS)技术。
Arduino Leonardo开发板 Arduino Leonardo与Arduino Uno相似,并且形状相同。 Arduino Uno使用ATmega328芯片,而Leonardo使用ATmega32u4的芯片。它具有20个数字输入/输出引脚(可将7个引脚用作PWM输出,12个引脚用作模拟输入)、16MHz晶体振荡器、微型USB连接器、电源插孔、ICSP端口和复位按钮。
所需的硬件 ● Arduino Leonardo开发板 ● MPU6050 ● 面包板 ● 公头对公头跳线
连接Arduino Leonardo和MPU6050 在下图所示的Fritzing图中展示了硬件的连接。
注意:由于mouse.h库仅适用于ATmega32U4芯片,因此仅基于ATmega32u4的芯片组可以支持此项目,例如Arduino Leonardo、Arduino Pro Mini等。
上载空中鼠标代码 根据上面的Fritzing图接线后,将Arduino Leonardo连接到计算机,然后将“caliberate_air_mouse”程序上传到Arduino。
要上传源代码,请遵循以下步骤。 1. 转到Tools —> Board,然后选择Arduino Leonardo。
2. 选择您的COM端口。转到Tools —> Port。
3. 复制并粘贴本文末尾提供的名为“calibrate_air_mouse”的源代码。接下来,转到Sketch —> Upload,或使用快捷方式“ CTRL + U”。
4. 上传代码后,鼠标光标将映射到传感器。尝试摇动MPU传感器模块。
如果可行,请继续上传第二段代码“air_mouse_with_click”,该代码也可在本文末尾找到。如果MPU6050静止不动,光标也会移动,您需要在源代码中更改一些值。
打开串口监视器,并确保在静止状态下将x和y值设置为零。如果不是,请根据您的校准在源代码更改vx或vy值。
校准完成后,按照与前面相同的步骤上传文章末尾的代码“ air_mouse_with_click”。此代码还添加了单击功能。
若要单击,请尝试将光标停在计算机屏幕上持续两秒钟。该代码检查光标是否在屏幕的10x10像素区域中停留了x秒的延迟。
以下是本文使用的代码:
air_mouse_with_click.rar
(714 Bytes, 下载次数: 86)
calibrate_air_mouse.rar
(484 Bytes, 下载次数: 89)
|