体感游戏手柄
Language | English |
---|
目的通过体感模拟键盘W、A、S、D按键,可以控制游戏。 原理利用三轴加速度传感器MPU6050检测手柄的运动状态变化,然后利用Microduino-CoreUSB的模拟键盘功能模拟W、A、S、D按键。
设备
搭建硬件
软件调试代码说明
MPU6050 accelgyro; //三轴加速度传感器
int ax,ay,az; //三轴加速度变量
float Ax,Ay,Az;
void setup(){
Serial.begin(9600);
Keyboard.begin(); //模拟键盘初始化
Serial.println("Initializing I2C devices...");
accelgyro.initialize(); //三轴加速度传感器初始化
// verify connection
Serial.println("Testing device connections...");
Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
}
void loop() {
accelgyro.getAcceleration(&ax, &ay, &az);
Ax = ax/16384.00; //计算X轴加速度
Ay = ay/16384.00; //计算Y轴加速度
Az = az/16384.00; //计算Z轴加速度
if(Ay >= 0.6 ) //手柄向左摆
{
Keyboard.press('A'); //按键‘A’
}
else if(Ay <= -0.6) //手柄向右摆
{
Keyboard.press('D'); //按键‘D’
}
else if(Ax >= 0.6) //手柄向前摆
{
Keyboard.press('S'); //按键‘S’
}
else if(Ax <= -0.6) //手柄向后摆
{
Keyboard.press('W'); //按键‘W’
}
else
{
Keyboard.releaseAll(); //释放按键
}
delay(200);
}
结果在电脑上打开记事本,将CoreUSB连接到电脑上,想手柄向左摆,记事本上会持续打印出字母A,手柄再摆回原位置,记事本停止打印,其他按键同理。 视频 |