当前位置:网站首页>Arduino 飞鼠 空中鼠标 陀螺仪体感鼠标
Arduino 飞鼠 空中鼠标 陀螺仪体感鼠标
2022-08-09 14:53:00 【iZaix】
空中飞鼠
还在担忧你的操作不行吗?还在厌倦枯燥的操作么?想不想像实战一样,手中握着枪与人对战?
下面带你实现你的梦想。
硬件准备
说到增强游戏体感,拿着实体枪去战斗,第一想到的就是任天堂的zapper了,但是他的价格与游戏设定,Emm…
想要实现体感控制,作为一名爱好者,当然是DIY,首先我们需要陀螺仪来感应操控的动作 ,然后就需要一个驱动器来帮助我们处理信号并传给游戏主机,在这里我选择的开发板是Arduino Pro Micro和陀螺仪ADXL345,当然从某宝上买回来得自己焊下引脚。
线路图
当硬件准备好了之后就是怎么接线了
程序控制
下面就是程序控制了,先预装好Arduino IDE,首先要引用两个类
#include <mouseWheel.h>
#include <mousePress.h>
读取ADXL345的XY值
y345 = -WireRead2( ADXAddressR, DATAX0,DATAX1);
x345 = WireRead2( ADXAddressR, DATAY0,DATAY1);
if(x345<0)
x345*=1.5;
if(y345>0)
y345*=1.5;
speedoX = constrain(pow(abs(x345),2)/100,0,12700);
speedoY = constrain(pow(abs(y345),2)/100,0,12700);
speedo();
判断上下左右
if( x345 > value345X ){
x = -speedoxVal;
}else if( x345 < -value345X ){
x = speedoxVal;
}else
x = 0;
if( y345 > value345Y ){
y = -speedoyPos;
}else if( y345 < -value345Y ){
y = speedoyPos;
}else
y = 0;
左键右键连击
myMouseLeft.press_mouse();
myMouseRight.press_mouse();
wheel = mywheel.read_wheel();
if( millis() - clickTime > clickSpeedo ){
if(!digitalRead(CLICK))
Mouse.click();
clickTime = millis();
}
PWM控制鼠标速度
if( (micros() - ctrlMouseTimeX >= PWMSTOPX*80)//“停”
&& valuePWMX == true){
ctrlMouseTimeX = micros();
valuePWMX = !valuePWMX;
xVal = x;
}else if ( (micros() - ctrlMouseTimeX >= PWMGOX *80)//“走”
&& valuePWMX == false ){
ctrlMouseTimeX = micros();
valuePWMX = !valuePWMX;
xVal = 0;
}
if( (micros() - ctrlMouseTimeY >= PWMSTOPY*80) //“停”
&& valuePWMY == true){
ctrlMouseTimeY = micros();
valuePWMY = !valuePWMY;
yPos = y;
}else if ( (micros() - ctrlMouseTimeY >= PWMGOY *80)//“走”
&& valuePWMY == false ){
ctrlMouseTimeY = micros();
valuePWMY = !valuePWMY;
yPos = 0;
}
鼠标移动
Mouse.move( xVal ,yPos ,wheel );
想要源码的同学点 这里下源码(赚点积分)。。。。
边栏推荐
猜你喜欢
随机推荐
Regular Expressions for Shell Programming
贝塞尔函数
如何设计一个高并发系统?
怎么用VS+Qt创建新项目
OpenSSF的开源软件风险评估工具:Scorecards
pytorch从零搭建神经网络实现多分类(训练自己的数据集)
经典面试题 之 JVM调优
Mathematica 数据分析(简明)
如何将List<Map>进行分组数值计算合并排序
英语议论文读写02 Engineering
回收站一直显示未清空的图标问题
What do professional quantitative traders think about quantitative trading?
如何保证电脑硬盘格式化后数据不能被恢复?
Mind map FreeMind installation problems and simple use
【小白必看】初始C语言(下)
职业量化交易员对量化交易有什么看法?
MySQL principle and optimization: Limit the query optimization
方法学习笔记
My MySQL database was attacked and deleted for ransom, forcing me to use all my might to recover data
navicat for Oraclel链接oracle 报错oracle library is not loaded的解决办法








