在线时间684 小时
UID3104112
注册时间2015-3-5
NXP金币20
TA的每日心情 | 难过 2019-9-19 08:55 |
---|
签到天数: 269 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 2785
- 最后登录
- 2019-11-29
|
mbed玩玩还好,调试起来真是很费劲,乱七八糟莫名的错误,东拼西凑,总算把小鼠标跑起来了下面开始步骤吧
1、mbed里添加库,分别是MMA8451Q_tb,tsi_sensor,USBDevice,库里大多都有例子,可供参考
2、程序如下:
#include "MMA8451Q_tb.h"
#include "USBMouse.h"
#include "tsi_sensor.h"
#define MMA8451_I2C_ADDRESS (0x1d<<1)
#define REG_OUT_X_MSB 0x01
#define REG_OUT_Y_MSB 0x03
#define REG_OUT_Z_MSB 0x05
MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
USBMouse mouse;
float x, y, z;
void main() {
TSIElectrode elec0(9);
TSIElectrode elec1(10);
TSIAnalogSlider tsi(9, 10, 40);
DigitalOut led1(LED_BLUE);
DigitalOut led2(LED_RED);
led1 = !led1;
led2 = !led2;
while (true) {
x = acc.getAccX();
y = acc.getAccY();
z = acc.getAccZ();
/*x = acc.getAccAxis(REG_OUT_X_MSB);
y = acc.getAccAxis(REG_OUT_Y_MSB);
z = acc.getAccAxis(REG_OUT_Z_MSB);*/
wait(0.05);
mouse.move(x*20,y*20);
//printf("%f %f %f \r\n", x*127, y*127, z*127);
if(tsi.readDistance() == 0)
{
}
else if(tsi.readDistance() > 25)
{
mouse.press(MOUSE_RIGHT);
mouse.release(MOUSE_RIGHT);
}
else
{
mouse.press(MOUSE_LEFT);
mouse.release(MOUSE_LEFT);
}
}
}
3、下面说说该程序的不(la)足(ji)之处
(1)、没使用线程,mbed库rtos可以进行线程控制,但是我用它的例子都会莫名报错,还请会用的大神给指导指导
(2)、使用MMA8451Q控制鼠标左移右移,明显觉得难以控制,还要优化
(3)、左击右击的程序控制也是烂(shi)
(4)、滑动触摸块还没搞清楚
后续会再搞搞滑动触摸块,尝试移植到IAR上实现一下
视频链接:https://v.youku.com/v_show/id_XM ... eta&from=y1.7-2
|
|